Причина этой проблемы очевидна (подключения к базе данных в настоящее время открыты/активны), но используйте следующее (погуглите, чтобы вы это поняли), и все будет в порядке:
Alter Database YOURDB
SET SINGLE_USER With ROLLBACK IMMEDIATE
GO
Очевидно, замените YOURDDB
на имя вашей базы данных и запустите его для главной БД.
О, и на всякий случай, если вы «застряли» в однопользовательском режиме, это отменит его:
Alter Database YOURDB
SET MULTI_USER With ROLLBACK IMMEDIATE
GO
Надеюсь это поможет.
РЕДАКТИРОВАТЬ:
Вы также можете подписаться на эту, чтобы увидеть, откуда идут соединения, и другую информацию:
Я тестировал это, когда работали службы, которые повторно подключались к базе данных. Я обнаружил, что вам нужно установить однопользовательский режим, а затем запустить sp_who2, чтобы увидеть, откуда исходит одно соединение, и отметить SPID. Вы можете запустить команду kill для этого SPID и восстановить в одной и той же транзакции, и она должна пройти. Вот последовательность, которую я использовал:
USE MASTER ALTER DATABASE NAME DATABASENAME SET SINGLE_USER WITH ROLLBACK IMMEDIATE GO
-Это позволит сделать только одно подключение к базе данных. -Выполните следующую команду, чтобы увидеть, откуда поступают какие-либо повторяющиеся подключения к базе данных.
EXEC SP_WHO2
-Проверьте этот список, просмотрев столбец DBName. Если база данных указана в списке, проверьте столбцы ProgramName и HostName, чтобы узнать, кто пытается подключиться. -Если это не служба или другое приложение, которое может автоматически переподключиться и может быть закрыто, запишите номер в столбце SPID, чтобы разорвать соединение, и немедленно начните резервное копирование. Замените SPID ниже только числом.
KILL SPID RESTORE DATABASE DATABASENAME FROM DISK = 'X:\PATHTO\BACKUP.BAK' GO
-Если это завершится успешно, мы можем вернуть вновь восстановленную базу данных в многопользовательский режим.
ALTER DATABASE DATABASENAME SET MULTI_USER WITH ROLLBACK IMMEDIATE GO
person
Dave
schedule
28.10.2010