Partilhar via


MSSQLSERVER_5120

Aplica-se a:SQL Server

Detalhes

Attribute 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".

Explanation

O SQL Server não pôde abrir um arquivo de banco de dados. O erro do sistema operacional fornecido na mensagem aponta para razões subjacentes mais específicas para a falha. Você geralmente pode ver esse erro junto com outros erros, como 17204 ou 17207.

Ação do utilizador

Diagnostique e corrija o erro do sistema operacional e, em seguida, tente novamente a operação. Há vários estados que podem ajudar a Microsoft a restringir a área no produto onde a área está ocorrendo.

O acesso é negado

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

  • Verifique as permissões que são definidas do arquivo examinando as propriedades do arquivo 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. Consulte Configurar permissões do sistema de arquivos para acesso ao mecanismo de banco de dados para obter mais detalhes. 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 sob a qual o serviço do SQL Server está sendo executado no momento. Pode utilizar o Gestor de Tarefas do Windows para obter estas informações. Procure o valor "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 (abertura de bancos de dados durante a inicialização do servidor, anexação de um banco de dados, restauração de banco de dados e assim por diante), a conta usada para representação e acesso ao arquivo de banco de dados pode variar. Analise o tópico Protegendo dados e arquivos de log para entender qual operação define qual permissão e para quais contas. Use uma ferramenta como o Monitor de Processo do Windows SysInternals para entender se o acesso ao arquivo está acontecendo no contexto de segurança da conta de inicialização do serviço de instância do SQL Server [ou SID de Serviço] 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ê notará as seguintes informações na ferramenta Process Monitor (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
    

Anexando arquivos que residem em um armazenamento conectado à rede

Se não for possível anexar novamente um banco de dados que reside no armazenamento conectado à rede, uma mensagem como essa 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 reanexar o banco de dados, ocorre uma falha devido a permissões de compartilhamento limitadas.

Para resolver, siga estes passos:

  1. Use a opção de inicialização -T para iniciar o SQL Server. Use esta opção de inicialização para ativar o sinalizador de rastreamento 1802 no SQL Server Configuration Manager (consulte Definir sinalizadores de rastreamento com DBCC TRACEON para obter informações sobre o 1802). Para obter mais informações sobre como alterar os parâmetros de inicialização, consulte 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 anexar novamente o banco de dados.

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