Simptomi
Pieņemsim, ka izmantojat AlwaysOn pieejamības grupu Microsoft SQL Server 2012 vai SQL Server 2014 datu bāzē, un pastāv liela atvērta aktīva transakcija, un ir nepieciešama papildu pieteikšanās vieta. Ja žurnālfails nevar palielināties vienu no tālāk norādītajiem iemesliem, transakcija nav sekmīga.
-
Papildu failu vietas trūkums
-
Žurnālfails ir konfigurēts tā, lai neaugtu
-
Reģistrācijas fails ir sasniedzis konfigurēto maksimālo lielumu
Turklāt tiek parādīts šāds kļūdas ziņojums:
Kļūda: 9002, smagums: 17, valsts: 9. darījumu žurnāls datu bāzei "<datu bāzes nosaukums>" ir pilns, jo "LOG_BACKUP".
Pēc tam, kad esat palaidis žurnālu dublēšanu, tiek parādīts vēl viens 9002 kļūdas ziņojums:
Kļūda: 9002, smagums: 17, valsts: 9. darījumu žurnāls datu bāzei "<datu bāzes nosaukums>" ir pilns, jo "ACTIVE_TRANSACTION".
Pēc tam, kad veicat citu žurnālu dublēšanu, saņemsit vēl vienu 9002 kļūdas ziņojumu, kam seko 5901 kļūdas ziņojums:
Kļūda: 9002, smagums: 17, valsts: 9. darījumu žurnāls datu bāzei "<datu bāzes nosaukums>" ir pilns, jo "AVAILABILITY_REPLICA".
Nevarēja uzrakstīt kontrolpunkta ierakstu datu bāzes <datu bāzes nosaukumu>, jo nav vietas. Sazinieties ar datu bāzes administratoru, lai saīsinātu žurnālu vai piešķirtu papildu vietu datu bāzes žurnālfailus. Kļūda: 5901, nopietnība: 16, štats: 1. viena vai vairākas atkopšanas vienības, kas pieder datu bāzei <datu bāzes nosaukumu> ' neizdevās ģenerēt kontrolpunktu. To parasti izraisa sistēmas resursu, piemēram, diska vai atmiņas, trūkums vai dažos gadījumos datu bāzes bojājuma dēļ. Pārbaudiet iepriekšējo ierakstu kļūdu žurnālu, lai iegūtu detalizētāku informāciju par šo kļūmi.
Pēc tam, kad pēc tam tiek veikta nākamā kontrolpunkta vai žurnālu dublēšana, var tikt parādīts šāds kļūdas ziņojums:
Msg 3052, Level 16, State 1, Line 4BACKUP žurnāls nespēja reģistrēt datu bāzes <datu bāzes nosaukumu>. Nākamajos žurnāla dublējumos būs jāpāriet uz dublējuma punktu no "<LSN ID 1>" uz "<LSN ID 2>" pēc tam, kad žurnāla vieta ir pieejama reģistrēšanai.
Kad saņemat šos ziņojumus, jūs vairs nespējat iesniegt jaunus transakciju datu bāzei, un jūs nevarat palielināt žurnālfailu vai pievienot citu žurnālfailu.
Risinājums
Šī problēma pirmo reizi tika novērsta ar šādu kumulatīvo SQL Server atjauninājumu:
Katrā jaunajā kumulatīvajā SQL Server atjauninājumā ir iekļauti visi labojumfaili un visi drošības labojumi, kas bija iekļauti iepriekšējā kumulatīvajā atjauninājumā. Iesakām lejupielādēt un instalēt jaunākos SQL Server kumulatīvos atjauninājumus:
Risinājums
Varat izmantot tālāk norādīto risinājumu, lai saīsinātu žurnālus un CV darbības.
-
Jāpārbauda katrs sekundārais dublikāts, lai verificētu sekundāro dublikātu last_hardened_lsn (skatiet sys.dm_hadr_database_replica_states) atbilst primārajai dublikātu last_hardened_lsni. To var izdarīt, palaižot tālāk norādīto vaicājumu, kas ir savienots ar primārās kopijas instanci
SELECT ags.name as AGGroupName, ar.replica_server_name as InstanceName, hars.role_desc, db_name(drs.database_id)as DBName, drs.last_hardened_lsn, drs.log_send_queue_size, drs.synchronization_state_desc as SyncState, ar.availability_mode_desc as SyncMode, CASE drs.is_local WHEN 1 THEN drs.database_id ELSE NULL END as database_id FROM sys.dm_hadr_database_replica_states drs LEFT JOIN sys.availability_replicas ar ON drs.replica_id = ar.replica_id LEFT JOIN sys.availability_groups ags ON ar.group_id = ags.group_id LEFT JOIN sys.dm_hadr_availability_replica_states hars ON ar.group_id = hars.group_id and ar.replica_id = hars.replica_id WHERE db_name(drs.database_id) = '<database name>'
-
Primārajā dublikātā
-
Noņemiet datu bāzi no pieejamības grupas.
-
Atkārtoti pievienojiet datu bāzi pieejamības grupai.
-
-
Katrā sekundārajā reprodukcijā
-
Atkārtoti pievienojiet datu bāzi pieejamības grupai.
-
Noņemot datu bāzi no pieejamības grupas, tā nekavējoties apgriež žurnālus un atbrīvos žurnāla vietu. Ja katra sekundārā dublikāta last_hardened_lsn ir identisks primārajai replikai, un pēc tam, kad datu bāzes noņemšanas laikā nav veikta neviena žurnālu dublējumkopija un pēc tam atkārtoti pievienojat datu bāzi, sekundārais dublikāts tiks atkārtoti pievienots bez kļūdām vai atjaunot žurnālfailus sekundārajā versijā. Ja sekundārā kopija nav iekļauta primārajā kopijā un ir jānoņem datu bāze no pieejamības grupas, pirms sekundārā dublikāts, iespējams, ir jāatjauno reģistrētās dublējumkopijas, lai tās tiktu atgūtas, pirms to pievienošanas grupai pieejamība, vai arī nolaidiet datu bāzi sekundārajā dublikātā un atkārtoti to iesēja ar pilnīgu un transakciju reģistrācijas datu bāzes dublējumu.
Statusa
Microsoft ir apstiprinājusi, ka šī problēma pastāv Microsoft produktos, kas ir norādīti sadaļā "attiecas uz".