我正在寻找使用2个数据库的SQL查询。如何为此查询使用2个连接字符串,因为它是2个不同的数据库?
var commandText = @"insert into database1 select * from database2";
using (SqlConnection myConn = new SqlConnection(ConnectionString))
{
using (SqlCommand myCommand = new SqlCommand(commandText, myConn))
{
myConn.Open();
myCommand.ExecuteNonQuery();
}
答案 0 :(得分:2)
如果您的两个数据库都位于同一服务器实例中,那么您不需要两个连接。您虚拟地连接到server instance
。所以没有问题。
var commandText = @"insert into [dbname1].dbo.table1 select * from
[dbname2].dbo.table1";
我认为最好的方法是创建一个存储过程并将dbnames(从您的配置中)传递给sp作为参数。然后,构建动态查询以执行插入。这样,您可以更好地控制不同的数据库名称。
如果它们位于两个不同的实例或单独的服务器中,请使用sp_addlinkedserver链接它们并使用sp_addlinkedsrvlogin登录。还要确保在执行操作后丢弃它们。
作为一般建议,不推荐这样做,因为它容易出错。关于评论的更多细节......
答案 1 :(得分:1)
你做不到。但是,如果您可以控制数据库,则可以使用单个连接字符串为跨服务器选择进行设置。
答案 2 :(得分:0)
创建一个可以访问两个数据库的登录名,只使用一个连接字符串。您的查询将如下:
string sql = "INSERT INTO [Database1].[dbo].[Table] SELECT * FROM [Database2].[dbo].[Table]
答案 3 :(得分:0)
我想你不能。您应该在第一个数据库上执行select语句,然后在第二个数据库中执行插入。