KB4492899 - FIX: La directory a livello di database FileTable non è accessibile dopo l'avvio del database negli SQL Server 2016 e 2017

Si applica a
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 Developer Windows SQL Server 2017 Enterprise Windows SQL Server 2017 Enterprise Core Windows SQL Server 2017 Standard Windows

Sintomi

Durante l'avvio di Microsoft SQL Server 2016 e 2017, se un utente tenta di connettersi a un database prima che venga avviato, la sessione utente potrebbe causare l'avvio automatico del database. In questo caso, se il database contiene una tabella FileTable e l'non_transacted_access FILESTREAM è abilitato, la directory FileTable a livello di database non è accessibile dopo l'avvio del database. Se tenti di accedere alla cartella tramite Esplora file, potrebbe indicare che la cartella non è disponibile. Quando si esegue un comando "dir" dal prompt dei comandi, viene restituito "Il sistema non riesce a trovare il file specificato".

Inoltre, nel log degli errori potrebbero essere visualizzati gli errori seguenti che indicano che una sessione utente ha attivato l'avvio automatico del database:

DateTime Errore di accesso: 18456, gravità: 14, stato: 38.

DateTime Accesso non riuscito per l'utente 'Nome utente'. Motivo: impossibile aprire il database 'DatabaseName' specificato in modo esplicito. [CLIENT: IPNumber]

Stato

Microsoft ha confermato che si tratta di un problema relativo ai prodotti elencati nella sezione "Si applica a".

Risoluzione

Questo problema è stato risolto negli aggiornamenti cumulativi seguenti per SQL Server:

Informazioni sugli aggiornamenti cumulativi per SQL Server:

Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutte le correzioni rapide e di sicurezza incluse nell'aggiornamento cumulativo precedente. Vedere gli aggiornamenti cumulativi più recenti per SQL Server:

Soluzione alternativa

La soluzione alternativa a questo problema consiste nel disabilitare e riabilitare l'non_transacted_access FILESTREAM del database.

ALTER DATABASE [DatabaseName] SET SINGLE_USER CON ROLLBACK IMMEDIATO

ALTER DATABASE [DatabaseName] SET FILESTREAM ( NON_TRANSACTED_ACCESS = OFF )

ALTER DATABASE [DatabaseName] SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL )

ALTER DATABASE [DatabaseName] SET MULTI_USER CON ROLLBACK IMMEDIATO

Riferimenti

Informazioni sulla terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software.