SQL命令查询

时间:2017-07-07 11:06:56

标签: c# sql sql-server

    System.Data.SqlClient.SqlException occurred
  HResult=0x80131904
  Message=Invalid object name 'Drivers.DriversDetailTable'.
  Source=.Net SqlClient Data Provider
  StackTrace:
<Cannot evaluate the exception stack trace>

每当我尝试将内容从一个数据库表复制到另一个数据库表时,继续得到上述错误,这是我的代码。

SqlConnection connect = new SqlConnection($@"Data Source = Computer\SQLEXPRESS;Initial Catalog = Drivers;Trusted_Connection=True;");
            connect.Open();
            SqlCommand cmd = new SqlCommand($@"SELECT * INTO BackUpDatabase.DriversDetailTable FROM Drivers.DriversDetailTable", connect);
            cmd.ExecuteNonQuery();
            connect.Close();

1 个答案:

答案 0 :(得分:3)

您的database名称似乎是Drivers而不是schema名称

SELECT * 
INTO BackUpDatabase.DriversDetailTable 
FROM Drivers.DriversDetailTable --here schema name is missing

当您使用两部分标识符时,它将被解析为

  

schemaname.tablename

因此DriversBackUpDatabase被视为模式名称而不是数据库。

应该是

SELECT * 
INTO BackUpDatabase.dbo.DriversDetailTable 
FROM Drivers.schemaname.DriversDetailTable --here replace schemaname with dbo or whatever schema name

注意:当您使用INTO子句时,它会创建一个新表。当您第二次运行时,您可能会收到一条错误,表明该表已存在。最好在备份数据库之前创建表,使用INSERT INTO..select复制行

Insert into BackUpDatabase.dbo.DriversDetailTable (col1,col2,..)
select col1,col2,..FROM Drivers.schemaname.DriversDetailTable