繁体   English   中英

SQL Server备份还原问题?

[英]SQL Server backup restore issues?

好的,所以我遇到了一些问题 - 我在SQL Server上执行了一些代码,并没有意识到我没有选择WHERE位。 当然,当我看到"608 rows affected"而非"1 row affected" ,我吓坏了一下。

幸运的是,我保存了备份,但出于某种原因,我遇到了一些问题。 现在,我把服务器关闭了,所以我知道它没有被任何人使用,但它给了我以下错误

“服务器'myserver'恢复失败。

System.Data.sqlclient.sqlerror:无法获取独占访问权限,因为数据库正在使用中。 (Microsoft.SqlServer.Smo)”

我看到了我应该使用的东西

Alter Database Databases
SET SINGLE_USER WITH ROLLBACK IMMEDIATE

RESTORE DATABASE PRODUCT
FROM DISK = ''

但我对这段代码有三个保留意见。 首先,我完全不确定如何重新打开multi_user。 其次,我不知道程序存储备份的位置。 第三,这个SQL有点高于我的头 - 老实说,我对这门语言比较新,所以我不确定这会对事情产生什么影响。

有人对我的烦恼有任何答案吗?

我可能会建议您不要从备份中覆盖现有数据库,而是使用不同的数据库名称来恢复备份...这样您就可以并排使用当前和以前的数据库。

然后,您只需编写一个更新语句即可从该特定表中恢复数据,而不是重置整个数据库。

编辑:细节取决于您的环境,但恢复将看起来像这样:

restore database PRODUCT_OLD
from disk='C:\PRODUCT.bak'
with
    move 'PRODUCT_Data' to 'C:\PRODUCT_OLD_Data.MDF',
    move 'PRODUCT_Log' to 'C:\PRODUCT_OLD_Log.LDF'

然后更新声明也将基于您的特定表...

在数据库上点击任务 - > takeoffline ,当它成功做同样的事情,但把它Bring Online然后尝试恢复你的数据库

将数据库设置为单个用户是正确的。 当您完成修复后,您将执行此操作

alter database YourDb
set multi_user

至于.bak文件所在的位置,您必须在恢复之前找到它。

害怕。

好的,有些事要检查:

  1. 确保您是唯一连接到服务器的人。
  2. 确保没有其他应用程序,Web服务器,应用程序服务器等与您的数据库保持连接。
  3. 确保您的SQL管理器没有打开数据库中的表或其他对象的窗口。

那么你应该能够用单个用户的东西进行恢复。

转到活动监视器,查看用户是否仍然登录,然后使用相应的数据库终止该用户的进程。 然后继续恢复备份

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM