MSSQLSERVER_9001

Şunlar için geçerlidir: SQL Server

Ayrıntılar

Öznitelik Değer
Ürün Adı SQL Server
Olay Kodu 9001
Olay Kaynağı MSSQLSERVER
Bileşen SQLEngine
Sembolik Ad LOG_NOT_AVAIL
İleti Metni '%.*ls' veritabanının günlüğü mevcut değil. İlgili hata iletileri için olay günlüğünü denetleyin. Tüm hataları giderin ve veritabanını yeniden başlatın.

Açıklama

Veritabanı günlük dosyası kullanılamaz duruma geldiğinde 9001 hatası oluşur. Veritabanı günlüğü çevrimdışı olduğunda bu, veritabanında işlemlerin gerçekleşmesini engelleyen ciddi bir hata oluştuğu anlamına gelir. Böyle bir hata veritabanının yeniden başlatılmasını veya bir yedeklemeyi geri yüklemenizi gerektirir. Hata sonucu gösterir, ancak bu duruma neyin yol açtığını açıklamaz. Başka bir sorun günlüğün kullanılamamasına neden oldu ve temel sorunu araştırmanız gerekiyor. Sql hata günlüğünde hatanın nasıl göründüğüne ilişkin bir örnek aşağıda verilmiş.

Error: 9001, Severity: 21, State: 5.
The log for database 'ContosoDb' is not available. Check the operating system error log for related error messages. Resolve any errors and restart the database.

Genellikle hata 9001, kök neden hakkında daha ayrıntılı bir açıklama sağlayan diğer hatalarla birlikte oluşur. Örnek olarak 9002, 3313, 3314, 17204 (dosyaya erişilirken işletim sistemi hatası gösterilir), 17053 (işletim sistemi hatası gösterilir), 823 hataları verilebilir.

Bazı durumlarda SQL Server veritabanını çalışma zamanında yeniden başlatmaya ve kurtarma gerçekleştirmeye çalışır veya kendisini (hizmetin tamamı) yeniden başlatabilir. Otomatik veritabanı yeniden başlatma işlemi başarısız olursa veya gerçekleşmediyse, SQL Server yeniden başlatmayı deneyebilir ve veritabanının başarıyla kurtarılmasının veritabanını çevrimiçi hale getirip getirmediğini görebilirsiniz. Aksi takdirde, işlem günlüğünün kullanılamamasının temel nedenini gidermeniz gerekir. Bu, veritabanı yeniden başlatmayı gösteren 3422 hata iletisinin bir örneğidir:

Database ContosoDb was shutdown due to error 9001 in routine 'XdesRMFull::CommitInternal'. Restart for non-snapshot databases will be attempted after all connections to the database are aborted.

Aşağıdaki ileti, SQL Server yeniden başlatma işleminin gerçekleşmek üzere olduğunu gösterir:

Error: 3449, Severity: 21, State: 1.
SQL Server must shut down in order to recover a database (database ID 2). The database is either a user database that could not be shut down or a system database. Restart SQL Server. If the database fails to recover after another startup, repair or restore the database.

Nedeni

Veritabanının işlem günlüğü birçok nedenden dolayı kullanılamaz duruma gelebilir. Bazı örnekler şunlardır:

  • İşlem günlüğü dosyası, başarısız olan veya kullanılamamış bir depolama cihazında bulunuyor
  • Günlük dosyasına yazılamamasına veya günlük dosyasından okunamamasına neden olan fiziksel olarak zarar görmüş bir işlem günlüğü dosyası
  • Saydam Veri Şifrelemesi (TDE) aracılığıyla başarısız şifreleme/şifre çözme nedeniyle dosyaya erişilememesi
    • Anahtar kasası hizmetine erişilemiyor
    • EKM sağlayıcı modülü başarılı işlemi engelleyen bir özel durum, hata veya başka bir sorunla karşılaşır
  • İşlem günlüğüne uygulanan büyük işlemler, düşük disk alanı veya dosya boyutu sınırları nedeniyle tam işlem günlüğü. Hata 9002, 9001'in öncesinde SQL Server hata günlüğünde bulunabilir. Daha fazla bilgi için bkz. MSSQLSERVER_9002

Kullanıcı eylemi

Önce 9001'in önündeki hataları çözün. Daha sonra veritabanını kurtarmak için SQL Server örneğini yeniden başlatmayı (henüz gerçekleşmemişse) deneme.

