-- 1. 安裝 MyODBC 驅動,建立系統 DSN (如 myDSN)
-- 2. 建立連結伺服器
EXEC sp_addlinkedserver
@server = 'MySQLTest',
@srvproduct = 'MySQL',
@provider = 'MSDASQL',
@datasrc = 'myDSN';
GO
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'MySQLTest',
@useself = 'false',
@locallogin = 'sa',
@rmtuser = 'mysql_user',
@rmtpassword = 'mysql_pwd';
GO
-- 3. 查詢 (必須用 OPENQUERY)
SELECT * FROM OPENQUERY(MySQLTest, 'SELECT * FROM db.table');
-- 不支援四部分命名: MySQLTest.db.user.table
EXEC sp_addlinkedserver 'OraLink', 'Oracle', 'MSDAORA', 'TNS_Service_Name';
GO
EXEC sp_addlinkedsrvlogin 'OraLink', 'false', 'sa', 'ora_user', 'ora_pwd';
GO
-- 查詢 (四部分命名全大寫)
SELECT * FROM OraLink..ORA_USER.TABLE_NAME;
-- 執行預存程序
SELECT * FROM OPENQUERY(OraLink, 'EXEC ORA_USER.PROC_NAME');
EXEC sp_addlinkedserver
@server = 'TxtSrv',
@provider = 'Microsoft.Jet.OLEDB.4.0',
@datasrc = 'C:\Data\TextFiles', -- 目錄路徑
@provstr = 'Text';
GO
EXEC sp_addlinkedsrvlogin 'TxtSrv', FALSE, NULL, 'Admin', NULL;
GO
-- 查詢 (檔名含 # 號)
SELECT * FROM TxtSrv...[file1#txt];
-- 需同目錄下有 schema.ini 定義欄位格式
-- 方式 A: MSDASQL (ODBC)
EXEC sp_addlinkedserver 'SqlLink', '', 'MSDASQL', NULL, NULL,
'DRIVER={SQL Server};SERVER=RemoteIP;UID=user;PWD=pwd;';
-- 方式 B: SQLOLEDB (原生, 推薦)
EXEC sp_addlinkedserver @server='SqlLink', @provider='SQLOLEDB', @datasrc='RemoteIP';
EXEC sp_addlinkedsrvlogin 'SqlLink', 'false', 'sa', 'remote_user', 'remote_pwd';
GO
-- 四部分命名查詢/寫入
SELECT * FROM SqlLink.RemoteDB.dbo.TableName;
INSERT LocalDB.dbo.Table SELECT * FROM SqlLink.RemoteDB.dbo.Table;
SELECT * INTO LocalDB.dbo.NewTable FROM SqlLink.RemoteDB.dbo.Table;
EXEC sp_addlinkedserver
@server = 'AccessLink',
@provider = 'Microsoft.Jet.OLEDB.4.0',
@datasrc = 'C:\Data\Northwind.mdb';
GO
SELECT * FROM AccessLink...TableName;
-- 安裝 Sybase Client, 建立系統 DSN (如 SybaseDSN)
EXEC sp_addlinkedserver 'SybaseLink', '', 'MSDASQL', NULL, NULL,
'Driver={Sybase System 11};Database=hisdb;Srvr=10.2.1.1;UID=sa;PWD=pwd;';
GO
SELECT * FROM SybaseLink.hisdb.dbo.table1;
SET IDENTITY_INSERT、SELECT INTO 不支援跨連結伺服器四部分命名。OPENQUERY 推算至遠端,或使用 SSIS/複製資料庫精靈。掌握 sp_addlinkedserver 與 sp_addlinkedsrvlogin 參數組合,即可打通異構資料源,實現跨平台查詢與遷移。