需要在c#中使用2个连接字符串进行查询

时间:2013-02-20 14:22:20

标签: c# sql sql-server

我正在寻找使用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();
            } 

4 个答案:

答案 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语句,然后在第二个数据库中执行插入。