Compartilhar via


MSSQLSERVER_5120

Aplica-se a: SQL Server

Detalhes

Atributo Valor
Nome do produto SQL Server
ID do evento 5120
Origem do Evento MSSQLSERVER
Componente SQLEngine
Nome simbólico DSK_FCB_FAILURE
Texto da mensagem Erro de tabela: Não é possível abrir o arquivo físico "%.*ls". Erro no sistema operacional %d: “%ls”.

Explicação

O SQL Server não pôde abrir um arquivo de banco de dados. O erro do sistema operacional fornecido na mensagem aponta para os motivos subjacentes mais específicos da falha. Normalmente, você pode ver esse erro junto com outros, como 17204 ou 17207.

Ação do usuário

Faça o diagnóstico, corrija o erro e, em seguida, tente novamente a operação. Existem vários estados que podem ajudar a Microsoft a restringir a área de ocorrência no produto.

O acesso é negado

Se você receber o erro do sistema operacional Access is Denied = 5, considere estes métodos:

  • Verifique se as permissões estão definidas no arquivo examinando as propriedades dele no Windows Explorer. O SQL Server usa grupos do Windows para provisionar o Controle de Acesso nos vários recursos de arquivo. Verifique se o grupo apropriado [com nomes como SQLServerMSSQLUser$ComputerName$MSSQLSERVER ou SQLServerMSSQLUser$ComputerName$InstanceName] tem as permissões necessárias no arquivo de banco de dados mencionado na mensagem de erro. Para obter mais informações, confira Configurar permissões do sistema de arquivos para acesso ao Mecanismo de Banco de Dados. Verifique se o grupo do Windows realmente inclui a conta de inicialização do serviço SQL Server ou o SID do serviço.

  • Examine a conta de usuário na qual o serviço SQL Server está sendo executado no momento. Você pode usar o Gerenciador de Tarefas do Windows para obter essas informações. Procure o valor de "Nome de Usuário" para o executável "sqlservr.exe". Além disso, se você alterou recentemente a conta de serviço do SQL Server, saiba que a maneira com suporte para fazer essa operação é usar o utilitário SQL Server Configuration Manager .

  • Dependendo do tipo de operação, abrir bancos de dados durante a inicialização do servidor, anexar um banco de dados, restaurar o banco de dados etc., a conta usada para representação e acesso ao arquivo de banco de dados pode variar. Examine o tópico Proteger arquivos de log e dados para entender qual operação define qual permissão e de quais contas. Use uma ferramenta como Monitor do Processo do SysInternals do Windows para entender se o acesso ao arquivo está acontecendo no contexto de segurança da conta de inicialização do serviço (ou SID do serviço) da instância do SQL Server ou de uma conta representada.

    Se o SQL Server estiver representando as credenciais de usuário do logon que executa a operação ALTER DATABASE ou CREATE DATABASE, você observará as informações a seguir na ferramenta Monitor do Processo (um exemplo).

    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
    

Como anexar arquivos que residem em um NAS

Se você não puder anexar novamente um banco de dados que resida no NAS, uma mensagem como esta poderá ser registrada no log do aplicativo.

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.).

Esse problema ocorre porque o SQL Server redefine as permissões de arquivo quando o banco de dados é desanexado. Quando você tenta anexar novamente o banco de dados, ocorre uma falha devido a permissões de compartilhamento limitadas.

Para resolver o problema, siga estas etapas:

  1. Use a opção de inicialização -T para iniciar o SQL Server. Use essa opção de inicialização para ativar o sinalizador de rastreamento 1802 no SQL Server Configuration Manager (confira Sinalizadores de Rastreamento para obter informações sobre o 1802). Para obter mais informações sobre como alterar os parâmetros de inicialização, confira Opções de inicialização do serviço Mecanismo de Banco de Dados.

  2. Use o comando a seguir para desanexar o banco de dados.

     exec sp_detach_db DatabaseName
     go 
    
  3. Use o comando a seguir para reconectar o banco de dados.

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