VB6 開發者詢問:SQL Server 似乎禁止透過程式修改資料表結構,該如何處理?
觀點: 無法透過 VB 程式呼叫函數修改,必須在 Enterprise Manager 等工具中手動操作。
缺點: 無法自動化部署,不適合應用程式升級腳本。
做法: 透過 Connection.Execute 執行 DDL 陳述式:
cn.Execute "ALTER TABLE MyTable ADD NewCol INT NULL"
cn.Execute "ALTER TABLE MyTable DROP COLUMN OldCol"
cn.Execute "ALTER VIEW MyView AS SELECT ..."
優點: 可在應用程式升級腳本中自動執行,支援欄位增減、型別變更、索引維護等。
注意: 某些結構變更(如修改欄位型別、刪除有相依性的欄位)可能受限制,需測試驗證。
流程:
DROP TABLE 原資料表。CREATE TABLE 新資料表(可調整結構)。適用場景: 大幅度結構調整(如主鍵變更、分割資料表)、舊版 SQL Server 不支援 ALTER COLUMN 時。
缺點: 鎖定時間長、需處理外鍵/觸發器/權限重建、交易記錄暴增。
| 場景 | 建議方案 |
|---|---|
| 單純新增/刪除欄位、建立索引 | 方案 B (ALTER TABLE) |
| 修改欄位資料型別、調整長度 | 方案 B (ALTER TABLE ALTER COLUMN) |
| 複雜結構重組、主鍵變更、分割表 | 方案 C (重建表) |
| 生產環境自動化部署腳本 | 方案 B 為主,輔以方案 C 處理特例 |