KB2412203 - Mesajul de eroare "Inserarea în bloc cu un alt set de rezultate restante ar trebui să fie rulată cu XACT_ABORT activat" poate apărea atunci când rulați o tranzacție DTC sau MARS în SQL Server 2008 sau SQL Server 2008 R2

Se aplică la
SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Standard SQL Server 2008 Standard Edition for Small Business SQL Server 2008 Workgroup SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2008 R2 Standard Edition for Small Business SQL Server 2008 R2 Workgroup

Microsoft distribuie remedierile Microsoft SQL Server 2008 și Microsoft SQL Server 2008 R2 ca un fișier descărcabil. Deoarece remedierile sunt cumulative, fiecare ediție nouă conține toate remedierile rapide și toate remedierile de securitate care au fost incluse cu lansarea anterioară de remedieri pentru SQL Server 2008 sau SQL Server 2008 R2.

Simptome

Luați în considerare următorul scenariu:

  • Rulați o aplicație Microsoft SQL Server care are configurată o tranzacție cu un coordonator de tranzacții distribuite (DTC) sau cu mai multe seturi de rezultate active (MARS).

    De exemplu, rulați Microsoft SQL Server Integration Services care inițiază o tranzacție DTC sau MARS.

  • Porniți o operațiune BULK LOAD ca parte a tranzacției DTC sau MARS într-un tabel țintă. Opțiunea FIRE_TRIGGERS nu este specificată într-o instrucțiune BULK INSERT a operațiunii BULK LOAD.

    Notă: O operațiune BULK LOAD rulează o instrucțiune BULK INSERT.

  • Porniți o altă operațiune BULK LOAD sau o operațiune DML (standard data manipulation language) pentru alt tabel țintă în timp ce rulează prima operațiune BULK LOAD. Aceste operațiuni paralele sunt în aceeași tranzacție DTC sau MARS. .

În acest scenariu, este posibil să primiți următorul mesaj de eroare:

Notă

Eroare: 595, Severitate: 16, Stare: 1
Inserarea masivă cu alt set de rezultate restante ar trebui rulată cu XACT_ABORT activat.

Cauză

Această problemă apare deoarece SQL Server detectează incorect o blocare MARS. SQL Server evită blocările care pot apărea atunci când porniți o tranzacție MARS sau DTC. Cu toate acestea, SQL Server nu verifică dacă opțiunea FIRE_TRIGGERS este specificată în instrucțiunea BULK INSERT.

Notă

  • Pentru mai multe informații despre cum să evitați o blocare MARS în SQL Server, consultați secțiunea "Executare intercalată" a articolului "Multiple Active Result Sets (MARS) in SQL Server 2005" de pe site-ul web Rețea Microsoft pentru dezvoltatori (MSDN).

    Pentru informații suplimentare despre articolul "Seturi multiple de rezultate active (MARS) în SQL Server 2005", vizitați următorul site web Rețea Microsoft pentru dezvoltatori (MSDN):
    Articolul "Mai multe seturi de rezultate active (MARS) în SQL Server 2005"

Rezolvare

Informații despre actualizarea cumulativă

SQL Server 2008

Remedierea pentru această problemă a fost lansată pentru prima dată în actualizarea cumulativă 11 pentru SQL Server 2008 Service Pack 1. Pentru informații suplimentare despre acest pachet de actualizări cumulative, faceți clic pe următorul număr de articol pentru a vedea articolul în Baza de cunoștințe Microsoft:

2413738 Pachetul de actualizare cumulativă 11 pentru SQL Server 2008 Service Pack 1Notă Deoarece compilările sunt cumulative, fiecare remediere nouă conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în remedierea anterioară de la SQL Server 2008. Microsoft vă recomandă să luați în considerare aplicarea celei mai recente remedieri care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:

970365 Compilările SQL Server 2008 care au fost lansate după lansarea SQL Server 2008 Service Pack 1 Remedierile rapide Microsoft SQL Server 2008 sunt create pentru anumite pachete Service Pack SQL Server. Trebuie să aplicați o remediere rapidă SQL Server 2008 Service Pack 1 la o instalare SQL Server 2008 Service Pack 1. În mod implicit, orice remediere rapidă furnizată într-un pachet Service Pack SQL Server este inclusă în următorul pachet Service Pack SQL Server.

SQL Server 2008 R2

Remedierea pentru această problemă a fost lansată pentru prima dată în actualizarea cumulativă 5. Pentru mai multe informații despre cum să obțineți acest pachet de actualizări cumulative pentru SQL Server 2008 R2, faceți clic pe următorul număr de articol pentru a vedea articolul în Baza de cunoștințe Microsoft:

2438347 Actualizare cumulativă pachetul 5 pentru SQL Server 2008 R2 Notă Deoarece compilările sunt cumulative, fiecare remediere nouă conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în versiunea anterioară de remedieri SQL Server 2008 R2. Vă recomandăm să luați în considerare aplicarea celei mai recente remedieri care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:

981356 Compilările SQL Server 2008 R2 care au fost lansate după lansarea SQL Server 2008 R2

SQL Server 2008 Service Pack 2

Remedierea pentru această problemă a fost lansată pentru prima dată în actualizarea cumulativă 2 pentru SQL Server 2008 Service Pack 2. Pentru informații suplimentare despre acest pachet de actualizări cumulative, faceți clic pe următorul număr de articol pentru a vedea articolul în Baza de cunoștințe Microsoft:

2467239 Actualizarea cumulativă 2 pentru SQL Server 2008 Service Pack 2Notă Deoarece compilările sunt cumulative, fiecare remediere nouă conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în remedierea anterioară de SQL Server 2008. Microsoft vă recomandă să luați în considerare aplicarea celei mai recente remedieri care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:

2402659 Compilările SQL Server 2008 care au fost lansate după lansarea SQL Server 2008 Service Pack 2 Remedierile rapide Microsoft SQL Server 2008 sunt create pentru anumite pachete Service Pack SQL Server. Trebuie să aplicați o remediere rapidă SQL Server 2008 Service Pack 2 la o instalare SQL Server 2008 Service Pack 2. În mod implicit, orice remediere rapidă furnizată într-un pachet Service Pack SQL Server este inclusă în următorul pachet Service Pack SQL Server.

Stare

Microsoft a confirmat că aceasta este o problemă în produsele Microsoft care sunt listate în secțiunea „Se aplică la”.

Referințe

Pentru mai multe informații despre declarația BULK INSERT, vizitați următorul site web MSDN:

Informații generale despre instrucțiunea BULK INSERT Pentru mai multe informații despre destinația OLE DB, vizitați următorul site web MSDN:

Informații generale despre destinația OLE DB Pentru informații suplimentare despre modelul incremental de service pentru SQL Server, faceți clic pe următorul număr de articol pentru a vedea articolul în Baza de cunoștințe Microsoft:

935897 Un model incremental de service este disponibil de la echipa SQL Server pentru a livra remedieri rapide pentru problemele raportate

Pentru mai multe informații despre schema de denumire pentru actualizările SQL Server, faceți clic pe următorul număr de articol pentru a vedea articolul în Baza de cunoștințe Microsoft:

822499 Schemă de denumire nouă pentru pachetele de actualizări software Microsoft SQL Server Pentru mai multe informații despre terminologia actualizării de software, faceți clic pe următorul număr de articol pentru a vedea articolul în Baza de cunoștințe Microsoft:

824684 Descrierea terminologiei standard care este utilizată pentru a descrie actualizările de software Microsoft