我想要选择还原路径,然后选择我的数据库备份文件,然后单击Visual 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语句失败。 由于操作系统错误2(系统找不到指定的文件),文件"F:\FHMTailorManager\FHMTailorDB.mdf“的目录查找失败。 文件“FHMTailorDB”无法还原到“F:\FHMTailorManager\FHMTailorDB.mdf”。使用“移动”标识文件的有效位置。 由于操作系统错误2(系统找不到指定的文件),文件"F:\FHMTailorManager\FHMTailorDB_log.ldf“的目录查找失败。 文件'FHMTailorDB_log‘不能还原到'F:\FHMTailorManager\FHMTailorDB_log.ldf’。使用“移动”标识文件的有效位置。在规划RESTORE语句时发现了问题。以前的消息提供了详细信息。 还原数据库正在异常终止。 用户没有更改数据库“数据库名称”的权限,数据库不存在,或者数据库处于允许访问检查的状态。 ALTER语句失败。 将数据库上下文更改为“主”。
发布于 2019-10-02 18:43:22
你有两个问题
第一个是您的连接字符串提供的凭据,它没有足够的权限来完成将数据库脱机的任务。
第二个问题是,您试图从客户端PC-a和服务器端的文件系统中选择MDF/LDF文件,不知道也没有权限访问该文件夹。
所以,我的回答是,你需要尝试完全不同的东西。
试着用SMO。在互联网上有一篇文章温和地向读者介绍SMO。
本文指出了GitHub上的解决方案,它包含了所需的一切。
它意味着一组用.NET ( C# )编写的自动化过程,用于备份、恢复等。
所以,试试这个用Server管理对象框架编程Server
https://stackoverflow.com/questions/58205771
复制相似问题