Il registro delle transazioni per il database 'database_name' è pieno a causa di 'XTP_CHECKPOINT'


26

Ho una domanda a riguardo XTP_CHECKPOINT.

Sto usando SQL Server 2014. Ho un database in modalità SEMPLICE modello di recupero. Viene anche replicato.

Non ci sono transazioni aperte. Ho corso DBCC OPENTRANe ritorna:

"Nessuna transazione aperta attiva."

Ma continuo a ricevere questo messaggio ogni volta che provo a creare o eliminare una tabella o eliminare i dati:
(Ho sostituito il mio nome di database effettivo con la parola database_name)

"Il registro delle transazioni per il database 'database_name' è pieno a causa di 'XTP_CHECKPOINT'"

Qualcuno sa perché questo potrebbe accadere e, cosa più importante, come posso farlo smettere?

E sì, il database è davvero in modalità modello di recupero SEMPLICE. cioè il registro delle transazioni dovrebbe troncarsi automaticamente.

Per inciso, un altro database che ho in modalità di recupero completo ha fatto la stessa cosa, ha iniziato a restituire lo stesso errore:

Il registro delle transazioni per il database 'database_name' è pieno a causa di 'XTP_CHECKPOINT'

Ho provato a modificare le impostazioni di crescita del registro in crescita illimitata, ma non mi ha permesso, restituendo lo stesso errore.

Posso riprodurre il problema senza alcuna roba XTP, ad eccezione del solo filegroup. Ecco come: http://pastebin.com/jWSiEU9U

Risposte:


8

Ho avuto un problema simile: non avevo la replica ma una volta ho usato la tabella Memory Optimized come test, il database in modalità di recupero semplice, ma i miei registri delle transazioni non sono stati troncati. Il troncamento manuale, anche subito dopo un backup completo, ha dato l'errore:

Impossibile ridurre il file di registro X perché è in uso il file di registro logico situato alla fine del file.

Un checkpoint manuale non è riuscito:

Messaggio 41315, livello 16, stato 4, riga N Operazione checkpoint non riuscita nel database X.

Un checkpoint manuale è riuscito solo dopo il riavvio del servizio SQL, il che porterebbe a uno stato di recupero di 4 ore a causa delle dimensioni del mio database Multi Tb. Ho anche provato a impostare la crescita automatica su una dimensione specifica, ma alla fine ha fatto lo stesso: riempire i registri delle transazioni fino a quando non è rimasto spazio.

Alla fine, dopo giorni e notti di tentativi e ricerche, ho trovato la soluzione al mio problema installando l' aggiornamento cumulativo 3 per SQL Server 2014 SP1


9

Innanzitutto assicurarsi che la replica non stia causando ciò, come indicato nell'elemento di connessione "log_wait_reuse_desc = XTP_CHECKPOINT non significa necessariamente che il lavoratore del checkpoint XTP trattiene il troncamento del registro". quindi inizia eseguendo sp_repltranse assicurati che tutti i dati siano stati distribuiti.

Poi c'è questo piccolo frammento qui:

"succede su un database, che ha un gruppo di file ottimizzato per la memoria, indipendentemente dal fatto che ci siano tabelle ottimizzate per la memoria o meno.

L'attuale soluzione alternativa imposta AutoGrown su una dimensione fissa. Oppure, cambiando la modalità di ripristino in Semplice, e riducendo il registro. "

Quindi, se la pulizia della replica non funziona, provare quanto segue:

checkpoint;
dbcc shrinkfile (Logfile, truncateonly)
alter database [database] modify file (filename = 'TRANSACTIONLOG', FILEGROWTH = 5MB)

Non è indicato se questo è per il file di registro o per i file di database, ma cominciamo provando i file di registro e, in caso contrario, prova a impostare i file di database su crescita fissa:


3

Sono stato in grado di risolvere il problema aggiungendo un altro file di registro, che mi ha permesso di eseguire un backup completo, regolare le dimensioni del file di registro principale e la crescita limitata, oltre a rimuovere il file di registro aggiuntivo aggiunto per risolvere il problema XTP_CHECKPOINT.


1

L'ho sperimentato con un cliente. Il registro e i file di dati FILESTREAM in memoria si trovavano sulla stessa unità. Hanno creato un nuovo file di registro (pochi lo hanno suggerito) ma il sistema non può CHECKPOINT in quanto non riesce a creare i file del checkpoint in memoria (* .HKCKP).

Prova a liberare spazio sull'unità con i dati FILESTREAM in memoria.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.