Не удалось получить монопольный доступ так как база данных используется
Перейти к содержимому

Не удалось получить монопольный доступ так как база данных используется

  • автор:

Не удалось получить монопольный доступ так как база данных используется

Пытаюсь восстановить базу из bak-файла, такая ошибка

ЗАГОЛОВОК: Microsoft SQL Server Management Studio
——————————

Ошибка восстановления базы данных «test». (Microsoft.SqlServer.Management.RelationalEngineTasks)

System.Data.SqlClient.SqlError: Не удалось получить монопольный доступ, так как база данных используется. (Microsoft.SqlServer.SmoExtended)

Выставил такие параметры

Ставил галку with_replace, отсоединял базу — не помогло

В базе никто не сидит, никакие процессы не крутятся. Я один ее использовал, как тестовую копию. Что не правильно делаю?

Решено перевести БД в монопольный режим

Здравствуйте! Как восстановить БД SQL server из bak файла? Пишет что не удается восстановить так как БД не в монопольном режиме..

— -Подумал и добавил — —

При восстановлении базы вот такая ошибка:

ЗАГОЛОВОК: Microsoft SQL Server Management Studio
——————————

Ошибка восстановления базы данных «MGMT_DB». (Microsoft.SqlServer.Management.RelationalEngineTa sks)

System.Data.SqlClient.SqlError: Не удалось получить монопольный доступ, так как база данных используется. (Microsoft.SqlServer.SmoExtended)

Ошибка при выполнении задания по восстановлению MSSQL

Всем привет. Записал скрипт через MS SQL для восстановления базы из бекапа, создал задание для выполнения по расписанию но периодически задание не выполняется. Полный текст ошибки:

Сообщение
Выполняется от имени пользователя: MEBELRADOM\rdm_sqldev.Не удалось получить монопольный доступ, так как база данных используется. [SQLSTATE 42000] (Ошибка 3101) RESTORE DATABASE прервано с ошибкой. [SQLSTATE 42000] (Ошибка 3013). Шаг завершился с ошибкой.

ПО:
MS SQL Server 2016
SQL Server Management Studio 19

ниже скрины параметров при записи скрипта и настройки задания (но там я только выставил расписание и прикрепил скрипт)

Если невозможно записать такой скрипт который автоматически закрывает все сессии перед запуском то возможно ли настроить удаление всех сессий по расписанию через консоль администратора 1С или сам MSSQL?

Не удалось получить монопольный доступ так как база данных используется

Профиль
Группа: Awaiting Authorisation
Сообщений: 42
Регистрация: 24.8.2011

Репутация: нет
Всего: нет

Доброго времени суток!
Тема поднималась на этом форуме, но для себя не нашел ответа. (возможно плохо искал, тогда прошу простить меня).

1. Раз в сутки создавать backup БД.
2. По необходимости восстанавливать из backup’а.

1. В sql server management studio создал задачу с кодом:

Код
BACKUP DATABASE [Test] TO DISK=’C:\Backup\SQL_Test.bak’

Результат: по расписанию создаётся bak.

2. Создал приложение в Builder по кнопке в ADOQuery выполняется запрос:

Код
RESTORE DATABASE [Test] FROM DISK = ‘C:\\Backup\\SQL_Test.bak’

Результат: «Не удалось получить монопольный доступ, т.к. БД используестся»

Я так понял, мне надо отключать пользователей от БД.

Вопрос: как мне запросом из приложения получить монопольный доступ, а после restore восстановить все коннекшны?

Дата 1.9.2011, 14:04 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Модератор
Сообщений: 20569
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 453

Цитата
The system administrator restoring the database backup must be the only person currently using the database to be restored.

Добавлено через 3 минуты и 37 секунд

Цитата(VitalyP @ 1.9.2011, 11:34 )
как мне запросом из приложения получить монопольный доступ

Разорвать все соединения. Можно принудительно и жёстко — выводом базы в оффлайн или даже детачем. Всё равно что бы там не было на коннектах — всё похерится.

Цитата(VitalyP @ 1.9.2011, 11:34 )
после restore восстановить все коннекшны?

Это ещё нахрена? никак.

О(б)суждение моих действий — в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция — Администрация форума.

Дата 5.9.2011, 09:08 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Awaiting Authorisation
Сообщений: 42
Регистрация: 24.8.2011

Репутация: нет
Всего: нет

Цитата(Akina @ 1.9.2011, 14:04 )
Разорвать все соединения. Можно принудительно и жёстко — выводом базы в оффлайн или даже детачем.

Подскажите пожалуйста код запроса для этого.
Я так понимаю, его надо выполнить перед:

Код
RESTORE DATABASE [Test] FROM DISK = ‘C:\\Backup\\SQL_Test.bak’
Цитата(Akina @ 1.9.2011, 14:04 )
Это ещё нахрена? никак.

Да, Вы правы. Не подумал.

Дата 5.9.2011, 09:13 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Модератор
Сообщений: 20569
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 453

Цитата(VitalyP @ 5.9.2011, 10:08 )
Подскажите пожалуйста код запроса для этого.

Не поверите. DETACH DATABASE.

О(б)суждение моих действий — в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция — Администрация форума.

Дата 5.9.2011, 15:15 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Awaiting Authorisation
Сообщений: 42
Регистрация: 24.8.2011

Репутация: нет
Всего: нет

Сделал вот так:

Код
sp_detach_db @dbname=’Test’

Теперь мои приложения и Management Studio говорит, что такой БД не существует.
Подскажите как это исправить.

Дата 5.9.2011, 15:26 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Модератор
Сообщений: 20569
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 453

Ну наверное тепреь присоединить её обратно — но уже в режиме монопольного доступа. хотя запросто найдётся сволочь, которая успеет прицепиться к базе раньше. Лучше не отклеивать базу, а вывести её в оффлайн — тогда управление сохранится, а клиенты отлетят.

О(б)суждение моих действий — в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция — Администрация форума.

Дата 6.9.2011, 13:45 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Awaiting Authorisation
Сообщений: 42
Регистрация: 24.8.2011

Репутация: нет
Всего: нет

Цитата(Akina @ 5.9.2011, 15:26 )
а вывести её в оффлайн

А то последние попытки отключения заканчиваются ошибкой: «Невозможно отключить. база данных ‘Test’ используется. «

И ещё, по поводу восстановления:

RESTORE DATABASE [Test] FROM DISK = ‘C:\\Backup\\SQL_Test.bak’ WITH REPLACE

Это правильный запрос для восстановления?

Все получилось! Спасибо ещё раз!

Код
sp_detach_db @dbname=’Test’

Подключить БД:

Код
sp_attach_db @dbname=’Test’, @filename1=’C:\\PathToDB\\Test.mdf’

Восстановить БД из *.bak:

Код
RESTORE DATABASE [Test] FROM DISK = ‘C:\\Backup\\SQL_Test.bak’ WITH REPLACE

Это сообщение отредактировал(а) VitalyP — 6.9.2011, 13:50

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *