最簡單:[資料庫名].dbo.表名
SELECT * FROM [DestinationDBName].dbo.DestinationTableName;
EXEC sp_addlinkedserver
@server = 'DestAlias', -- 連結伺服器別名
@srvproduct = '',
@provider = 'SQLOLEDB',
@datasrc = 'DestServerIP\InstanceName'; -- IP\實例名,預設實例可省略
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'DestAlias',
@useself = 'false',
@locallogin = NULL,
@rmtuser = 'UserName',
@rmtpassword = 'Password';
SELECT * FROM [DestAlias].dbo.DestinationTableName;
EXEC sp_dropserver
@server = 'DestAlias',
@droplogins = 'droplogins';
SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=DestServerIP;User ID=UserName;Password=Password'
).[DestDBName].dbo.DestinationTableName;
SELECT *
FROM OPENROWSET(
'SQLOLEDB',
'DestServerIP', 'UserName', 'Password',
'SELECT * FROM [DestDBName].dbo.DestinationTableName'
);
需先建立連結伺服器,屬方案 A 變體,此處不贅述。
| 需求 | 推薦方案 |
|---|---|
| 長期、頻繁、需分散式交易 | 連結伺服器 |
| 一次性、臨時、腳本化部署 | OPENDATASOURCE/OPENROWSET |
| 同實例跨庫 | 三部份名稱 [DB].dbo.Table |
sp_addlinkedsrvlogin 明文傳遞,建議在安全通道執行Ad Hoc Distributed Queries 選項:EXEC sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE;