从c#还原sql数据库



我已经检查了其他问题和其他答案,但它并不能解决我的问题。

这是一个查询,可以在SQL Management Studio 上运行

USE master Alter DATABASE SATS_Test Set Single_User With Rollback Immediate
Restore Database SATS_Test From Disk =N'C:UsersMyPath5052020t_test.bak' 
Alter Database SATS_Test Set Multi_User

这里是c#code=>以上查询是从query输出的

string connetionString = null;
SqlConnection connection;
SqlDataAdapter adapter = new SqlDataAdapter();
connetionString = "Data Source="+DataAccessHelper.ServerName+";Initial Catalog=master;User ID="+DataAccessHelper.UserID+";Password="+DataAccessHelper.Password;
connection = new SqlConnection(connetionString);

string restorefilepath = ConfigurationManager.AppSettings["DBBackupPath"].ToString();
restorefilepath = Path.Combine(restorefilepath, filename);
string query = @"USE master Alter DATABASE " + DataAccessHelper.DatabaseName + @" Set Single_User With Rollback Immediate" + Environment.NewLine + " Restore Database " + DataAccessHelper.DatabaseName + @" From Disk =N'" + restorefilepath + "' " + Environment.NewLine + " Alter Database " + DataAccessHelper.DatabaseName + " Set Multi_User";
int result = 0;
using (SqlCommand cmd = new SqlCommand(query, connection))
{
connection.Open();
result = cmd.ExecuteNonQuery();
connection.Close();
}

问题是ExecuteNonQuery的这个结果总是返回-1。我做错了什么?

一件事是,当前应用程序正在使用这个还原数据库,所以我的数据库在还原数据库时有一个连接。它的问题?

我怎样才能做到这一点?

如果没有发生异常,则恢复成功完成。ExecuteNonQuery的返回值是批处理返回的行数,如果未返回行数,则返回-1。RESTORE不返回行计数。

此还原脚本在操作期间强制终止与数据库的现有连接,因此当前应用程序连接将受到影响。根据错误的处理方式(例如重试(,这可能会影响应用程序的功能。

最新更新