KB4492899 - DÜZELTME: SQL Server 2016 ve 2017'de veritabanı başlatıldıktan sonra FileTable veritabanı düzeyi dizinine erişilemiyor

Uygulandığı Öğe
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

Belirtiler

Microsoft SQL Server 2016 ve 2017 başlatma sırasında, kullanıcı başlatılmadan önce bir veritabanına bağlanmayı denerse, kullanıcı oturumu veritabanının otomatik olarak başlatılmasına neden olabilir. Bu durumda, veritabanı bir FileTable içeriyorsa ve FILESTREAM non_transacted_access etkinleştirilmişse, veritabanı başlatıldıktan sonra veritabanı düzeyindeki FileTable dizinine erişilemez. Klasöre Dosya Gezgini aracılığıyla erişmeye çalışırsanız, bu durum klasörün kullanılamadığını gösterebilir. Komut isteminden bir "dir" komutu çalıştırdığınızda, "Sistem belirtilen dosyayı bulamıyor" döndürür.

Ayrıca, hata günlüğünde, bir kullanıcı oturumunun veritabanının otomatik olarak başlatılmasını tetiklediğini gösteren aşağıdaki hataları görebilirsiniz:

Tarih Saat Oturum açma hatası: 18456, önem derecesi: 14, durum: 38.

Tarih Saat ' UserName' kullanıcısı için Oturum Açma başarısız oldu. Neden: Açıkça belirtilen 'DatabaseName' veritabanı açılamadı. [İSTEMCİ: IPNumber]

Durum

Microsoft bunun, "Şunlar için geçerlidir" bölümünde listelenen Microsoft ürünlerinde sorun olduğunu doğrulamıştır.

Çözüm

Bu sorun, SQL ServerSQL Server için aşağıdaki toplu güncelleştirmelerde düzeltildi:

SQL Server toplu güncelleştirmeleri hakkında:

SQL Server için her yeni toplu güncelleştirme, önceki toplu güncelleştirmeye dahil edilen tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir. SQL Server için en son toplu güncelleştirmelere göz atın:

Geçici çözüm

Bu sorunun geçici çözümü, veritabanının FILESTREAM non_transacted_access devre dışı bırakıp yeniden etkinleştirmektir.

ALTER DATABASE [VeritabanıAdı] HEMEN ROLLBACK İLE SINGLE_USER AYARLA

ALTER DATABASE [VeritabanıAdı] SET FILESTREAM ( NON_TRANSACTED_ACCESS = KAPALI )

ALTER DATABASE [VeritabanıAdı] SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL )

ALTER DATABASE [DatabaseName] SET MULTI_USER WITH ROLLBACK IMMEDIATE

Başvurular

Microsoft'un yazılım güncelleştirmelerini tanımlamak için kullandığı terminoloji hakkında bilgi edinin.