我想合并两个相同的名称方案和表,但路径不同。我希望它可以,但是不会。
返回错误 '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
“有效
答案 0 :(得分:1)
问题是您未在insert语句的任何位置使用connection2,而是仅使用与第一个数据库的连接。
您可以在此处使用SQL大容量复制类。您可以找到一个不错的教程 here。