Авамар: Відновлення SQL невдало з «База даних вже відкрита і може мати лише одного користувача одночасно»
Summary: Стаття бази знань (KB), яка пропонує рішення проблеми невдачі відновлення 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
Щоб перевести базу даних у режим для одного користувача:
-
В Object Explorer підключіться до екземпляра SQL Server Database Engine, а потім розгорніть цей екземпляр.
-
Натисніть правою кнопкою миші по базі даних, щоб змінити, а потім натисніть «Властивості».
-
У діалоговому вікні «Властивості бази даних» натисніть на сторінку «Опції».
-
У опції «Обмежений доступ» виберіть «Одинокий».
-
Якщо інші користувачі підключені до бази даних, з'являється повідомлення Open Connections. Щоб змінити властивість і закрити всі інші з'єднання, натисніть «Так».
Використання 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-базу даних до початкового місця.