在c#中连接两个数据库中的表
本文关键字:两个 数据库 连接 | 更新日期: 2023-09-27 18:05:53
使用SQL Server运行此查询没有问题…
SELECT SUM(Esi) AS Dispo
FROM [mdb].[dbo].[Query1] AS A
INNER JOIN [mdb2].[dbo].[TieCol] as B ON A.Alias=B.IDAlias
WHERE Alias LIKE 'SETUP%'
我连接位于两个不同数据库(mdb
和mdb2
)中的两个表。
但是我如何在我的。net应用程序中做到这一点呢?当我需要使用这个语句
时string cmdText = "SELECT SUM(Esi) AS Dispo
FROM [mdb].[dbo].[Query1] AS A
INNER JOIN [mdb2].[dbo].[TieCol] as B ON A.Alias=B.IDAlias
WHERE Alias LIKE 'SETUP%'";
this.OP = new SqlConnection(ConfigurationManager.ConnectionStrings["mdb2"].ConnectionString);
SqlCommand sqlCommand = new SqlCommand(cmdText, this.OP);
我不能执行它,因为this.OP
是连接到mdb2
…对于mdb
?
如何同时连接两个数据库?
SQL连接到服务器-连接字符串中的初始目录行为类似于use
-它设置默认DB。
- 确保你的应用使用的SQL登录(或你的AppPool的帐户,如果使用Web和集成安全)有必要访问这两个数据库。(在SQL Enterprise Manager上使用RunAs作为此帐户并尝试运行查询)
- 您可以尝试转义
[Alias]
- 另外,如果
mdb1
和mdb2
之间存在耦合(例如SPROCS
在mdb1
中使用mdb2
中的表等),为了便于维护,您可以考虑在mdb1
中为mdb2
对象添加视图。这样可以很容易地识别跨数据库依赖关系。在这种情况下,你的查询可以使用看起来像在同一个数据库中的视图,尽管对mdb2
的潜在依赖仍然存在。
我不确定是否有办法在连接字符串中做到这一点。但是,您可能可以使用对表的四部分引用来完成此操作:[server].[database].[table].[column]
.
您的c#应用程序只需要连接到一个数据库服务器进行此查询。假设你的c#应用程序连接到[mdb]。数据库[mdb2]应该是数据库[mdb]的链接服务器。
因为你可以在sql server中运行这个查询,所以必须有一个sql server连接到两个数据库。在你的c#连接字符串中使用sql server。就是这样!