sql-server – 无法在sql server中恢复数据库(single_user)
我正在尝试在我的sql server 2005 express版中恢复数据库.我知道要恢复数据库,我需要让它成为单个用户.我给这个命令让它成为单个用户
USE [master] ALTER DATABASE database_name SET SINGLE_USER WITH ROLLBACK IMMEDIATE 此命令正确执行,我甚至可以在此数据库的对象资源管理器中看到一个小图像,显示现在这是单用户. 现在我按照这些步骤尝试恢复数据库 但我仍然得到这个错误“因为数据库正在使用中无法获得独占访问权限(microsoft.sqlserver.smo).我错过了什么.我用google搜索它,所有网站都建议数据库需要在单个用户中模式,没有别的. 我没有尝试分离和附加数据库方法.我以前从未这样做过,想知道这样做是否安全. 编辑:谢谢你的答案.两个人都建议我回答相同,所以我选择了一个答案. 我甚至选择从选项覆盖现有数据库. 解决方法首先,最好备份和恢复而不是分离和附加.其次,你用来将数据库设置为SINGLE_USER的会话最有可能是当你尝试运行恢复时仍然拥有它的那个(因为你正在使用GUI,它在它自己的会话下连接所以它无法连接获得访问权限). 要么将还原作为文本命令,要么将查询窗口切换为首先使用其他数据库,例如master.或者您可以关闭查询窗口,使其不再连接. 您始终可以通过master.dbo.sysprocesses中的select *来查看连接的人员. 更新 假设您要还原的数据库已经存在,并且如果您在磁盘上有一个备份文件(其中没有多个备份)并且在还原完整备份后无需还原日志文件,则通过脚本进行还原是超级,超级简单: RESTORE DATABASE DBName FROM DISK = 'C:pathDBNameBackup.bak'; 学习这种语法将使您的生活更轻松,因为当您设置SINGLE_USER时,您已经处于连接的唯一会话中.另外,我发现键入restore命令比使用GUI更快,我喜欢控件.重复这一点最终会在你的脑海中巩固它,你不必再查找语法了. 恢复日志文件甚至都不困难.只需要记住一件简单的事情,WITH NORECOVERY: RESTORE DATABASE DBName FROM DISK = 'C:pathDBNameBackup.bak' WITH NORECOVERY; RESTORE LOG DBName FROM DISK = 'C:pathDBNameBackup1.log' WITH NORECOVERY; RESTORE LOG DBName FROM DISK = 'C:pathDBNameBackup2.log' WITH NORECOVERY; RESTORE LOG DBName FROM DISK = 'C:pathDBNameBackup3.log' WITH NORECOVERY; ... 4 5 6 7 and so on RESTORE LOG DBName FROM DISK = 'C:pathDBNameBackupX.log' WITH RECOVERY; 那里……你很容易恢复你的日志文件.您甚至可以使用WITH STOPAT恢复到准确的时间点!此外,如果您忘记并意外地使用NORECOVERY提交上一个日志恢复语句,那么您只需发出RESTORE DATABASE DBName WITH RECOVERY;执行最后的步骤以使数据库可用(回滚未提交的事务等). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- roseMirrorHA5.0 for WindowsServer2008R2配合sqlserver201
- sqlserver2008不能创建全文索引解决办法
- SqlServer 创建数据库 使用多个文件组和物理磁盘
- sql – 了解WHERE如何使用GROUP BY和Aggregation
- 数据库连接Delphi
- sql – 无需打开文件PowerShell即自动刷新Excel ODC连接和枢
- mysql索引必须了解的几个重要问题
- 使用OLE DB在SQL紧凑型服务器中显示表名的原始C代码
- sql-server – SQL Server – 如何确定索引是否未被使用?
- SQLserver 在同一个表中,把某字段值截取后复制到该表到另一