KB3138930 – KORJAUS: Käyttörikkomus, kun suoritettiin tallennettu toimintosarja, joka käyttää kohdistinta taulukon muuttujassa SQL Server

Käytetään kohteeseen
SQL Server 2012 Service Pack 3 SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Ongelman ilmenemistapa

Oletetaan, että luot tallennetun toimintosarjan, jossa kohdistin on Microsoft SQL Server 2012:ssa tai SQL Server 2014:ssä. Lisäksi tallennettu toimintosarja päivittää taulukon käyttämällä WHERE-CURRENT OF -lauseketta yhdessä kohdistimen kanssa.

Tallennettu toimintosarja voi näyttää esimerkiksi seuraavanlaiselta:

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 ccc
CLOSE ccc 

SELECT * FROM @TableVar 
END 

Kun suoritat tallennetun toimintosarjan käyttämällä sp_refreshsqlmodule järjestelmään tallennettua toimintosarjaa, saattaa tapahtua käyttöoikeusrikkomus ja näyttöön saattaa tulla seuraavanlaisia virhesanomia:

Huomautus

Msg 596, taso 21, tila 1Suoritusta ei voi jatkaa, koska istunto on tappotilassa. Sanoma 0, taso 20, tila 0 Nykyisessä komennossa tapahtui vakava virhe. Mahdolliset tulokset on hylättävä.

Tässä tilanteessa seuraavankaltaiset virheet kirjoitetaan myös SQL Server -virhelokeihin:

Huomautus

date time.730 spid51 SqlDumpExceptionHandler: Prosessi 51 loi vakavan poikkeuksen c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server lopettaa tämän prosessin.
date time.730 spid51 * *******************************************************************************
date time.730 spid51 *
date time.730 spid51 * ALOITA PINOVEDOS:
Date Time.730 SPID51 * Päivämäärä ja Kellonaika SPID 51
date time.730 spid51 *
date time.730 spid51 *
date time.730 spid51 * Poikkeusosoite = 00007FFC270236D5 Module(sqllang+00000000005036D5)
date time.730 spid51 * Poikkeuskoodi = c0000005 EXCEPTION_ACCESS_VIOLATION
date time.730 spid51 * Käyttörikkomus luettaessa osoitetta 0000006F00620074
date time.730 spid51 * Syöttöpuskuri 136 tavua -
date time.730 spid51 * EXECUTE sp_refreshsqlmodule N'[dbo]. [usp_TestSP]"
date time.730 spid51 *
date time.730 spid51 *

      

Ratkaisu

Kumulatiiviset päivitystiedot

Ongelma on korjattu seuraavissa päivityksissä:

          

Suositus: Asenna uusin kumulatiivinen päivitys SQL Server:lle

Jokainen uusi SQL Server -kumulatiivinen päivitys sisältää kaikki edelliseen kumulatiiviseen päivitykseen sisältyvät hotfix-korjaukset ja tietoturvakorjaukset. Tutustu SQL Serverin uusimpiin kumulatiivisiin päivityksiin:

      

Tila

Microsoft on vahvistanut tämän olevan ongelma niissä Microsoftin tuotteissa, jotka ovat listattuna Koskee seuraavia tuotteita -osiossa.

Viitteet

Lue tietoja Microsoftin ohjelmistopäivitystensä kuvaamiseen käyttämästä sanastosta.