Sümptomid
Oletagem, et luua salvestatud protseduur, mis kasutab kursorit tabeli muutujas Microsoft SQL Server 2012 või SQL Server 2014. Lisaks värskendab salvestatud protseduur tabelit, kasutades seda, kus on koos kursoriga märge. Näiteks võib teie salvestatud protseduur sarnaneda järgmisega.
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
Kui täidate salvestatud protseduuri sp_refreshsqlmodule süsteemi salvestatud protseduuri abil, võib ilmneda juurdepääsurikkumine ja võidakse kuvada tõrketeated, mis näeb välja järgmine:
MSG 596, tase 21, riigi 1Cannot jätkake täitmist, kuna seanss on olekus Kill. MSG 0, tase 20, riigi 0A raske tõrge ilmnes praegune käsk. Tulemid, kui need on olemas, tuleks hävitada.
Selles olukorras kirjutatakse SQL serveri tõrkelogi tõrked, mis näeb välja järgmine:
kuupäeva kellaaeg. 730 spid51 SqlDumpExceptionHandler: protsessi 51 genereeritud fataalne erand c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.date time.730 spid51 * *******************************************************************************date time.730 spid51 *date time.730 spid51 * BEGIN STACK DUMP:date time.730 spid51 * date time spid 51date time.730 spid51 *date time.730 spid51 *date time.730 spid51 * Exception Address = 00007FFC270236D5 Module(sqllang+00000000005036D5)date time.730 spid51 * Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATIONdate time.730 spid51 * Access Violation occurred reading address 0000006F00620074date time.730 spid51 * Input Buffer 136 bytes -date time.730 spid51 * EXECUTE sp_refreshsqlmodule N'[dbo]. [usp_TestSP] "kuupäeva kellaaeg. 730 spid51 * Date Time. 730 spid51 *
Lahendus
Kumulatiivse värskenduse teave
See probleem on lahendatud järgmistes värskendustes.
-
Kumulatiivne värskendus 13 SQL Server 2014
-
Kumulatiivne Update 6 SQL Server 2014 Service Pack 1 (SP1)
-
Kumulatiivne Update 2 SQL Server 2012 Service Pack 3 (SP3)
-
Kumulatiivne värskendus 11 SQL Server 2012 Service Pack 2 (SP2)
Iga uus koondvärskenduses SQL Server sisaldab kõiki käigultparandused ja kõik turvaparandusi, mis kuulusid eelmise koondvärskenduse. Vaadake SQL serveri kumulatiivseid värskendusi.
Olek
Microsoft on kinnitanud, et see probleem esineb jaotises "kehtib järgmiste toodete kohta" loetletud Microsofti toodetes.
Viited
Siit leiate teavet selle kohta, mida Microsoft kasutab tarkvaravärskenduste kirjeldamiseks.