繁体   English   中英

尝试通过T-SQL脚本还原。 由于正在使用数据库,因此无法获得独占访问

[英]Trying to restore via t-sql script. Exclusive access could not be obtained because the database is in use

我正在尝试将生产数据库的备份还原到开发服务器。 当我运行以下以前有效的脚本时:

RESTORE DATABASE M2MDATA01 FROM DISK = 'C:\Install\SQLBackup\M2MDATA01.SQLBackup' WITH REPLACE,
   MOVE 'M2MDATA01' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\M2MData01.mdf',
   MOVE 'M2MDATA01_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\M2MData01.ldf'

我收到以下错误:

    Error   12/21/2009 9:06:09 AM   0:00:00.000 SQL Server Database Error: Exclusive access could not be obtained because the database is in use.   5   0

但是,我不知道怎么可能使用它。 我怎么知道?

检查连接的东西(简单的方法)

SELECT * FROM sys.sysprocesses S WHERE S.dbid = DB_ID('M2MDATA01')

注意: 不能使用dmvs模拟sysprocesses

编辑,也检查锁

SELECT * FROM sys.dm_tran_locks L WHERE L.resource_type = 'DATABASE' AND L.resource_database_id = DB_ID('M2MDATA01')

在SQL Server Management Studio中,转到“管理=>活动监视器”。 这将向您显示连接到所有数据库的所有进程,并允许您杀死这些进程(仅推荐作为最后的选择)。

Profiler是一种选择。

在Sql Server Management Studio中,选择“工具” |“ Sql Server Profiler”。

  1. 连接到正在使用的数据库所在的服务器实例。
  2. 切换到事件选择选项卡
  3. 选中标有“显示所有列”的网格下方的复选框
  4. 在网格中找到DatabaseName列,然后检查整个列。
  5. (可选)按“列过滤器”按钮,然后过滤到要使用的数据库名称。

这至少应该告诉您是否正在使用相关数据库。

此处最简单的解决方案是删除数据库,然后单击“确定”,然后选中“关闭现有连接”复选框。 然后还原将正常工作。 只是DEV对吗? :}

如果要还原数据库,您真的在乎谁连接了吗? 或者这些连接正在做什么? 我不会。 只需将数据库设置为单用户模式即可“踢出所有人”,然后还原数据库。

USER master
GO

ALTER DATABASE M2MDATA01 
SET SINGLE_USER
--This rolls back all uncommitted transactions in the db.
WITH ROLLBACK IMMEDIATE
GO

RESTORE DATABASE M2MDATA01 
FROM DISK = 'C:\Install\SQLBackup\M2MDATA01.SQLBackup' 
WITH REPLACE,
MOVE 'M2MDATA01' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\M2MData01.mdf',
MOVE 'M2MDATA01_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\M2MData01.ldf'
GO

现在,需要注意的另一项内容。 将数据库设置为单用户模式后,其他人可能会尝试连接到该数据库。 如果它们成功,您将无法继续进行还原。 这是一场比赛! 我的建议是一次运行所有三个语句。

暂无
暂无

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

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