2012-10-02 70 views
0

我有一個asp.net應用程序,它在幾臺服務器上使用多個數據庫。現在我需要從不同服務器上的兩個數據庫中加入兩個表。從asp.net中的兩個數據庫的SQL Server查詢

我使用兩個連接字符串,我應該寫什麼?

query = select studentcode,mobile 
     from learning.dbo.students 
     where stcode in (select stcode from hs.dbo.currentetrm) 

Dim ds As New DataSet() 
ad.Fill(ds) 

GridView1.DataSource = ds 
GridView1.DataBind() 

哪裏learning是一個數據庫,它自己的登錄名和hs一個服務器上與其他登錄另一個數據庫。

回答

0

你有2種選擇:

  1. 使用鏈接的服務器,這樣就可以做一個連接字符串的一切。
  2. 使用2個連接並將數據帶入應用程序端(C#)。既然你有兩個數據集在同一個地方,你可以做所需的邏輯應用。
0

編輯:總之,你可以但他們必須鏈接:請參閱Oded的答案。

總之,你不能。

SQL查詢由單個SQL服務器處理和執行。這意味着一個查詢不能在兩個不同的服務器上連接兩個表。

根據情況,將表從一臺服務器導入到另一臺服務器可能是一個更好的主意,然後在該服務器上執行查詢。因此,問題是「爲什麼你在兩臺獨立的服務器上有相關數據?」

+2

不完全正確 - 您可以使用鏈接服務器:http://msdn.microsoft.com/en-us/library/ms189580.aspx – Oded

+0

您有我的哀悼。 – zebediah49

1

你不能在ASP.NET中做到這一點,而不是使用兩個連接字符串。

完成此操作的一種方法是將這些數據庫設置爲linked servers - 這將允許您使用一次登錄在其中一臺服務器上運行查詢,並通過鏈接服務器執行連接。

1

對於沒有鏈接服務器的單個查詢,您無法做到這一點,但是您可以單獨查詢它們,然後根據.NET代碼中第二個值的值過濾第一個表。