Kul*_*han 8 sql sql-server-2005
好的,所以我遇到了一些问题 - 我在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 = ''
Run Code Online (Sandbox Code Playgroud)
但我对这段代码有三个保留意见.首先,我完全不确定如何重新打开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'
Run Code Online (Sandbox Code Playgroud)
然后更新声明也将基于您的特定表...
小智 4
将数据库设置为单用户是正确的。完成恢复后,您将执行此操作
alter database YourDb
set multi_user
Run Code Online (Sandbox Code Playgroud)
至于 .bak 文件所在的位置,您必须在恢复之前找到它。