SQL Server备份还原问题?
好的,所以我有一点问题-我在我的SQL Server上执行了一些代码,但没有意识到我没有选择WHERE位。当然,当我看到SQL Server备份还原问题?,sql,sql-server-2005,Sql,Sql Server 2005,好的,所以我有一点问题-我在我的SQL Server上执行了一些代码,但没有意识到我没有选择WHERE位。当然,当我看到“608行受影响”而不是“1行受影响”时,我有点害怕 幸运的是,我保存了一个备份,但由于某些原因,我遇到了一些问题。现在,我关闭了服务器,所以我知道它没有被任何人使用,但它给了我以下错误 “服务器“myserver”的还原失败 System.Data.sqlclient.sqlerror:无法获得独占访问权限 因为数据库正在使用。(Microsoft.SqlServer.Smo
“608行受影响”
而不是“1行受影响”
时,我有点害怕
幸运的是,我保存了一个备份,但由于某些原因,我遇到了一些问题。现在,我关闭了服务器,所以我知道它没有被任何人使用,但它给了我以下错误
“服务器“myserver”的还原失败
System.Data.sqlclient.sqlerror:无法获得独占访问权限
因为数据库正在使用。(Microsoft.SqlServer.Smo)
我看到了一些我应该使用的东西
Alter Database Databases
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
RESTORE DATABASE PRODUCT
FROM DISK = ''
但是我对这个代码有三点保留。首先,我完全不确定如何重新启用multi_用户。其次,我不知道程序在哪里存储备份。第三,这个SQL有点超出我的理解力——老实说,我对这门语言还比较陌生,所以我不确定这会对事情产生什么影响
有人能回答我的问题吗?吓人
好的,有些事情需要检查:
然后您应该能够在不使用单用户的情况下执行恢复。将数据库设置为单用户是正确的。完成恢复后,您将执行此操作
alter database YourDb
set multi_user
至于.bak文件所在的位置,您必须在恢复之前找到它。我建议您使用不同的数据库名称恢复备份,而不是从备份中覆盖现有数据库。。。这样,您就可以同时拥有当前数据库和以前的数据库 然后,您可以简单地编写一条update语句,仅从一个特定表恢复数据,而不是重置整个数据库 编辑:具体情况取决于您的环境,但恢复过程如下所示:
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'
然后update语句也将基于您的特定表…转到活动监视器,查看用户是否仍在登录,然后使用相应的数据库终止该用户的进程。
然后继续恢复备份在数据库上单击任务->Takeffline,当备份成功时,执行相同的操作,但将备份置于联机状态
然后尝试恢复您的数据库我实际上关闭了服务器本身,这样除了我自己,没有人可以连接到它,唯一应该连接到它的程序是server management studio程序,所以我认为我在这方面做得很好。有没有关于如何做的示例?+1,这是一种更好的方法-不要删除剩下的唯一好数据,从而使问题更加复杂。虽然这是一个更好的答案,但我最终恢复了整个数据库,因为我还需要修复另外两个错误,备份捕获了所有错误。不过,谢谢!这些似乎对我有帮助。谢谢你的主意。尽管如此,离线似乎需要很长时间。