Помилка відновлення SQL з повідомленням "База даних вже відкрита і може мати лише одного користувача одночасно"
Summary: Стаття в базі знань (КБ), яка надає рішення помилки відновлення бази даних SQL під час доступу користувачів до бази даних.
Symptoms
Не вдається відновити базу даних SQL до вихідного розташування з помилками, подібними до наступного відображення:
avsql Error <40258>: sqlconnectimpl_smo::get_database_data_names Microsoft.SqlServer.Management.Common.ExecutionFailureException: An exception occurred while executing a Transact-SQL statement or batch. ---> System.Data.SqlClient.SqlException: Database 'Avamar1' is already open and can only have one user at a time.
Cause
Один або кілька користувачів або підключень отримують доступ до бази даних, яка відновлюється. Вихідну базу даних не можна перезаписати, якщо до бази даних мають доступ користувачі або підключення.
Resolution
Змініть статус бази даних з Багатокористувацького на Однокористувацький режим.
Використання SQL Server Management Studio
Щоб перевести базу даних в однокористувацький режим:
-
У Провіднику об'єктів підключіться до екземпляра обробника баз даних SQL Server, а потім розгорніть цей екземпляр.
-
Клацніть правою кнопкою миші базу даних, яку потрібно змінити, і виберіть пункт Властивості.
-
У діалоговому вікні «Властивості бази даних» відкрийте сторінку «Параметри».
-
З опції «Обмежити доступ» виберіть «Одиночний».
-
Якщо до бази даних підключено інших користувачів, з'являється повідомлення «Відкриті підключення». Щоб змінити властивість і закрити всі інші підключення, натисніть кнопку Так.
Використання Transact-SQL
Щоб перевести базу даних в однокористувацький режим:
-
Підключіться до движка баз даних.
-
На панелі Стандартна виберіть пункт Новий запит.
-
Скопіюйте та вставте наступний приклад у вікно запиту та натисніть кнопку «Виконати». Цей приклад встановлює для бази даних значення
SINGLE_USERдля отримання ексклюзивного доступу. Потім у прикладі стан бази даних Avamar1 встановлюється якREAD_ONLYі повертає доступ до бази даних всім користувачам. Опція розірванняWITH ROLLBACK IMMEDIATEзазначена в першомуALTER DATABASEзаява. Це призводить до того, що всі незавершені транзакції відкочуються, а будь-які інші з'єднання з базою даних Avamar1 негайно відключаються.
SQLCopy
USE master; GO ALTER DATABASE Avamar1 SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO ALTER DATABASE Avamar1 SET READ_ONLY; GO ALTER DATABASE Avamar1 SET MULTI_USER; GO
Посилання:
https://docs.microsoft.com/en-us/sql/relational-databases/databases/set-a-database-to-single-user-mode?view=sql-server-2017Як тільки це буде зроблено, повторіть спробу відновлення бази даних SQL у вихідному місці.