来自asp.net中两个数据库的SQL Server查询

时间:2012-10-02 19:48:53

标签: sql-server

我有一个asp.net应用程序,它在多个服务器上使用多个数据库。现在我需要从不同服务器上的两个数据库连接两个表。

我使用两个连接字符串,我应该写什么?

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是另一个有另一个登录名的数据库。

4 个答案:

答案 0 :(得分:1)

您不能在ASP.NET中执行此操作,也不能使用两个连接字符串。

实现此目的的一种方法是将这些数据库设置为linked servers - 这将允许您使用一个登录名在其中一个服务器上运行查询,并通过链接服务器执行连接。

答案 1 :(得分:1)

如果没有链接服务器的单个查询,则无法执行此操作,但您可以单独查询它们,然后根据.NET代码中第二个表的值过滤第一个表。

答案 2 :(得分:0)

编辑:简而言之,你可以但他们必须联系起来:见Oded的回答。

简而言之,你不能。

SQL查询由单个SQL服务器处理和执行。这意味着单个查询无法在两个不同的服务器上连接两个表。

根据具体情况,将表从一个服务器导入另一个服务器,然后在该服务器上执行查询可能更好。因此,问题是“为什么你在两个独立的服务器上有相关数据?”

答案 3 :(得分:0)

您有两个选择:

  1. 使用链接服务器,以便您可以使用单个连接字符串执行所有操作。
  2. 使用2个连接并将数据带到应用程序端(C#)。既然两个数据集都在同一个地方,那么您可以应用所需的逻辑。