SQL Server 2017 yedeklenirken çöküyor, çünkü dosya yolu hatalı


25

Veritabanımı geri yüklemeye çalışıyordum ve SQL Server çökmeye devam etti. SSMS’de bir ağ nakil hatası olduğunu söyleyen bir mesaj alırdım (bağlantı çökmeye bc düştü). Günlükleri kontrol ettim ve SQL Server'ın beklenmedik şekilde kapatılmasından başka bir şey bulamadım. O zaman gidip servisi yeniden başlatmak zorunda kalacağım.

Bu konuyu GUI'nin çalıştırmaya çalıştığı senaryo ile sınırlandırdım. Sorun, bir kuyruk günlüğü yedeğini almaya gittiğinde, yedekleme dosyalarına giden yolun yanlış olmasıdır. OlmalıD:\mapbenefits\...

BACKUP LOG [mapbenefits]
TO  DISK = N'D:mapbenefits_LogBackup_2019-02-21_13-58-24.bak'
WITH NOFORMAT, NOINIT,  NAME = N'mapbenefits_LogBackup_2019-02-21_13-58-24',
    NOSKIP, NOREWIND, NOUNLOAD,  NORECOVERY ,  STATS = 5

İki sorum var.

  1. Bu yolu nasıl düzeltebilirim? Sunucu ayarlarına girmeyi denedim ve yedekleme yolunda D:eğik çizgi yok. Eğer eğik çizgiyi eklersem gui onu kaldırır. Bu, SSMS v17.9.1'dir. Seçebilirim D:\mapbenefits\ve işe yarıyor ama istiyorumD:\DATABASE\...

  2. Bu bir hata mı? Bir yol yanlış girildiği için SQL server çökmeli mi? Dosya yolunu düzelttikten sonra sorun çıkarmadı. Sadece filepatları silerek her zaman çoğaltabilirim.

Sürümünü kontrol etmek için bir sorgu çalıştırırsam CU13 alırım, ancak ayarlara girersem sürüm 14.0.1000.169'u görürüm.

Bu bir hata gibi görünüyor ve tekrar üretilebilir, bu yüzden buraya gönderdim: https://feedback.azure.com/forums/908035-sql-server/suggestions/36920542-incorrect-filepath-with-backup-log-command- nedenleri

Yanıtlar:


25

Bunu çoğaltabildim.

2016'da böyle bir geçersiz yol koyarsam, şu mesajı alıyorum:

'D: mapbenefits_LogBackup_2019-02-21_13-58-24.bak' yedek cihazı açılamıyor. İşletim sistemi hatası 3 (Sistem belirtilen yolu bulamıyor.)

2017 CU 13'te (14.0.3048.4), hizmetin çökmesine neden olur. En son düzeltmede (14.0.3049.1) hizmetin çökmediğini, ancak oturumun öldürüldüğünü zaten söylediniz.

Aynı davranışın da geçerli olduğunu doğruladım RESTORE DATABASE- "D: Yedeklemeler" (eksik bir ters eğik çizgi ile) veya "D :: \ Yedeklemeler" (fazladan sütun) gibi bir yolun iletilmesi SQL Server örneğinde çöküyor (teşekkürler Michael K Campbell bunu gündeme getirmek için).

Var olmayan bir "geçerli" yol koyarsam, 2017'de doğru davranışı ("belirtilen yolu bulamıyorum") alıyorum.

Bu bir hatadır - hem 13 CU hem de düzeltme derlemesinde. BACKUPVeya RESTOREkomutlarına yanlış parametrelerin iletilmesi, hizmete çarpmamalı veya oturumunuzu sonlandırmamalıdır. Geri bildirim sitesinde rapor edebilirsiniz .

Not: Bu hatanın servis çökmesine neden olan sürümü, SQL Server 2019'un genel önizleme sürümünde yeniden üretilebilir (CTP2.2 - bunu işaret ettiği için Denis Rubashkin'e teşekkürler )


Buna bir hata ayıklayıcıda baktığımızda, yol doğrulama kodunun basitçe bozulmuş olduğu görünüyor. sqlmin!CheckFileStreamReservedSağlanan yoldaki normal (ve oldukça kapsamlı) kontrollerin bunu anlamadığı durumlarda tekrar tekrar arayarak yığın taşmasına neden olur. Yığın taşması, yapıyı 3048'e indirir. Aynı şey, 3049'da, yığın taşma işlemini gerçekleştirmeye çalışırken bir dizi erişim ihlali dışında, tüm sunucuyu durdurmak yerine bağlantıyı keser.


Bu hata için bir düzeltme SQL Server 2017 CU 15’te yayınlandı:

Düzeltme: veritabanı ana diske yedeklemeye çalıştığınızda SQL Server 2017 yığın taşması nedeniyle çöküyor

Bu sorun, SQL Server 2019 CTP 3.0'da da çözülmüştür.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.