Simptome
În timpul pornirii Microsoft SQL Server 2016 și 2017, dacă un utilizator încearcă să se conecteze la o bază de date înainte de a o porni, sesiunea de utilizator poate determina pornirea automată a bazei de date. Când se întâmplă acest lucru, dacă baza de date conține un FileTable și are FILESTREAM non_transacted_access activat, atunci directorul FileTable la nivel de bază de date este inaccesibil după pornirea bazei de date. Dacă încercați să accesați folderul prin Explorer, acest lucru poate indica faptul că folderul este indisponibil. Atunci când rulați o comandă "dir" din linia de comandă, aceasta returnează "Sistemul nu poate găsi fișierul specificat".
În plus, este posibil să vedeți următoarele erori în jurnalul de erori, care indică faptul că o sesiune de utilizator a declanșat pornirea automată a bazei de date:
DatăOră Eroare de conectare: 18456, severitate: 14, stare: 38.
DatăOră Conectarea nu a reușit pentru utilizatorul "UserName". Motiv: Nu s-a reușit deschiderea bazei de date specificate în mod explicit "DatabaseName". [CLIENT: IPNumber]
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft care sunt listate în secțiunea „Se aplică la”.
Rezolvare
Această problemă este remediată în următoarele actualizări cumulative pentru SQL Server:
- Actualizarea cumulativă 15 pentru SQL Server 2017
- Actualizarea cumulativă 6 pentru SQL Server 2016 SP2
Despre actualizările cumulative pentru SQL Server:
Fiecare actualizare cumulativă nouă pentru SQL Server conține toate remedierile rapide și toate remedierile de securitate care au fost incluse cu actualizarea cumulativă anterioară. Consultați cele mai recente actualizări cumulative pentru SQL Server:
- Cea mai recentă actualizare cumulativă pentru SQL Server 2017
- Cea mai recentă actualizare cumulativă pentru SQL Server 2016
Soluție
Soluția pentru această problemă este să dezactivați și să reactivați non_transacted_access FILESTREAM a bazei de date.
ALTER DATABASE [DatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE [DatabaseName] SET FILESTREAM ( NON_TRANSACTED_ACCESS = OFF )
ALTER DATABASE [DatabaseName] SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL )
ALTER DATABASE [DatabaseName] SET MULTI_USER WITH ROLLBACK IMMEDIATE
Referințe
Aflați despre terminologia pe care o utilizează Microsoft pentru a descrie actualizările de software.