0

我正在寻找一个使用 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

4 回答 4

2

如果您的两个数据库都在同一个服务器实例中,那么您不需要两个连接。您实际上是连接到server instance. 所以没有问题。

var commandText = @"insert into [dbname1].dbo.table1 select * from 
                   [dbname2].dbo.table1";

我认为最好的方法是创建一个存储过程并将 dbnames(来自您的配置)作为参数传递给 sp。然后,构建一个动态查询来执行插入。这样您就可以更好地控制不同的数据库名称。

如果它们位于两个不同的实例或不同的服务器中,则使用sp_addlinkedserver链接它们并使用sp_addlinkedsrvlogin登录。还要确保在执行操作后放下它们。

作为一般建议,不建议这样做,因为它容易出错。关于评论的更多细节......

于 2013-02-20T14:27:34.993 回答
1

You can't. However, if you have control over the databases, you can set them up for a cross-server select using a single connection string.

于 2013-02-20T14:24:55.820 回答
0

Create a login that has access to both databases and just use a single connection string. Your query will be like:

string sql = "INSERT INTO [Database1].[dbo].[Table] SELECT * FROM  [Database2].[dbo].[Table]
于 2013-02-20T14:25:07.807 回答
0

I think you can't. You should execute the select statement on the first database and then the insert into the second database.

于 2013-02-20T14:25:10.050 回答