首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 連結伺服器技術全攻略:MySQL、Oracle、文字檔、Access、Sybase 互通實作

     編輯:關於SqlServer

一、連結 MySQL (OLE DB for ODBC)

-- 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

二、連結 Oracle (OLE DB for Oracle)

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');

三、連結文字檔 (Jet OLE DB 4.0)

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 定義欄位格式

四、連結 SQL Server (最常用)

-- 方式 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;

五、連結 Access (Jet OLE DB)

EXEC sp_addlinkedserver
    @server = 'AccessLink',
    @provider = 'Microsoft.Jet.OLEDB.4.0',
    @datasrc = 'C:\Data\Northwind.mdb';
GO
SELECT * FROM AccessLink...TableName;

六、連結 Sybase (ODBC)

-- 安裝 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 不支援跨連結伺服器四部分命名。
  • 分散式交易需啟用 MSDTC 並正確配置網路存取。
  • 效能考量:大量資料搬移優先用 OPENQUERY 推算至遠端,或使用 SSIS/複製資料庫精靈。

掌握 sp_addlinkedserver 與 sp_addlinkedsrvlogin 參數組合,即可打通異構資料源,實現跨平台查詢與遷移。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved