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;执行最后的步骤以使数据库可用(回滚未提交的事务等). (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 复制SqlServer数据库的方法
- sql-server – 批量插入w/.fmt文件:操作系统错误代码(null
- sql-server – 插入Excel“链接服务器”时SQL Server,“无效
- sql-server-2008 – 如何使外键约束受信任?
- SQL Server 2000数据库的备份文件恢复到Sql2005的方法
- sql – 选择group by子句中的前n行
- Wix:是否有任何wix命令来创建数据库用户?
- SQL Server使用一个语句块批量插入多条记录的三种方法
- SQL Server 常用的几个数据类型
- sql – #1146 – 表’phpmyadmin.pma__tracking’不存在
