M.A*_*Ali 3 sql-server database-restore database-backups sql-server-2008
今天我试图通过已经存在的数据库恢复数据库,我只需右键单击SSMS中的数据库 - >任务 - >脱机,这样我就可以恢复数据库了.
一个小的弹出窗口出现并显示Query Executing.....了一段时间然后抛出一个错误说Database is in use cannot take it offline.我从中收集了一些与该数据库的活动连接,因此我尝试执行以下查询
USE master
GO
ALTER DATABASE My_DatabaseName
SET OFFLINE WITH ROLLBACK IMMEDIATE
GO
Run Code Online (Sandbox Code Playgroud)
此时SSMS再次出现Query Executing.....一段时间,然后抛出以下错误:
Msg 5061, Level 16, State 1, Line 1
ALTER DATABASE failed because a lock could not be placed on database 'My_DatabaseName'. Try again later.
Msg 5069, Level 16, State 1, Line 1
ALTER DATABASE statement failed.
Run Code Online (Sandbox Code Playgroud)
在此之后,我无法通过SSMS连接到数据库.当我尝试使用SSMS脱机时,它抛出一个错误说:
Database is in Transition. Try later .....
Run Code Online (Sandbox Code Playgroud)
在这一点上,我根本无法触摸数据库我尝试过的任何东西返回相同的错误消息Database is in Transition.
我上google阅读了一些问题,其中人们遇到了类似的问题,他们建议关闭SSMS并再次打开它,所以我和我因为它只是一个开发服务器我只是使用SSMS删除数据库并在新数据库上恢复.
我的问题是什么可能导致这个?以及如何避免这种情况在将来发生,如果我将来在同样的情况下结束是否有任何其他方法来修复它,然后删除整个数据库???
谢谢
小智 7
看一下这个.这将帮助您释放锁定.效果很好!https://dba.stackexchange.com/questions/57432/database-is-in-transition-error
用这个
select
l.resource_type,
l.request_mode,
l.request_status,
l.request_session_id,
r.command,
r.status,
r.blocking_session_id,
r.wait_type,
r.wait_time,
r.wait_resource,
request_sql_text = st.text,
s.program_name,
most_recent_sql_text = stc.text
from sys.dm_tran_locks l
left join sys.dm_exec_requests r
on l.request_session_id = r.session_id
left join sys.dm_exec_sessions s
on l.request_session_id = s.session_id
left join sys.dm_exec_connections c
on s.session_id = c.session_id
outer apply sys.dm_exec_sql_text(r.sql_handle) st
outer apply sys.dm_exec_sql_text(c.most_recent_sql_handle) stc
where l.resource_database_id = db_id('<YourDatabase>')
order by request_session_id;
Run Code Online (Sandbox Code Playgroud)
然后
为每个进程编号
kill <processnumber>
Run Code Online (Sandbox Code Playgroud)
看看这篇文章。
http://oostdam.info/index.php/sectie-blog/289-sql-error-952-8ways-to-solve-it
我大部分时间都在使用 TSQL,所以我还没有遇到这个问题。
SQL Server 数据库是什么版本,补丁级别是什么?
下次,执行 usp_who2 以查看正在运行的线程。
http://craftydba.com/wp-content/uploads/2011/09/usp-who2.txt
由于输出在表中,因此您可以按数据库进行搜索。
在尝试 ALTER 语句之前杀死所有使用数据库的线程。
大约 6 个月前的一个晚上,由于应用程序不断地访问它,我让 2000 个数据库脱机。我最终禁用了用户帐户,所以我不会再登录了。
| 归档时间: |
|
| 查看次数: |
19669 次 |
| 最近记录: |