Published on

October 18, 2014

Понимание сообщений об ошибках SQL Server: Msg 5058

Как администратор SQL Server, вы могли столкнуться с различными сообщениями об ошибках при работе с базой данных. Эти сообщения об ошибках предоставляют ценную информацию о внутренней работе SQL Server и могут помочь вам устранить проблемы. В этой статье мы рассмотрим одно из таких сообщений об ошибке – Msg 5058.

Msg 5058 – это сообщение об ошибке, которое указывает на то, что определенная опция не может быть установлена в конкретной базе данных. Давайте ближе рассмотрим пример сценария, чтобы лучше понять это сообщение об ошибке.

Недавно я получил электронное письмо от коллеги-администратора баз данных, который столкнулся с ошибкой Msg 5058 в одной из своих задач по обслуживанию. Изначально я не был знаком с этой ошибкой и решил провести дальнейшее исследование. Я использовал следующую команду для получения текста ошибки:

SELECT * FROM sys.messages WHERE message_id = 5058 AND language_id = 1033

Этот запрос вернул текст ошибки: “Option ‘%. *ls’ cannot be set in database ‘%.*ls’.” Хотя этот текст предоставил некоторую информацию, мне все равно нужно было больше контекста, чтобы понять конкретный сценарий, вызывающий эту ошибку.

Через несколько дней администратор баз данных ответил на мое письмо и поделился сообщением об ошибке, с которым он столкнулся: “Msg 5058, Level 16, State 1, Line 3 Option ‘RECOVERY’ cannot be set in database ‘tempdb’.” С этой информацией я смог предложить ему решение.

Корневая причина ошибки в этом случае заключалась в том, что администратор установил для всех баз данных модель восстановления FULL, включая базу данных TempDB. Однако модель восстановления TempDB не может быть изменена и всегда устанавливается в SIMPLE. Чтобы продемонстрировать это поведение, я выполнил следующую команду:

ALTER DATABASE [tempdb] SET RECOVERY FULL WITH NO_WAIT

Выполнение этой команды привело к тому же сообщению об ошибке: “Msg 5058, Level 16, State 1, Line 3 Option ‘RECOVERY’ cannot be set in database ‘tempdb’.” Даже если мы попытаемся установить модель восстановления BULK_LOGGED или SIMPLE, сообщение об ошибке остается тем же самым.

Еще один пример ошибки Msg 5058 возникает, когда мы пытаемся отключить базу данных master:

ALTER DATABASE MASTER SET OFFLINE

Выполнение этой команды также приводит к тому же сообщению об ошибке: “Msg 5058, Level 16, State 5, Line 1 Option ‘OFFLINE’ cannot be set in database ‘master’.” Здесь номер ошибки такой же, но состояние отличается, потому что мы изменяем другую настройку базы данных.

Столкновение с ошибками, подобными Msg 5058, не является редкостью в среде SQL Server. Важно понимать конкретное сообщение об ошибке и его последствия для эффективного устранения проблемы.

Вы когда-нибудь сталкивались с подобными ошибками в своей среде SQL Server? Дайте мне знать в комментариях, как вы с ними справились.

Спасибо за прочтение этой статьи. Следите за новыми статьями о сообщениях об ошибках SQL Server и советах по устранению неполадок.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.