MSSQLSERVER_5120

Применимо к:SQL Server

Сведения

Атрибут значение
Название продукта SQL Server
Идентификатор события 5120
Источник событий MSSQLSERVER
Компонент SQLEngine
Символическое имя DSK_FCB_FAILURE
Текст сообщения Ошибка таблицы: не удается открыть физический файл "%.*ls". Ошибка операционной системы %d: "%ls".

Пояснение

SQL Server не удалось открыть файл базы данных. Ошибка операционной системы, о которой говорится в сообщении, указывает на конкретные первопричины сбоя. Обычно эта ошибка возникает вместе с другими ошибками, такими как 17204 или 17207.

Действие пользователя

Определите причину, исправьте ошибку операционной системы, затем еще раз попытайтесь выполнить операцию. Есть несколько состояний, сведения о которых могут помочь корпорации Майкрософт уменьшить область изучения для определения ошибки.

Доступ запрещен

В случае возникновения ошибки операционной системы 5 (Access is Denied), рассмотрите следующие методы устранения:

  • Проверьте разрешения, заданные в файле, просмотрев свойства файла в проводнике Windows. SQL Server использует группы Windows для подготовки управления доступом к различным файлам. Убедитесь, что соответствующая группа (с именем SQLServerMSSQLUser$ComputerName$MSSQLSERVER или SQLServerMSSQLUser$ComputerName$InstanceName) имеет необходимые разрешения для файла базы данных, указанного в сообщении об ошибке. Дополнительные сведения см. в статье Настройка разрешений файловой системы для доступа к компоненту ядра СУБД. Убедитесь, что группа Windows фактически включает учетную запись запуска службы SQL Server или идентификатор безопасности службы.

  • Просмотрите учетную запись пользователя, в которой запущена служба SQL Server. Для получения этих сведений можно использовать диспетчер задач Windows. Найдите значение "Имя пользователя" для исполняемого файла "sqlservr.exe". Кроме того, если вы недавно изменили учетную запись службы SQL Server, знают, что поддерживаемый способ выполнения этой операции — использовать служебную программу SQL Server Configuration Manager .

  • В зависимости от типа операции — открытие баз данных во время запуска сервера, присоединение базы данных, восстановление базы данных и т. д. — учетная запись, используемая для олицетворения и получения доступа к файлу базы данных, может варьироваться. Сведения о том, какая операция позволяет задавать разрешения к каким учетным записям, см. в статье Защита данных и файлов журналов. Используйте такие средства, как Process Monitor из пакета Windows SysInternals, чтобы узнать, каким образом предоставляется доступ к файлу: в контексте безопасности учетной записи запуска службы экземпляра SQL Server или через олицетворенной учетной записи.

    Если SQL Server олицетворяет учетные данные пользователя, выполняющего операцию ALTER DATABASE или CREATE DATABASE, в средстве Process Monitor отобразятся следующие сведения (пример).

    Date & Time:      3/27/2010 8:26:08 PM
    Event Class:        File System
    Operation:          CreateFile
    Result:                ACCESS DENIED
    Path:                  C:\Program Files\Microsoft SQL Server\MSSQL13.SQL2016\MSSQL\DATA\attach_test.mdf
    TID:                   4288
    Duration:             0.0000366
    Desired Access:Generic Read/Write
    Disposition:        Open
    Options:            Synchronous IO Non-Alert, Non-Directory File, Open No Recall
    Attributes:          N
    ShareMode:       Read
    AllocationSize:   n/a
    Impersonating: DomainName\UserName
    

Подключение файлов, размещенных в запоминающем устройстве, подключаемом к сети

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

Msg 5120, Level 16, State 101, Line 1 Unable to open the physical file "\\servername\sharename\filename.mdf". Operating system error 5: (Access is denied.).

Эта проблема возникает, так как SQL Server сбрасывает разрешения файла при отключении базы данных. При попытке повторно подключить базу данных происходит сбой из-за ограниченных разрешений общего доступа.

Чтобы устранить эту проблему, сделайте следующее.

  1. Используйте параметр запуска -T для запуска SQL Server. Используйте этот параметр запуска, чтобы включить флаг трассировки 1802 в диспетчере конфигурации SQL Server (сведения о 1802 см. в разделе Флаги трассировки). Дополнительные сведения об изменении параметров запуска см. в разделе Параметры запуска службы ядра СУБД.

  2. Отключить базу данных можно с помощью приведенной ниже команды.

     exec sp_detach_db DatabaseName
     go 
    
  3. Восстановить подключение базы данных можно с помощью приведенной ниже команды.

    exec sp_attach_db DatabaseName, '\\Network-attached storage_Path\DatabaseMDFFile.mdf', '\\Network-attached storage_Path\DatabaseLDFFile.ldf'
    go