从同名方案和表但路径不同的表中插入表

时间:2019-01-08 03:52:21

标签: c# sql-server

我想合并两个相同的名称方案和表,但路径不同。我希望它可以,但是不会。

返回错误     'System.Data.SqlClient.SqlException:'C:附近的语法不正确。     'C:'附近的语法不正确。标签“ C”已经被声明。     标签名称在查询批处理或存储过程中必须唯一。''

private void Merge_Click(object sender, RoutedEventArgs e) {
        string x = // same name scheme but different path 1
                   // c:\dbdata\b.mdf
                   Files.Items[0].ToString(); //from listbox 1
        string y = // same name scheme but different path 2
                   // c:\dbdata\a\b.mdf
                   Files2.Items[Files2.SelectedIndex].ToString(); //from listbox 2

        string connect = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=" + x + ";Integrated Security=True;Connect Timeout=30";
        string connect2 = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=" + y + ";Integrated Security=True;Connect Timeout=30;Pooling=False;";

        string insert = "INSERT INTO " + x + ".dbo.item" + 
            " (id, name)" +
        // same table name 1
        " SELECT id, name" +
        "FROM " + y + ".dbo.item"; //same table name 2
        string q = @"select * from dbo.item ";

        using (SqlConnection connection = new SqlConnection(connect))
        {
            connection.Open();
            using (SqlConnection connection2 = new SqlConnection(connect2))
            {
                connection2.Open();

                SqlCommand commandinsert = new SqlCommand(insert, connection);
                var temp = commandinsert.ExecuteReader();                    

            }
        }

当我更换时     “ SELECT id, name” +“ FROM” + y +“ .dbo.item”至     “ values (1, 'a')和” INSERT INTO“ + x +”。dbo.item“到” INSERT INTO dbo.item“有效

1 个答案:

答案 0 :(得分:1)

问题是您未在insert语句的任何位置使用connection2,而是仅使用与第一个数据库的连接。

您可以在此处使用SQL大容量复制类。您可以找到一个不错的教程 here