Tam işlem günlüğü hatalarını düzeltme

9001 hatasından önce 9002 hatasını gözlemleyebilirsiniz. Bir örnek aşağıda verilmiştir:

Error: 9002, Severity: 17, State: 9.
The transaction log for database 'ContosoDb' is full due to 'AVAILABILITY_REPLICA'.
Error: 3314, Severity: 21, State: 3.
During undoing of a logged operation in database 'ContosoDb' (page (1:32573799) if any), an error occurred at log record ID (7672713:36228:159). Typically, the specific failure is logged previously as an error in the operating system error log. Restore the database or file from a backup, or repair the database.
State information for database 'ContosoDb' - Hardened Lsn: '(7672713:38265:1)'    Commit LSN: '(7672712:1683087:46)'    Commit Time: 'Jul  1 2021  5:51AM'
Database ContosoDb was shutdown due to error 3314 in routine 'XdesRMReadWrite::RollbackToLsn'. Restart for non-snapshot databases will be attempted after all connections to the database are aborted.
Always On Availability Groups connection with secondary database terminated for primary database 'ContosoDb' on the availability replica 'PRDAT1ANLYSQL05' with Replica ID: {38a71ff9-f0ee-4737-9255-bb6a73e1c5d5}. This is an informational message only. No user action is required.
Error during rollback. shutting down database (location: 1).

Error: 9001, Severity: 21, State: 5.
The log for database 'ContosoDb' is not available. Check the operating system error log for related error messages. Resolve any errors and restart the database.

Recovery of database 'ContosoDb' (6) is 0% complete (approximately 60466 seconds remain). Phase 2 of 3. This is an informational message only. No user action is required.

Böyle durumlarda, kök nedeni çözmeye odaklanın - tam işlem günlüğü

Tam işlem günlüğünü çözmek için bkz. Tam İşlem Günlüğü (SQL Server Hatası 9002)

  • İşlem günlüğü alanında yer açtığınızdan emin olun ve neden boşaltılamadığını öğrenin
  • İşlem günlüğünün bulunduğu disk alanını boşaltın
  • Mevcut günlük dosyasını genişletme veya bazı durumlarda gerekirse yeni bir tane ekleme

Donanım ve işletim sistemi sorunlarını çözme ve gerekirse yedekten geri yükleme

Genellikle hata 9001, bir işlem günlüğü dosyası zarar gördüğünde veya günlük dosyasını kullanılamaz hale getiren depolama cihazı sorunlarından dolayı oluşur. Aşağıda, gözlemleyebileceğin iki hata örneği verilmiştir:

Depolama biriminin kullanılamaz duruma geldiği ve işletim sisteminin "Cihaz hazır değil" hatasını döndürdüğü bir örnek. Disklerin kullanılamadığı zaman zarar görmesine neden olan diğer hataları görebilirsiniz. Bu örnekler, 9001 hatasının daha büyük bir sorunun birçok belirtisinden yalnızca biri olduğunu anlayabilebilmeniz için bağlam sağlar.

Error: 823, Severity: 24, State: 2.
The operating system returned error 21(The device is not ready.) to SQL Server during a read at offset 0x000009afde6000 in file 'G:\Data\Files\ContosoDb_4.ldf'. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe system-level error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.

Error: 9001, Severity: 21, State: 3.
The log for database 'ContosoDb' is not available. Check the event log for related error messages. Resolve any errors and restart the database.

Database ContosoDb was shutdown due to error 9001 in routine 'XdesRMFull::CommitInternal'. Restart for non-snapshot databases will be attempted after all connections to the database are aborted.

Starting up database 'ContosoDb'.
Error: 17204, Severity: 16, State: 1.
FCB::Open failed: Could not open file G:\Data\Files\ContosoDb.mdf for file number 1.  OS error: 3(The system cannot find the path specified.).
Error: 5120, Severity: 16, State: 101.
Unable to open the physical file "G:\Data\Files\ContosoDb.mdf". Operating system error 3: "3(The system cannot find the path specified.)".
Error: 17207, Severity: 16, State: 1.
FileMgr::StartPrimaryDataFiles: Operating system error 2(The system cannot find the file specified.) occurred while creating or opening file 'G:\Data\Files\ContosoDb_0.ndf'. Diagnose and correct the operating system error, and retry the operation.

