C# 我想用C代码恢复SQL Server数据库

C# 我想用C代码恢复SQL Server数据库,c#,sql-server,smo,C#,Sql Server,Smo,我想选择还原路径,然后选择我的数据库备份文件,并通过单击Visual Studio 2019中的按钮进行还原 我有一些代码,下面我已经写了,但我得到一个错误 string connection = ConfigurationManager.ConnectionStrings["dbx"].ConnectionString; SqlConnection con = new SqlConnection(connection); con.Open(); String sqlquery = "Use

我想选择还原路径,然后选择我的数据库备份文件,并通过单击Visual Studio 2019中的按钮进行还原

我有一些代码,下面我已经写了,但我得到一个错误

string connection = ConfigurationManager.ConnectionStrings["dbx"].ConnectionString;

SqlConnection con = new SqlConnection(connection);
con.Open();

String sqlquery = "Use Master ALTER DATABASE databasename SET OFFLINE WITH ROLLBACK IMMEDIATE RESTORE DATABASE FHMTailorDB FROM DISK ='" + RestoreTextBox.Text + "' ALTER DATABASE databasename SET ONLINE WITH ROLLBACK IMMEDIATE";

SqlCommand cmd = new SqlCommand(sqlquery, con);
cmd.ExecuteNonQuery();

con.Close();
con.Dispose();

lblError.Text = "Database Restore successfully";
错误:

System.Data.SqlClient.SqlException:'用户无权更改数据库'databasename',数据库不存在,或者数据库未处于允许访问检查的状态

ALTER DATABASE语句失败

文件F:\FHMTailorManager\FHMTailorDB.mdf的目录查找失败,操作系统错误2系统找不到指定的文件

无法将文件“FHMTailorDB”还原为“F:\FHMTailorManager\FHMTailorDB.mdf”。与MOVE一起使用可标识文件的有效位置

文件F:\FHMTailorManager\FHMTailorDB_log.ldf的目录查找失败,操作系统错误2系统找不到指定的文件

无法将文件“FHMTailorDB_log”还原为“F:\FHMTailorManager\FHMTailorDB_log.ldf”。与MOVE一起使用可标识文件的有效位置。 在规划RESTORE语句时发现了问题。以前的消息提供了详细信息

还原数据库正在异常终止

用户没有更改数据库“databasename”的权限,数据库不存在,或者数据库未处于允许访问检查的状态

ALTER DATABASE语句失败

已将数据库上下文更改为“主”

你有两个问题

连接字符串提供的第一个凭据没有足够的权限来完成使数据库脱机的任务

第二个问题是,您试图从客户端PC-a选择MDF/LDF文件,而服务器端的文件系统不知道或无权访问该文件夹

所以,我的答案是,你需要尝试完全不同的东西

尝试使用SMO。互联网上有一篇文章温和地向读者介绍SMO

本文指出了GitHub上的解决方案,它包含了您所需要的一切

它意味着一组用.NETC编写的自动化过程,用于备份、恢复等


那么,试试这个吧

我经常看到这种情况发生。不备份会导致权限更改。在权限不变的情况下,使用Deattach和attach。您需要管理员来修复权限。