數據庫教程1:AAA
數據庫2:BBB
數據庫名和表名之間放兩個點
- select * from [AAA]..TableA a inner join [BBB]..TableB b on a.AcountID = b.ClIEntID
注意:必須是單個Sql實例!
你要知道跨數據庫訪問的語法,如下:
select * from openrowset('sqloledb','DRIVER={SQL Server};SERVER=服務器地址;UID=sa;PWD=密碼', 數據庫名.dbo.表名),
如果沒有啟用Ad Hoc Distributed QuerIEs,查詢結果是出錯的,如下描述:
SQL Server 阻止了對組件 'Ad Hoc Distributed QuerIEs' 的 STATEMENT'OpenRowset/OpenDatasource' 的訪問,因為此組件已作為此服務器安全配置的一部分而被關閉。系統管理員可以通過使用 sp_configure 啟用 'Ad Hoc Distributed Queries'。有關啟用 'Ad Hoc Distributed QuerIEs' 的詳細信息,請參閱 SQL Server 聯機叢書中的 "外圍應用配置器"。
解決方法:
exec sp_configure 'show advanced options',1reconfigureexec sp_configure 'Ad Hoc Distributed QuerIEs',1reconfigure
然後執行查詢,
select * from openrowset('sqloledb','DRIVER={SQL Server};SERVER=服務器地址;UID=sa;PWD=密碼', 數據庫名.dbo.表名)
執行完後,關閉Ad Hoc Distributed QuerIEs
exec sp_configure 'Ad Hoc Distributed QuerIEs',0reconfigureexec sp_configure 'show advanced options',0reconfigure
啟用跨數據庫所有權鏈接
--------------------------------------------------------------------------------
只能在完全信任高級權限用戶的環境中啟用跨數據庫所有權鏈接。 可在設置所有數據庫,或使用 Transact-SQL 命令 sp_configure 和 sp_dboption 選擇性地設置特定數據庫期間,配置跨數據庫所有權鏈接。
SQL Server 2000 SP3 引入了 Cross DB Ownership Chaining 選項作為一項安全增強功能,它可允許您配置跨數據庫所有權鏈接。 若要選擇性地配置 SQL Server 2005 或更高版本中的跨數據庫所有權鏈接,但該鏈接對於服務器未打開,請使用 sp_configure 打開該鏈接。 然後,使用包含 SET DB_CHAINING ON 的 ALTER DATABASE 命令僅為需要跨數據庫所有權鏈接的數據庫配置跨數據庫所有權鏈接。
動態 SQL
在執行了動態創建的 SQL 語句的情況下跨數據庫所有權鏈接將不起作用,除非同一用戶同時存在於兩個數據庫中。 您可以通過創建訪問另一數據庫中數據的存儲過程並使用存在於兩個數據庫中的證書對過程簽名,在 SQL Server 2005 中解決此問題。 這可為用戶提供訪問該過程所使用的數據庫資源的權限,而不必向他們授予數據庫訪問權或權限。