0

你如何执行这样的查询;

    SELECT
    c.Name
    FROM db1..TableA a(nolock)
    join db2..TableA b(nolock) on a.id = b.id
    join db2..TableB c(nolock) on b.id = c.id
    join db2..TableC as d on c.id = d.id
    where c.id = '2314'

和?SQLConnector_ SQLCommand似乎您一次只能连接到一个数据库。

我意识到我可以有两个实例,SQLConnector然后在我的 C# 代码中加入结果,但显然这将是一个糟糕的解决方案。有什么简单的解决方案吗?

4

1 回答 1

2

如果您指的是单个服务器,那么您可以使用三部分名称
但是该名称需要所有者,通常是 dbo 尝试

 SELECT
    c.Name
    FROM db1.dbo.TableA a(nolock)
    join db2.dbo.TableA b(nolock) on a.id = b.id
    join db2.dbo.TableB c(nolock) on b.id = c.id
    join db2.dbo.TableC as d on c.id = d.id
    where c.id = '2314'

如果您右键单击 SSMS 中的表并单击选择前 1000 行,它将构建正确的 3 部分名称。

如果数据库位于不同的服务器上。

通过链接服务器,您可以在单个连接上访问多个服务器。

链接服务器(数据库引擎)

创建链接服务器

然后您只需通过单个连接引用 4 部分名称
4 部分名称不限于 SSMS
4 部分名称可以通过来自 .NET 的连接使用。

于 2013-04-13T01:00:32.660 回答