一个SQL命令和两个连接字符串
本文关键字:两个 连接 字符串 SQL 命令 一个 | 更新日期: 2023-09-27 18:17:36
我想在c#中运行这个查询
SELECT *
FROM [FirstDataBase].[dbo].[table1]
INNER JOIN [SecondDataBase].[dbo].[table2]
,我的代码是:
SqlConnection cn = new SqlConnection(myConnectionString);
SqlCommand cmd = new SqlCommand(@"SELECT * FROM [FirstDataBase].[dbo].[table1]
INNER JOIN [SecondDataBase].[dbo].[table2]");
cmd.Connection = cn; // here is my question !!!
cn.Open();
int x = (int)cmd.ExecuteScalar();
但是我的查询需要两个连接字符串…一个用于[FirstDataBase],第二个[SecondDataBase]…我该怎么做呢?如何将两个SqlConnection
或ConnectionString
插入到一个SqlCommand
中?或
我实际上已经重读了你的问题,你不需要两个连接字符串。您的查询命令可以影响您希望连接的任何数据库。例如:
string query = @"SELECT * FROM [FirstDataBase].[dbo].[table1]
INNER JOIN [SecondDataBase].[dbo].[table2]";
using(SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionString[@"db"].ConnectionString))
using(SqlCommand command = new SqlCommand(query, connection))
{
// Logic
}
如果您的查询影响两个数据库,那么这将影响两个数据库。您可以使用与SQL Management Studio中相同的层次结构来执行任务。
您只需要连接到第一个数据库。然后,查询将从那里连接到第二个数据库。或者,如果你愿意,你也可以连接到第二个数据库,但关键是你只需要一个连接。
如果您使用的是Management Studio,同样的原则也适用,您将连接到第一个数据库,然后运行查询连接到第二个数据库。
显然,这是假设第一个数据库可以与第二个数据库通信(正如@Tim Medora在评论中指出的)。
如果数据库在不同的服务器上,您可以在Management Studio中创建一个"Linked Server"。
- 从主数据库中转到Server Objects -> Linked Servers.
- 右键单击链接服务器,然后点击"新建链接服务器"
- 在General页面选择你想要链接到的服务器类型,并根据需要输入凭证。
- 添加可以访问链接数据库的本地用户,并输入您想要成为的"远程"用户,然后按Ok。
- 。
然后在数据库名称前面指定哪个服务器。一个例子:
select * from [2.2.2.2].[Test].[dbo].[MyTable]
join [1.1.1.1].[OtherDb].[dbo].[OtherTable] on ...etc
链接服务器的伟大之处在于您可以映射用户,因此相同的用户不必存在于两台机器上。带有链接的数据库会自动将您记录在另一个数据库中。
您的查询是数据库指定的"[FirstDataBase].[dbo].[table1]"。因此,您只需连接到数据库(甚至可以是[FirstDataBase]或[SecondDataBase]以外的数据库)。您的代码应该运行良好。