C# 在恢复数据库备份时,我在sql语句@db附近得到了这个错误,在Immediate附近得到了不正确的语法
我一定是太累了,看不出这句话有什么问题。我正在尝试从备份还原db文件。监狱已经开门了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
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注入的风险