Установка базы данных из однопользовательского режима в многопользовательский
мне нужна помощь с созданием базы данных, которая была восстановлена в SINGLE_USER режим MULTI_USER. Каждый раз, когда я бегу
ALTER DATABASE BARDABARD
SET MULTI_USER;
GO
я получаю эту ошибку:
В настоящее время невозможно внести изменения в состояние или параметры базы данных "BARDABARD".
база данных находится в однопользовательском режиме, и пользователь в данный момент подключен к нему.
Он должен быть в non -SINGLE_USER режим, чтобы установить его в другой режим, но я не могу установить базу данных в любом другой режим, пока это SINGLE_USER режим.
16 ответов:
"пользователь в настоящее время подключен к нему" может быть само окно SQL Server Management Studio. Попробуйте выбрать базу данных master и запустить
ALTERзапрос снова.
это сообщение об ошибке обычно означает, что есть другие процессы, связанные с БД. Попробуйте запустить это, чтобы увидеть, какие подключены:
exec sp_whoэто вернет вам процесс, а затем вы должны быть в состоянии запустить:
kill [XXX]где [xxx] находится
spidпроцесса, который вы пытаетесь убить.затем вы можете запустить выше заявление.
удачи.
вы можете добавить опцию отката изменения немедленно.
ALTER DATABASE BARDABARD SET MULTI_USER WITH ROLLBACK IMMEDIATE GO
SQL Server 2012:
щелкните правой кнопкой мыши на
DB > Properties > Options > [Scroll down] State > RestrictAccess > select Multi_userи нажмите кнопку ОК.вуаля!
У меня была такая же проблема, и она была исправлена следующими шагами-Ссылка: http://giladka8.blogspot.com.au/2011/11/database-is-in-single-user-mode-and.html
use master GO select d.name, d.dbid, spid, login_time, nt_domain, nt_username, loginame from sysprocesses p inner join sysdatabases d on p.dbid = d.dbid where d.name = 'dbname' GO kill 56 => kill the number in spid field GO exec sp_dboption 'dbname', 'single user', 'FALSE' GO
это отлично работало для меня.
Шаг 1. Щелкните правой кнопкой мыши на Database engine, нажмите на монитор активности и посмотрите, какой процесс имеет соединение. Убейте этого конкретного пользователя и немедленно выполните запрос.
Шаг 2.
USE [master]; GO ALTER DATABASE [YourDatabaseNameHere] SET MULTI_USER WITH NO_WAIT; GOи обновить базу данных.
на самом деле у меня была проблема, когда моя БД была в значительной степени заблокирована процессами и состоянием гонки с ними, к тому времени, когда я получил одну команду, выполненную обновленной, и они снова заблокировали ее... Я должен был выполнить следующие команды обратно в SSMS и получил меня в автономном режиме, и оттуда я сделал свое восстановление и вернулся в интернет просто отлично, два запроса, где:
первый РАН:
USE master GO DECLARE @kill varchar(8000) = ''; SELECT @kill = @kill + 'kill ' + CONVERT(varchar(5), spid) + ';' FROM master..sysprocesses WHERE dbid = db_id('<yourDbName>') EXEC(@kill);потом сразу после (во втором окне запроса):
USE master ALTER DATABASE <yourDbName> SET OFFLINE WITH ROLLBACK IMMEDIATEсделал то, что мне нужно, а затем вернул его в интернет. Спасибо всем, кто написал эти части для меня, чтобы объединить и решить мою проблему.
возможно, лучше всего войти на сервер напрямую, а не использовать SQL Management Studio
убедитесь, что учетная запись, которую вы входите как dbowner для базы данных, которую вы хотите установить в MULTI_USER. Войдите в систему как sa (используя проверку подлинности SQL server), если вы можете
если ваша база данных используется IIS, остановите веб-сайт и пул приложений, которые его используют - это может быть процесс, который подключен и блокирует вас от установки на MULTI_USER
USE MASTER GO -- see if any process are using *your* database specifically SELECT * from master.sys.sysprocesses WHERE spid > 50 -- process spids < 50 are reserved by SQL - we're not interested in these AND dbid=DB_ID ('YourDbNameHere') -- if so, kill the process: KILL n -- where 'n' is the 'spid' of the connected process as identified using query above -- setting database to read only isn't generally necessary, but may help: ALTER DATABASE YourDbNameHere SET READ_ONLY; GO -- should work now: ALTER DATABASE Appswiz SET MULTI_USER WITH ROLLBACK IMMEDIATEсм. вот если у вас все еще есть проблемы:
В КАЧЕСТВЕ ПОСЛЕДНЕЙ АЛЬТЕРНАТИВЫ - если вы пробовали все выше, и вы отчаиваетесь, вы можете попробовать остановить экземпляр SQL server и запустить его снова
приведенный ниже код работал для меня, когда я не знал конкретного SPID, который был использован для изменения в
singleuserрежим.use master GO select d.name, d.dbid, spid, login_time, nt_domain, nt_username, loginame from sysprocesses p inner join sysdatabases d on p.dbid = d.dbid where d.name = 'dbname' GO kill 52 -- kill the number in spid field GO exec sp_dboption 'dbname', 'single user', 'FALSE' GO
- пробовал все не получилось
- вход на этот сервер удаленно, как мы собираемся убить все соединения
- запустите приведенный ниже код более одного раза, пока он не вернется завершенным и больше не будет тестировать "процесс убийства"
- активируйте его снова, используя код ниже Ниже кода
использовать master GO объявить @sql как varchar (20), @spid как int
выберите @spid = min (spid) от мастера..sysprocesses где dbid = db_id ('DB_NAME') и spid != @ @ spid
while (@spid не null) begin печать 'процесс убийства' + cast (@spid as varchar)+'...' set @sql = 'kill' + cast(@spid as varchar) exec (@sql)
select @spid = min(spid) from master..sysprocesses where dbid = db_id('DB_NAME') and spid != @@spid endтогда вернуть его живым
ALTER DATABASE DB_NAME SET MULTI_USER; GO
Это отлично работало для меня
- сделать резервную копию
- создать новую базу данных и восстановить резервную копию это
- затем Свойства > параметры > [прокрутить] государство > ограничить доступ > выберите Multi_user и нажмите кнопку OK
- удалить старую базу данных
надеемся, что эта работа для всех Спасибо Рамеш Кумар
Я решил проблему легко
щелкните правой кнопкой мыши на имя базы данных переименовать его
после изменения щелкните правой кнопкой мыши на имя базы данных -- > свойства -- > параметры -- > перейти к нижней части прокрутки RestrictAccess (SINGLE_USER в MULTI_USER)
теперь снова вы можете переименовать базу данных как ваше старое имя.
в более чем 3 случаях, работающих с SQL Server 2014, у меня было преобразование базы данных в однопользовательский режим без каких-либо изменений. Это должно было произойти во время создания базы данных каким-то образом. Все вышеперечисленные методы никогда не работали, так как я всегда получал сообщение об ошибке, что база данных находится в однопользовательском режиме и не может быть подключена.
единственное, что мне нужно было сделать, это перезапустить службу Windows SQL Server. Что позволило мне подключиться к базе данных и сделать необходимые изменения или удалить базу данных и начать все сначала.
Если вы делаете резервную копию из существующей БД (A) на сервере, а затем попытаться восстановить его на другой БД (B) на сервере
затем вы должны убедиться, что B пути установлены правильно с
mdfиldfпути B

Comments