NUSTATYTI: Prieigos pažeidimas, kai vykdote Išsaugota procedūra, kuri naudoja žymeklį ant lentelės kintamojo SQL Server

SVARBU: šis straipsnis išverstas naudojant „Microsoft“ mašininio vertimo programinę įrangą ir gali būti pataisytas naudojant „Community Translation Framework“ (CTF) technologiją. „Microsoft“ siūlo mašinos išverstus ir po to bendruomenės suredaguotus straipsnius, taip pat žmogaus išverstus straipsnius siekdama suteikti prieigą prie visų savo žinių bazės straipsnių daugeliu kalbų. Mašinos išverstuose ir vėliau paredaguotuose straipsniuose gali būti žodyno, sintaksės ir / arba gramatikos klaidų. „Microsoft“ neatsako už jokius netikslumus, klaidas arba žalą, patirtą dėl neteisingo turinio vertimo arba mūsų klientų naudojimosi juo. Daugiau apie CTF žr. http://support.microsoft.com/gp/machine-translation-corrections.

Spustelėkite čia, norėdami pamatyti šio straipsnio versiją anglų kalba: 3138930
Požymiai
Tarkime, kad sukurti Išsaugota procedūra, kuri naudoja žymeklį ant lentelės kintamojo Microsoft SQL Server 2012 "arba" SQL Server 2014. Be to, Išsaugota procedūra atnaujina lentelės naudojantKai dabartinis, pareiškimą kartu su žymeklį.

Pvz., jūsų Išsaugota procedūra gali būti panašus į šiuos veiksmus:
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 

Kai vykdote jūsų Išsaugota procedūra naudojant sp_refreshsqlmodule sistemoje saugomą procedūrą, gali įvykti prieigos pažeidimo, ir galite gauti klaidos pranešimus, panašius į šiuos:
MSG 596, Level 21, būsenos 1Cannot ir toliau vykdyti dėl to, kad anuliavimo būsena yra seansas. MSG 0, lygio 20, valstybė 0A didelė klaida įvyko dabartinę komandą. Rezultatus, jei tokių yra, reikia išmesti.

Tokiu atveju SQL serverio klaida taip pat įrašo klaidas, panašus į šį:
data time.730 spid51 SqlDumpExceptionHandler: proceso 51 generuojamas lemtinga išimtis c0000005 EXCEPTION_ACCESS_VIOLATION. SQL serverio yra nutraukti šį procesą.
date time.730 spid51 * *******************************************************************************
data time.730 spid51 *
data time.730 spid51 * pradeda dėklas iškelties:
data time.730 spid51 * datos ir laiko spid 51
data time.730 spid51 *
data time.730 spid51 *
data time.730 spid51 * išimtis adresas = 00007FFC270236D5 Module(sqllang+00000000005036D5)
data time.730 spid51 * išimtis kodas = c0000005 EXCEPTION_ACCESS_VIOLATION
data time.730 spid51 * prieigos pažeidimas įvyko adreso 0000006F00620074
data time.730 spid51 * įvesties buferio 136 baitų -
data time.730 spid51 * vykdymo sp_refreshsqlmodule N'[dbo]. [usp_TestSP] "
data time.730 spid51 *
data time.730 spid51 *

Sprendimas

Kaupiamojo naujinimo informacija

Ši problema išspręsta, toliau nurodytus naujinimus:
Rekomendacija: Įdiegti naujausią kaupiamąjį naujinimą SQL Server

SQL serverio kiekvieną naują Kaupiamasis naujinimas yra visos karštosios ir naujausios saugos pataisos, kurios buvo įtrauktos į ankstesnio kaupiamojo naujinimo. Patikrinkite SQL Server kaupiamieji naujinimai:
Būsena
„Microsoft“ patvirtino, kad tai yra „Microsoft“ produktų, išvardytų skyriuje „Taikoma“, problema.
Nuorodos
Susipažinkite su terminologiją kurią „Microsoft“ naudoja programinės įrangos naujinimams apibūdinti.

Įspėjimas: šis straipsnis išverstas automatiškai

Savybės

Straipsnio ID: 3138930 – Paskutinė peržiūra: 05/31/2016 10:09:00 – Peržiūra: 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 KbMtlt
Atsiliepimai