2012-09-13 35 views
3

我正在開發一個Web應用程序(現在使用經典的asp),需要查詢同一服務器上兩個單獨數據庫上的兩個表。使用兩個數據庫創建查詢

我的IT團隊爲每個數據庫提供了單獨的應用程序級別登錄名/密碼,這些數據庫將在我的代碼中用於連接。

我想創建一個查詢,將兩個表(每個數據庫一個)連接在一起,但不太確定,Google也沒有太多幫助。

我假設我必須創建兩個連接才能做到這一點,因爲我有兩個單獨的登錄名,但如何創建使用每個表的查詢。

請注意 - 我們的IT團隊在此階段不會將兩個數據庫鏈接在一起。我幾乎堅持我所擁有的。

希望你能幫上忙。 墊子

回答

1

爲跨數據庫查詢典型的語法會是這樣的:

SELECT <columns> 
    FROM [schema].[table] t1 INNER JOIN 
     [databaseName].[schema].[table] t2 ON <condition> 

但是,如果你使用2005或以上,這是非常值得創建的第一個數據庫的代名詞,這樣的提法第二個數據庫不會貫穿整個代碼(如果數據庫名稱稍後會更改)?

CREATE SYNONYM [schema].[synonymName] FOR [databaseName].[schema].[table] 

然後將查詢變爲:

SELECT <columns> 
    FROM [schema].[table] t1 INNER JOIN 
     [schema].[synonymName] t2 ON <condition> 

您可能需要適當設置,使得您在使用連接到第一個數據庫的用戶可以訪問第二權限。如果IT團隊只是從相同的服務器主體授予對兩個數據庫的相關訪問權限,那就是實現它的最佳方式。如果你堅持有兩個完全獨立的登錄,那就太糟糕了。但是,爲了運行跨數據庫查詢,不需要'將數據庫鏈接在一起'。

+0

工作,他有兩個連接字符串..這不會工作 – nawfal

+0

'如果IT團隊只需授予相同服務器主體對兩個數據庫的相關訪問權限,這是實現它的最佳方式。「他表示,IT團隊不希望將數據庫鏈接在一起 - 並不是說​​他們一定希望有獨立的服務器主管。 –

2

如果IT團隊希望數據庫分開,那麼顯然不能使用數據庫爲您進行連接。

您必須執行加入客戶端。 Linq是一個簡單的方法,但是有兩個數據集的循環也可以工作。

+0

任何關於我如何做到這一點的指針? –

+0

簡單檢查類似的問題:http://stackoverflow.com/questions/2691890/linq-to-sql-get-records-from-two-dbs-that-are-on-different-servers和 http:///stackoverflow.com/questions/352949/linq-across-multiple-databases ..看起來你需要一個數據庫之間的鏈接,以使其與LINQ – AardVark71

相關問題