叢集 SQL Server 內的連結伺服器考量
針對非由 SQL Server 2005 所隨附的 OLE DB 提供者,在叢集 SQL Server 中設定連結伺服器時,請確認 OLE DB 提供者已安裝於叢集的所有節點上。此外,定義連結伺服器的任意屬性都必須與位置無關;它們所包含的任何資訊都不應假設 SQL Server 一定執行於叢集的某個特定節點上。
以下範例會對執行 SQL Server 的伺服器定義一個連結伺服器,並在 SELECT
陳述式內使用四部份名稱參考某個遠端資料表。
sp_addlinkedserver @server = N'LinkServer',
@srvproduct = N' ',
@provider = N'SQLNCLI',
@datasrc = N'ServerNetName',
@catalog = N'AdventureWorks'
GO
SELECT *
FROM LinkServer.AdventureWorks.HumanResources.Employee
GO
回送連結伺服器
連結伺服器可定義成定指回 (回送,Loopback) 至定義它們的伺服器上。回送伺服器最適合用於測試針對單一伺服器網路使用分散式查詢的應用程式。
例如,在稱為 MyServer
的伺服器上執行以下 sp_addlinkedserver
預存程序,可定義一個回送連結伺服器:
sp_addlinkedserver @server = N'MyLink',
@srvproduct = N' ',
@provider = N'SQLNCLI',
@datasrc = N'MyServer',
@catalog = N'AdventureWorks'
GO
使用 MyLink
作為伺服器名稱的 Transact-SQL 陳述式,會透過 SQLNCLI
提供者形成迴圈,然後再回到本機伺服器。
回送連結伺服器不能用於分散式交易內。在分散式交易內對回送連結伺服器嘗試執行分散式查詢,會導致錯誤發生,例如錯誤 3910:「[Microsoft][ODBC SQL Server Driver][SQL Server]交易內容正由另一個工作階段所使用。」
請參閱
概念
SQL Native Client OLE DB 提供者
分散式查詢
其他資源
sp_addlinkedserver (Transact-SQL)