SQL deadlocking..в однопользовательском режиме

пара баз данных произвела ошибку сегодня утром во время работы в однопользовательском режиме. Из-за следующей ошибки я ничего не могу сделать :(

Msg 1205, Level 13, State 68, Line 1
Transaction (Process ID 62) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

Я получаю эту ошибку при попытке следующего (используя базу данных Master в качестве администратора Sys):

ALTER DATABASE dbname
SET MULTI_USER;
GO 

ради этого я попытался перезапустить SQL Server, я попытался убить любые процессы, и я даже попытался сбросить одного пользователя сам:

ALTER DATABASE dbname
SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO

работа, которая была запуск был разработан, чтобы скопировать базу данных и поместить ее в однопользовательский режим немедленно, чтобы попытаться сделать его быстрее.

в любом случае я могу снять замки?

2 ответов


была та же проблема. Это сработало для меня:

set deadlock_priority high; -- could also try "10" instead of "high" (5)
alter database dbname set multi_user; -- can also add "with rollback immediate"

из идей/объяснение:

http://myadventuresincoding.wordpress.com/2014/03/06...

http://www.sqlservercentral.com/blogs/pearlknows/2014/04/07/...


хорошо, я отвечу сам.

Я должен был использовать следующие:

sp_who

который отображал детали текущих подключенных пользователей и сеансов, я тогда вспомнил о мониторе активности, который показывает тот же самый материал...В любом случае, это привело меня от моего стола к какому-то жукеру, который поддерживал связь с базой данных против моей воли...

в любом случае, как только я выключил компьютер (отключив его...заслужил это), я мог бы запустить SQL, чтобы изменить его в MULTI_USER режим (с помощью пользователя системного администратора):

USE Master
GO

ALTER DATABASE dbname
SET MULTI_USER;
GO

FYI для тех, кто заботится, это можно использовать, чтобы сразу установить DB в SINGLE_USER:

ALTER DATABASE dbname
SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO

дополнительные сведения, если вы знаете идентификатор процесса, вы можете использовать kill pid:

kill 62

Bare в виду SSMS создает процесс для вашего пользователя, а также, в моем случае это было отклонено из-за другого.

EDIT: в соответствии с рекомендациями Бобби мы можем использовать:

sp_Who2 

это может показать нам какой процесс блокируется другим процессом.