C# 如何使用windows身份验证与多个数据库建立连接?

C# 如何使用windows身份验证与多个数据库建立连接?,c#,sql-server,windows-authentication,sqlconnection,C#,Sql Server,Windows Authentication,Sqlconnection,我以前在C中使用SQL连接进行SQL查询,如下所示: SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data Source=our.server;" + "User id=user_ID; " + "Password=The_Pass; " + "MultipleActiveResultSets = true"; conn.Op

我以前在C中使用SQL连接进行SQL查询,如下所示:

SqlConnection conn = new SqlConnection();
conn.ConnectionString =
"Data Source=our.server;" +
"User id=user_ID; " +
"Password=The_Pass; " +
"MultipleActiveResultSets = true";

conn.Open();
但当我想同时处理多个数据库时,它就不起作用了

//just a very simplified representation of my very complicated query
string double_db_query = " select top 10 * into [DB_1].[dbo].[test_table] from [DB_2].[dbo].[source_table] "; 
using (SqlCommand double_db_command = new SqlCommand(double_db_query, conn)) 
{
double_db_command.ExecuteNonQuery();
}
它返回错误,因为我的连接仅连接到其中一个数据库 每个数据库都有单独的用户名和密码,不能通过SQL连接连接到两个数据库。 我的windows帐户可以访问所有数据库,但我不知道如何建立windows连接。 我看到的所有示例都包含数据库名称,这表明它们只连接到一个数据库。与此链接类似:

windows身份验证能否完全取代我的SQL连接以用于生成命令? 相关问题:

对于windows身份验证,您希望使用所谓的“集成安全性”。您可以在线搜索该术语,或转到以下示例。您既不指定用户也不指定密码。使用类似于“Trusted_Connection=True;”的内容

从同一实例上的多个数据库进行查询是可以的。用于运行查询的帐户必须对这两个数据库都具有所需的权限。如果您不太担心访问,那么可以将windows帐户作为用户映射到这两个数据库,并将每个数据库中的用户添加到db_所有者


您可以对sql server登录执行相同的操作。它可以作为两个数据库中的用户进行映射。对于Windows帐户/组和SQL Server登录,向数据库授予权限是相同的。

将连接字符串存储在应用程序或web配置中,而不是硬编码。为每个不同的DB连接使用单独的con字符串连接到服务器时,始终需要指定要连接的数据库。但是,如果您需要在一个查询中引用多个数据库,则可以使用3部分命名(如上所述),但如果您只需要引用一个数据库,则应努力连接到正确的数据库。您不需要。一个连接只有一个“当前”数据库,并且与一个特定的标识相关联。使用windows身份验证时,您不提供来自计算机当前用户的名称和密码。因此,您不能对不同的连接使用不同的身份。谢谢。正如我所写的,并且可以在查询中看到的,我的查询可以同时处理不同的数据库。我听说通过windows身份验证我可以解决这个问题,但我不知道如何解决。数据库服务器需要一个“链接服务器”连接到第二台服务器。此外,您还需要设置用户映射以使用sql auth。谢谢。我看过那一页。我试图用当前的连接字符串替换这些字符串,但没有成功。我不知道我应该如何准确地实现你所解释的。你在尝试时遇到了什么错误?如果你有一个数据库特定的权限错误,我会考虑进步。是的,事实上,错误对于这个问题来说是一个新的问题。我收到
已经有一个与此命令关联的打开的DataReader,必须先关闭。
这与您使用数据读取器两次有关。我应该研究如何更改新连接的代码。我的连接字符串现在是:
conn.ConnectionString=“Server=our.Server;integratedsecurity=True;”您有一个使用语句。您还可以在连接和读卡器对象上使用它,以确保它们已被释放。