SQL Server 2000 在大多數面向與 7.0 相容,但升級過程中仍存在需注意的向後相容性問題。本文彙整關鍵差異,協助規劃平滑升級。
SQL Server 7.0 或更舊版用戶端連接元件,連線至 SQL Server 2000 具名執行個體前,必須使用用戶端網路工具設定別名 (Alias)。例如:別名指向 \\computername\pipe\MSSQL$instancename\sql\query。TCP/IP、NWLink IPX/SPX 同樣需在用戶端定義別名並指定連接埠。
SQL Server 7.0 無法與 SQL Server 2000 具名執行個體互通進行 MSX/TSX 作業。若需混合環境,必須使用 SQL Server 2000 預設執行個體。
若從 6.5 用戶端升級至 2000 用戶端,且應用程式使用預設 Net-Library,必須在用戶端網路工具將「命名管道」或「多協定」設為預設 Net-Library,才能進行 Windows 驗證連線。
資料庫相容等級設為 80 時,對遠端資料表的 INSERT 不支援 SET ROWCOUNT,將被忽略。SQL Server 7.0 則支援。
SQL Server 2000 不再支援下列選項:default sortorder id, resource timeout, extended memory size, spin counter, language in cache, time slice, language neutral full-text, unicode comparison style, max async IO, unicode locale id。
SQL Server 2000 引入三種復原模型:簡單、完整、大量記錄,取代 7.0 的 trunc. log on chkpt 與 select into/bulkcopy 組合。對應對照表:
| trunc. log on chkpt | select into/bulkcopy | 復原模型 |
|---|---|---|
| FALSE | FALSE | FULL |
| FALSE | TRUE | BULK-LOGGED |
| TRUE | TRUE | SIMPLE |
| TRUE | FALSE | SIMPLE |
為向後相容仍支援舊選項,但未來版本可能移除。新版請使用 ALTER DATABASE ... SET RECOVERY。
xp_trace_addnewqueue, xp_trace_generate_event 等已移除,改由新系統預存程序與使用者定義函數取代。
SQL Server 7.0 預設 OFF,2000 預設 ON (與 ODBC/OLE DB 一致)。索引檢視表、計算欄位索引等新功能要求此選項為 ON。注意:ON 時雙引號視為識別碼,字串必須用單引號。
讀取舊版 DB-Library bcp 建立的字元檔案需使用 -V 參數。
若資料庫曾用 SQL Server 7.0 或更早工具 (查詢設計工具、檢視表設計工具等) 建立圖表,Enterprise Manager 將無法開啟,報錯 Could not find stored procedure 'dbo.dt_getobjwithprop_u'。修正腳本:
ALTER TABLE dbo.dtproperties ADD uvalue NVARCHAR(255) NULL;
GO
IF EXISTS (SELECT * FROM dbo.dtproperties)
EXEC('UPDATE dbo.dtproperties SET uvalue = CONVERT(NVARCHAR(255), value)');
GO
SQL Server 7.0 連接字串未指定 UID/PWD 即預設嘗試信任連接;SQL Server 2000 必須明確指定 Trusted_Connection=yes。
升級前務必詳閱完整相容性文件,重點測試用戶端連線、MSX/TSX、DTS 套件、跨資料庫查詢與舊版工具建立的資料庫圖表。建議先在測試環境完整驗證,再排程生產環境升級。