回答
是的,只要你有權限。如果您有Linked Server設置,您也可以執行跨服務器。
跨數據庫實例:
SELECT * FROM localTable as lt
INNER JOIN otherDB.dbo.OtherTable as ot
ON lt.ID = ot.id
跨服務器爲例(假設您已經創建了鏈接服務器):
SELECT * FROM localTable as lt
INNER JOIN ServerName.otherDB.dbo.OtherTable as ot
ON lt.ID = ot.id
是的。只需使用3部分命名語法database_name.schema_name.table_name
即可。
您還需要啓用跨數據庫所有權鏈接。 (不推薦)或使用this approach.
使用完全限定的表名。例如,如果你在數據庫基礎知識,並希望訪問數據庫XYZ表的表,訪問它XYZ.dbo.table
(這可能是DBO或別的東西取決於表的所有者,通常是DBO)
應該注意,從SQL Server 2005以來,架構和所有者並不是一回事。在我們的許多應用數據庫中,我們使用架構來區分用戶數據和應用程序元數據。在我們的倉庫環境中,我們使用模式來識別相關的表/過程,以便我們可以輕鬆地將安全性應用於對象組。我很少看到他們用來識別物體所有者。 – Rozwel 2011-03-25 18:24:58
試試像下面這樣:
SELECT a.userID, b.usersFirstName
FROM databaseA.dbo.TableA a
INNER JOIN database B.dbo.TableB b ON a.userID = b.userID
如果您發佈代碼,XML或數據樣本,**請**在文本編輯器中突出顯示這些行,然後單擊編輯器工具欄上的「代碼示例」按鈕(「{}」)以精確格式化並語法突出顯示它!如果您發佈錯誤消息,請**使用blockquotes('「')正確格式化錯誤消息。 – 2011-03-25 18:25:33
另外一個技術,在某些環境中更好地工作是定義一個同義詞遠程表。這可以讓你有一個指向遠程對象的本地引用。如果您處於必須遷移事物的環境中,並且從一個環境到另一個環境的相對位置可能不一樣,那麼此功能尤其有用。這裏有一個快速概覽:
- 1. 數據庫存儲過程
- 2. 針對數據庫項目中的數據測試存儲過程
- 3. 無法在不同的數據庫中執行存儲過程?
- 4. 在熊貓不同的數據庫中存儲過程 - Sql server
- 5. 存儲過程中的不同數據庫
- 6. 數據庫交互的通用存儲庫或存儲過程?
- 7. 針對存儲過程的情況?
- 8. 針對多個數據庫創建存儲過程的查詢意外失敗
- 9. H2數據庫中的存儲過程
- 10. 對數百個相同的數據庫使用一組存儲過程
- 11. 存儲過程未更新數據庫
- 12. java - 存儲過程數據庫鏈接
- 13. linq針對存儲過程的2個不同執行返回的相同數據?
- 14. 數據集數據與存儲過程不同
- 15. 從腳本中跟蹤存儲過程存儲的數據庫
- 16. 針對相同數據的不同過濾數據提供程序?
- 17. 針對不同數據的不同MKPinAnnotation
- 18. 將表值參數傳遞到跨不同數據庫的存儲過程
- 19. 使用存儲庫模式提供對不同數據存儲的訪問
- 20. 在兩個數據庫之間同步存儲過程?
- 21. ASP.NET - 使用Oracle 9i數據庫/數據庫存儲過程
- 22. 使用存儲過程/函數創建數據庫,表,過程?
- 23. 針對不同數據庫的可配置數據訪問層
- 24. 使用存儲過程在數據庫中存儲值
- 25. 存儲過程比使用LINQ對數據庫更安全嗎?
- 26. 存儲過程將腳本數據庫對象寫入文件?
- 27. 存儲數據庫程序
- 28. 通過Trello API存儲針對卡片的任意數據?
- 29. 存儲過程和預定作業返回不同的數據
- 30. 存儲過程庫
hrm,好吧。數據庫位於不同的服務器上,我沒有鏈接的服務器。我想我不能那麼做。 – Tony 2011-03-25 18:29:49
@Tony如果你的數據存在於不同的服務器上,那麼你將不得不建立一個鏈接服務器或移動數據。對您的環境一無所知,但我們有一套工作,每天晚上將一小部分倉庫數據複製到應用程序服務器,以便我們可以訪問我們所有的公共數據(客戶端列表等)。應用程序,而不必重新鍵入事物或將所有地方的服務器連接起來。我們使用SSIS來移動數據。 – Rozwel 2011-03-25 18:41:04
啊,好的。謝謝。感謝大家。 – Tony 2011-03-25 18:42:25