SQL Server 2012/2014 建立連結伺服器指向 SQL Server 2000 時,預設 SQLOLEDB 提供者在瀏覽/測試時常報錯:「未指定的錯誤」 / 0x80004005。
新版 SQL Server 移除/棄用舊 OLE DB 提供者對舊版本的相容支援,需明確指定 MSDASQL (ODBC 橋接) + SQL Server Native Client 10.0 ODBC 驅動。
-- 1. 建立連結伺服器 (MSDASQL + Native Client 10.0 ODBC)
EXEC sp_addlinkedserver
@server = 'SQL2000_LINK',
@srvproduct = 'sqlserver',
@provider = 'MSDASQL',
@datasrc = NULL,
@location = NULL,
@provstr = 'DRIVER={SQL Server Native Client 10.0};SERVER=192.168.1.50;',
@catalog = NULL;
GO
-- 2. 設定登入映射 (SQL 驗證)
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'SQL2000_LINK',
@useself = 'false',
@rmtuser = 'sa',
@rmtpassword = 'StrongP@ssw0rd';
GO
-- 3. 啟用 RPC (支援遠程預存程序)
EXEC sp_serveroption 'SQL2000_LINK', 'rpc out', 'true';
EXEC sp_serveroption 'SQL2000_LINK', 'rpc', 'true';
GO
若本機僅安裝 SQL 2014,缺少 Native Client 10.0 ODBC 驅動,需下載安裝:
odbcad32 → 「驅動程式」頁籤可見 SQL Server Native Client 10.0。-- 測試查詢 SELECT * FROM OPENQUERY(SQL2000_LINK, 'SELECT @@VERSION'); -- 或四部分命名 SELECT * FROM SQL2000_LINK.PubDB.dbo.Orders;
SQL Server 2000 已停止支援 15+ 年,無安全性更新、無現代功能。連結伺服器僅為過渡方案,**強烈建議規劃將 SQL 2000 資料庫遷移至 SQL 2019/2022**,並更新應用程式連線字串。