Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在恢复数据库备份时,我在sql语句@db附近得到了这个错误,在Immediate附近得到了不正确的语法_C#_Sql_Sql Server - Fatal编程技术网

C# 在恢复数据库备份时,我在sql语句@db附近得到了这个错误,在Immediate附近得到了不正确的语法

C# 在恢复数据库备份时,我在sql语句@db附近得到了这个错误,在Immediate附近得到了不正确的语法,c#,sql,sql-server,C#,Sql,Sql Server,我一定是太累了,看不出这句话有什么问题。我正在尝试从备份还原db文件。监狱已经开门了 if (con.State == ConnectionState.Closed) { con.Open(); } string db = con.Database.ToString(); using (SqlCommand cmd = new SqlCommand("ALTER DATABASE @db SET Single_User

我一定是太累了,看不出这句话有什么问题。我正在尝试从备份还原db文件。监狱已经开门了

 if (con.State == ConnectionState.Closed)
        {
            con.Open();
        }
        string db = con.Database.ToString();
  using (SqlCommand cmd = new SqlCommand("ALTER DATABASE @db SET Single_User WITH Rollback Immediate", con))
                {
                    cmd.Parameters.AddWithValue("@db",  db);
                    cmd.ExecuteNonQuery();
                }

不能将数据库名称变量传递给alter语句。您必须动态构建查询,然后执行它

using (SqlCommand cmd = new SqlCommand("ALTER DATABASE [" + db + "] SET Single_User WITH Rollback Immediate", con))
但请注意,这种创建sql命令的方式可能会带来aql注入的风险