У нас есть тестовая система с SQL Server Express 2016 и SSMS.

У нас была единственная база данных в этой системе, которая использовалась для тестирования нашего продукта.

Это сработало в пятницу и больше не работает сегодня.

Мы восстановили резервную копию в новую базу данных, и тесты сейчас работают над этим, но мы хотим выяснить, почему старая перестала работать.

Я получил доступ к экземпляру как администратор сервера базы данных, который имел доступ к базе данных в пятницу. Затем я попытался получить доступ к базе данных через SSMS. Сообщение об ошибке:

The database "producttest" is not accessible. (ObjectExplorer)

Я пытался открыть свойства базы данных через SSMS. Сообщение об ошибке было сначала:

Property MaxDop is not available for Database 'producttest'. This property may not exist for this object, or may not be retrievable due to insufficient access rights. (Microsoft.SqlServer.Smo)

и теперь свойство изменилось:

Property TargetRecoveryTime is not available for Database 'producttest'. This property may not exist for this object, or may not be retrievable due to insufficient access rights. (Microsoft.SqlServer.Smo)

И я открыл новое окно запроса и отправил команду USE producttest . Сообщение об ошибке:

Message 916, Level 14, State 1, Line 1
The server principal "DOMAIN\Administrator" is not able to access the database "producttest" under the current security context.

Я сделал резервную копию файлов базы данных и попытался запустить DBCC CHECKDB producttest , но сообщение

Message 102, Level 15, State 1, Line 1
Incorrect syntax near "producttest"

В чем может быть проблема; что я могу попробовать сейчас?

1 ответ1

0

На основании небольших данных, которыми вы поделились, это может быть вызвано рядом причин.

Вы проверяли, что база данных все еще существует на сервере? Мое первое впечатление было бы это было удалено / удалено. SSMS, если она была оставлена открытой, не обновляет представление в обозревателе объектов.

Если он все еще там, то он мог быть отключен. Вы можете проверить состояние БД, используя методы, перечисленные здесь:https://www.mssqltips.com/sqlservertip/1477/methods-to-determine-the-status-of-a-sql-server-database/

и здесь: https://stackoverflow.com/questions/31866585/how-to-bring-back-offline-database-in-sql-server-2008

Дополнительные пункты для проверки: входите ли вы на сервер SQL с использованием проверки подлинности SQL? И вы входите в систему как sa? Если нет и нет, вам, возможно, придется войти в систему как sa и изменить владельца базы данных на sa .

Также было бы неплохо проверить, не был ли рост файла не остановлен из-за ограничений файла. Но это может быть невозможно сделать просто, поскольку вы не можете получить доступ к свойствам БД. Используйте TSQL:

alter DATABASE [producttest]
modify file (name = 'producttest', maxsize = 128MB)
GO

После прочтения вашего комментария я думаю об ограничениях доступа.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .