Delen via


SQL Server-assertiefout wanneer u een bulkinvoegings- of BCP-instructie probeert uit te voeren

Dit artikel helpt u bij het oplossen van het probleem dat optreedt wanneer u een BULK INSERT of BCP meer bewerkingen probeert uit te voeren.

Oorspronkelijke productversie: SQL Server 2008 R2 Enterprise, SQL Server 2008 Enterprise
Oorspronkelijk KB-nummer: 2700641

Symptomen

Houd rekening met het volgende scenario:

  • Server A en Server B voeren Microsoft SQL Server 2008 of SQL Server 2008 R2 uit.

  • U stelt databasespiegeling in tussen Server A en Server B.

  • U voert een BULK INSERT of BCP instructie uit op de principal-database.

    Opmerking

    De optie is standaard CHECK_CONSTRAINTS ingesteld op uit wanneer u een BULK INSERT of BCP meer instructies uitvoert.

  • De databasespiegeling is verbroken en de databasespiegelingssessie voert de status SUSPENDED in.

In dit scenario vindt een assertie plaats op de mirrorserver. Daarom wordt er een minidumpbestand gemaakt in de sql Server-logboekmap. Daarnaast ziet u de volgende fout in het SQL Server-foutenlogboek op de mirror-server:

Opmerking

U moet databasespiegeling opnieuw initialiseren om dit probleem op te lossen.

Oorzaak

Dit probleem treedt op omdat de compatibiliteitsgegevens voor vergrendelingen in het transactielogboek van de principal-database niet worden overgedragen naar de mirrorserver.

Tijdelijke maatregel

Als u dit probleem wilt omzeilen, voert u de BULK INSERT or-instructie BCP uit op de principal-database met behulp van de CHECK_CONSTRAINTS optie.

Opmerking

De CHECK_CONSTRAINTS optie zorgt voor tragere prestaties. De vergrendelingsstatus op de mirrorserver vindt echter niet plaats.

Meer informatie

Tijdens een BULK INSERT of BCP bewerking schakelt een onderliggende transactie de CHECK_CONSTRAINTS optie uit. Deze onderliggende transactie maakt gebruik van een vergrendeling die compatibel is met de bovenliggende transactievergrendelingen. De compatibiliteitsgegevens worden opgeslagen in het transactielogboek van de principal-database. De aanvraag voor het vergrendelen van onderliggende transacties wordt daarom verleend in de principal-database.

Deze compatibiliteitsgegevens worden echter niet overgebracht naar de mirrorserver. De aanvraag voor het vergrendelen van onderliggende transacties is daarom niet compatibel met de bovenliggende transactievergrendelingen op de mirror-server. Dit scenario veroorzaakt de assertie op de mirror-server.