Update: Greifen Sie auf Verletzung beim Ausführen einer gespeicherten Prozedur, die einen Cursor für eine Table-Variable in SQL Server verwendet

Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.

Den englischen Originalartikel können Sie über folgenden Link abrufen: 3138930
Problembeschreibung
Angenommen Sie, eine gespeicherte Prozedur erstellen, die auf eine Tabellenvariable Microsoft SQL Server 2012 oder SQL Server 2014 einen Cursor verwendet. Darüber hinaus aktualisiert die gespeicherte Prozedur die Tabelle mit einerWHERE CURRENT OF -Anweisung mit dem Cursor.

Die gespeicherte Prozedur kann beispielsweise folgendermaßen aussehen:
CREATE PROCEDURE dbo.usp_TestSP AS  BEGIN  DECLARE @TableVar TABLE (SomeInt INT NULL) INSERT @TableVar VALUES (NULL)  DECLARE @curInt INT, @newInt INT SET @newInt = 1  DECLARE ccc CURSOR LOCAL FOR SELECT SomeInt FROM @TableVar WHERE SomeInt IS NULL  OPEN ccc  FETCH NEXT FROM ccc INTO @curInt UPDATE @TableVar SET SomeInt = @newInt WHERE CURRENT OF cccCLOSE ccc  SELECT * FROM @TableVar END 

Beim Ausführen der gespeicherten Prozedur das Sp_refreshsqlmodule System gespeicherte Prozedur, eine auftreten, und Sie erhalten Fehlermeldungen, die den folgenden ähneln:
Msg 596, Ebene 21, Status 1Cannot fortsetzen, weil die Sitzung den Kill-Status ist. Msg 0, Ebene 20 Fehler Zustand 0A schwerwiegend für den aktuellen Befehl. Die Ergebnisse sollten ggf. verworfen.

In dieser Situation sind Fehler, die den folgenden ähneln auch in der SQL Server-Fehlerprotokolle geschrieben:
Datum time.730 spid51 SqlDumpExceptionHandler: 51 Prozess generierte schwere Ausnahmefehler c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server beendet diesen Prozess.
date time.730 spid51 * *******************************************************************************
time.730 spid51 Datum *
time.730 spid51 Datum * STACK DUMP beginnen:
time.730 spid51 Datum * Datum Uhrzeit Spid 51
time.730 spid51 Datum *
time.730 spid51 Datum *
time.730 spid51 Datum * Ausnahmeadresse = 00007FFC270236D5 Module(sqllang+00000000005036D5)
time.730 spid51 Datum * Ausnahmecode = c0000005 EXCEPTION_ACCESS_VIOLATION
time.730 spid51 Datum * Access verletzt Adresse 0000006F00620074 lesen
time.730 spid51 Datum * Eingabe Puffer 136 Bytes -
time.730 spid51 Datum * EXECUTE Sp_refreshsqlmodule N'[Dbo]. [Usp_TestSP]'
time.730 spid51 Datum *
time.730 spid51 Datum *

Lösung

Kumulative Update-Informationen

Dieses Problem wurde in den folgenden Updates behoben:
Empfehlung: Installieren Sie das neueste kumulative Update für SQL Server

Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und alle Sicherheits-Updates, die im vorherigen kumulativen Update enthalten waren. Sehen Sie sich die neuesten kumulativen Updates für SQL Server an:
Status
Microsoft hat bestätigt, dass es sich um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt "Eigenschaften" aufgeführt sind.
Informationsquellen
Erfahren Sie mehr über die Terminologie die Microsoft zur Beschreibung von Softwareupdates verwendet.

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 3138930 – Letzte Überarbeitung: 05/31/2016 10:48:00 – Revision: 3.0

Microsoft SQL Server 2012 Service Pack 3, Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbexpertiseinter kbsurveynew kbmt KB3138930 KbMtde
Feedback