İşletim sisteminin birden çok veritabanının erişilemez olması için işlem günlüğüne yol açan cihaz hatalarını bildirdiği başka bir örnek aşağıda verilmiştir:

Error: 17053, Severity: 16, State: 1.
SQLServerLogMgr::LogWriter: Operating system error 1117(The request could not be performed because of an I/O device error.) encountered.


Error: 9001, Severity: 21, State: 4.
The log for database 'ContosoDb' is not available. Check the event log for related error messages. Resolve any errors and restart the database.
Always On Availability Groups data movement for database 'ContosoDb' has been suspended for the following reason: "system" (Source ID 2; Source string: 'SUSPEND_FROM_REDO'). To resume data movement on the database, you will need to resume the database manually. For information about how to resume an availability database, see SQL Server Books Online.


Error: 9001, Severity: 21, State: 16.
The log for database 'tempdb' is not available. Check the event log for related error messages. Resolve any errors and restart the database.
Error: 3449, Severity: 21, State: 1.
SQL Server must shut down in order to recover a database (database ID 2). The database is either a user database that could not be shut down or a system database. Restart SQL Server. If the database fails to recover after another startup, repair or restore the database.

Aynı zamanda, Windows Sistem olay günlüğü depolama cihazı hatalarını bildirir:

Warning       NODEDB1 129     pvscsi     Reset to device, \Device\RaidPort2, was issued.
Warning       NODEDB1 153     Disk       The IO operation at logical block address 0xxxxxxxx for Disk 4 (PDO name: \Device\0000007f) was retried.

Bu tür sorunları gidermek için:

  • Veritabanı ve günlük dosyalarının bulunduğu depolama birimlerinin çevrimiçi olduğundan, makineden depolamaya giden tüm G/Ç yolunun kararlı ve güvenilir olduğundan ve fiziksel dosya hasarına yol açmadığından emin olun.
  • Donanımın ve yapılandırmasının bir veritabanı sisteminin G/Ç gereksinimlerine uygun olduğundan emin olmak için donanım ve cihaz üreticinizle birlikte çalışın. G/Ç yolundaki cihaz sürücülerinin, üretici yazılımının, BIOS'un ve diğer destekleyici yazılım bileşenlerinin güncel olduğundan emin olun.
  • Veritabanı yeniden başlatıldıktan sonra çevrimiçi olup olmadığını denetlemek için DBCC CHECKDB'yi çalıştırın
  • Veritabanı ve günlük dosyaları bozulmamışsa ve sonuç olarak veritabanı çevrimiçi olamıyorsa, veritabanının bilinen son iyi yedeğini geri yükleyin
  • Sorun giderme önerileri için bkz. MSSQLSERVER hatası 823 ve DBCC CHECKDB tarafından bildirilen veritabanı tutarlılığı hatalarını giderme

TDE şifreleme veya şifre çözme hatasını çözme

Dış Genişletilebilir Anahtar Yönetimi (EKM)/Donanım Güvenlik Modülleri (HSM) hizmeti veya sağlayıcısı kullanıyorsanız, hizmet tarafından sağlanan modüllerin kararlı ve güncelleştirildiğinden emin olun. Dosyaların şifrelenmesini/şifresinin çözülmesini gerçekleştiren modüllerle ilgili sorunları çözmek için EKM/HSM sağlayıcı satıcısıyla birlikte çalışın.

Bu sorun oluştuğunda SQL hata günlüğünde aşağıdaki belirtileri gözlemleyebilirsiniz:

**Dump thread - spid = 0, EC = 0x0000023FDA293320
***Stack Dump being sent to F:\Data\MSSQL13.INST1\MSSQL\LOG\SQLDump0007.txt
* *******************************************************************************
*
* BEGIN STACK DUMP:
*   11/22/22 12:04:58 spid 1
*
* Crypto Exception
*

00007FFBA0C81791 Module(ntdll+0000000000051791)
Stack Signature for the dump is 0x00000000D3AC1708
External dump process return code 0x20000001.  External dump process returned no errors.

Error: 15466, Severity: 16, State: 28.
An error occurred during decryption.
Error: 9001, Severity: 21, State: 16.
The log for database 'ContosoDb' is not available. Check the event log for related error messages. Resolve any errors and restart the database.