在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%'

我连接位于两个不同数据库(mdbmdb2)中的两个表。

但是我如何在我的。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 ?

如何同时连接两个数据库?

在c#中连接两个数据库中的表

SQL连接到服务器-连接字符串中的初始目录行为类似于use -它设置默认DB。

所以你的3部分SQL查询应该工作作为。所以可能
  1. 确保你的应用使用的SQL登录(或你的AppPool的帐户,如果使用Web和集成安全)有必要访问这两个数据库。(在SQL Enterprise Manager上使用RunAs作为此帐户并尝试运行查询)
  2. 您可以尝试转义[Alias]
  3. 另外,如果mdb1mdb2之间存在耦合(例如SPROCSmdb1中使用mdb2中的表等),为了便于维护,您可以考虑在mdb1中为mdb2对象添加视图。这样可以很容易地识别跨数据库依赖关系。在这种情况下,你的查询可以使用看起来像在同一个数据库中的视图,尽管对mdb2的潜在依赖仍然存在。

我不确定是否有办法在连接字符串中做到这一点。但是,您可能可以使用对表的四部分引用来完成此操作:[server].[database].[table].[column] .

您的c#应用程序只需要连接到一个数据库服务器进行此查询。假设你的c#应用程序连接到[mdb]。数据库[mdb2]应该是数据库[mdb]的链接服务器。

因为你可以在sql server中运行这个查询,所以必须有一个sql server连接到两个数据库。在你的c#连接字符串中使用sql server。就是这样!