使用連結伺服器名稱來識別資料來源

在定義連結伺服器之後,您可以在 Transact-SQL 陳述式中使用 linked_server_name**、catalog、**schema.object_name 四部份名稱的形式,以參考該連結伺服器內的資料物件。這些部份的定義如下:

  • linked_server_name
    參考 OLE DB 資料來源的連結伺服器。

  • catalog
    包含物件的 OLE DB 資料來源中的目錄。

  • schema
    目錄中包含物件的結構描述。

  • object_name
    結構描述中的資料物件。

例如,下列查詢會參考連結伺服器 SEATTLESales 上 AdventureWorks 資料庫中的 Production.Product 和 Sales.SalesOrderDetails 資料表:

SELECT p.Name, sod.SalesOrderID

FROM SEATTLESales.AdventureWorks.Production.Product p

INNER JOIN SEATTLESales.AdventureWorks.Sales.SalesOrderDetail sod

ON p.ProductID = sod.ProductID

ORDER BY p.Name ;

SQL Server 使用 linked_server_name 來識別 OLE DB 提供者和資料來源。catalog、schema 以及 object_name 參數會傳遞給 OLE DB 提供者以識別特定的資料物件。當連結伺服器參考 SQL Server 執行個體時,catalog 將參考資料庫,而 schema 則參考結構描述。

在 SQL Server 舊版中,結構描述是物件的擁有者。在 SQL Server 中,結構描述的存在,與建立結構描述的資料庫使用者無關。如需有關 SQL Server 結構描述的詳細資訊,請參閱<使用者結構描述分隔>。

在處理連結伺服器內的物件時,一定要使用完整名稱。系統並不支援以隱含方式解析成連結伺服器內的資料表之 dbo 擁有者名稱。基於此,即使連結伺服器為另一個 SQL Server 執行個體,查詢若不含結構描述名稱將導致 7313 錯誤。

系統管理員可以使用 sp_addlinkedsrvlogin 系統預存程序來設定登入對應,以控制特定連結伺服器可以存取的人員。此預存程序可設定特定本機登入的遠端登入和密碼。預存程序也允許設定 Windows 驗證登入的自我對應。

安全性注意事項安全性注意事項

當連接到另一個資料來源時,對於 Windows 驗證的登入,SQL Server 會適當地將模擬登入;不過,SQL Server 無法模擬 SQL Server 驗證的登入。因此,對於 SQL Server 驗證登入,SQL Server 可以存取另一個資料來源,例如檔案或是像 Active Directory 等非關聯式的資料來源,作法是在執行 SQL Server 服務下使用 Windows 帳戶的安全性內容。這麼做有可能會給這類的登入有機會存取另一個它們沒有權限的資料來源,但是在執行 SQL Server 服務下的帳戶則擁有權限。當您使用 sp_addlinkedsrvlogin 提供 SQL Server 驗證登入連結伺服器的存取權時,應考慮此可能性。