MSSQLSERVER_5120

Si applica a:SQL Server

Dettagli

Attributo Valore
Nome prodotto SQL Server
ID evento 5120
Origine evento MSSQLSERVER
Componente SQLEngine
Nome simbolico DSK_FCB_FAILURE
Testo del messaggio Errore di tabella: impossibile aprire il file fisico "%.*ls". Errore %d: "%ls" del sistema operativo.

Spiegazione

SQL Server non è riuscito ad aprire un file di database. L'errore del sistema operativo visualizzato nel messaggio indica motivi più specifici all'origine dell'errore. Questo errore può essere visualizzato insieme ad altri errori, ad esempio 17204 o 17207.

Azione utente

Trovare e correggere l'errore del sistema operativo, quindi provare di nuovo l'operazione. Diversi stati consentono a Microsoft di circoscrivere l'area del prodotto in cui si è verificato l'errore.

Accesso negato

Se si riceve l'errore del sistema operativo Access is Denied = 5, prendere in considerazione questi metodi:

  • Controllare le autorizzazioni impostate per il file esaminando le proprietà del file in Esplora risorse. SQL Server usa gruppi di Windows per effettuare il provisioning del controllo di accesso nelle varie risorse file. Verificare che il gruppo appropriato [con nomi come SQLServerMSSQLUser$ComputerName$MSSQLSERVER o SQLServerMSSQLUser$ComputerName$InstanceName] abbia le autorizzazioni necessarie per il file di database indicato nel messaggio di errore. Per altre informazioni, vedere Configurare le autorizzazioni del file system per l'accesso al motore di database. Assicurarsi che il gruppo di Windows includa effettivamente l'account di avvio del servizio SQL Server o il SID del servizio.

  • Esaminare l'account utente in cui è in esecuzione il servizio SQL Server. È possibile ottenere queste informazioni tramite Gestione attività di Windows. Cercare il valore "User Name" (Nome utente) nel file eseguibile "sqlservr.exe". Inoltre, se di recente è stato modificato l'account del servizio SQL Server, tenere presente che il modo supportato per eseguire questa operazione consiste nell'usare l'utilità Gestione configurazione SQL Server.

  • A seconda del tipo di operazione (apertura dei database durante l'avvio del server, collegamento di un database, ripristino del database e così via), l'account usato per la rappresentazione e l'accesso al file di database può variare. Vedere l'argomento Sicurezza dei dati e dei file di log per informazioni sulle interazioni tra operazioni, autorizzazioni e account. Usare uno strumento come Process Monitor di Windows SysInternals per determinare se l'accesso ai file avviene nel contesto di sicurezza dell'account di avvio del servizio dell'istanza di SQL Server (o SID del servizio) o di un account rappresentato.

    Se SQL Server rappresenta le credenziali utente dell'accesso che esegue l'operazione ALTER DATABASE o CREATE DATABASE, si noteranno ad esempio le informazioni seguenti nello strumento 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
    

associazione di file che risiedono in un Network-attached storage (NAS)

Se non è possibile ricollegare un database che risiede in un Network-attached storage (NAS), è possibile che nel registro applicazioni venga registrato un messaggio simile al seguente.

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

Questo problema si verifica perché SQL Server reimposta le autorizzazioni per i file quando il database viene scollegato. Quando si tenta di riconnettere il database, si verifica un errore a causa di autorizzazioni di condivisione limitate.

Per risolvere il problema, seguire questa procedura:

  1. Usare l'opzione di avvio -T per avviare SQL Server. Usare questa opzione di avvio per attivare il flag di traccia 1802 in Gestione configurazione SQL Server (per informazioni su 1802 vedere Flag di traccia). Per altre informazioni sulle modalità di modifica dei parametri di avvio, vedere Opzioni di avvio del servizio del motore di database.

  2. Usare il comando seguente per scollegare il database.

     exec sp_detach_db DatabaseName
     go 
    
  3. Usare il comando seguente per riconnettere il database.

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