PARANDUS: SQL Server võib tabada krahh, kui kaugtöölaua salvestatud protseduuri läbiviimiseks taotlus sisaldab argumenti puudulik definitsioon

NB! Artikkel on tõlgitud Microsofti masintõlketarkvaraga ja seda saab parandada Kogukonnapõhise tõlkeraamistiku (CTF) tehnoloogiaga. Microsoft pakub masintõlgitud, kogukonna järeltöödeldud ja inimtõlgitud artikleid, et anda mitmekeelne juurdepääs kõigile meie teabebaasi artiklitele. Masintõlgitud ja järeltöödeldud artiklites võib olla sõnavara-, süntaksi- ja/või grammatikavigu. Microsoft ei vastuta mingite ebatäpsuste, tõrgete ega kahjude eest, mis on tulenenud sisu valest tõlkest või selle kasutamisest meie klientide poolt. Lisateavet CTF-i kohta leiate aadressilt http://support.microsoft.com/gp/machine-translation-corrections/et.

Artikli ingliskeelse versiooni kuvamiseks klõpsake siin: 3135750
Sümptomid
Remote server, kus töötab Microsoft SQL Server 2012 või SQL Server 2014 on salvestatud protseduuri, mis on argument väljund, mis sarnaneb järgmisega:

create procedure procExample @retVal varchar(10) outputas set @retVal = 'Goodbye';
Tavaliselt kutsuda remote procedure süntaks sarnaneb järgmisega:

-- Declare a variable to hold a result, and have it initialized with a non-NULL valuedeclare @outputResult varchar(10) = 'Hello';execute ('MyDb.dbo.procExample ? OUTPUT', @outputResult OUTPUT) at [MyRemoteServer];print @outputResult;
Kui jätate selle "? Kõne süntaks väljund"osa kohalikus serveris, kus töötab SQL Server võib tabada krahh. Kaugserveri edasi töötada, kuna execution kunagi jõuab see väljajätt süntaksi tõttu. Näiteks süntaks sarnaneb järgmisega:

-- Declare a variable to hold a result, and have it initialized with a non-NULL valuedeclare @outputResult varchar(10) = 'Hello';execute ('MyDb.dbo.procExample', @outputResult OUTPUT) at [MyRemoteServer];
Muutuja, mis pole lähtestatud põhjustada krahhi kohalikus serveris. Kuid see luua tõrketeate, mis ütleb, et kõiki argumente määratud kõne (kui peaks). Näiteks on järgmine süntaks:

-- Declare a variable to hold a result, and initialize it with NULL, or leave uninitializeddeclare @outputResult varchar(10) = NULL;execute ('MyDb.dbo.procExample', @outputResult OUTPUT) at [MyRemoteServer];
Sel juhul kuvatakse tõrketeade, mis sarnaneb järgmisega:

MSG 201, tase 16, oleku 4 ja protseduur procExample, rida 10

Protseduur või funktsioon "procExample" eeldab parameetri "@retVal", mille on esitanud.
Lahendus

Värskenduse teave

See probleem parandati esmakordselt SQL serveri järgmise koondvärskenduse:
Soovitus: Installige uusim koondvärskendus SQL Server

Iga uue SQL serveri koondvärskendus sisaldab kõiki Kiirparandusi ja kõiki turbeparandusi, mis sisaldusid eelmises koondvärskenduses. Vaadake SQL serveri kumulatiivseid värskendusi:

Märkus Leiate teavet uusima SQL serveri järgud: Kust leida teavet uusima SQL serveri järgud.
Olek
Microsoft on kinnitanud, et see probleem esineb jaotises "Kehtib järgmiste toodete kohta" loetletud Microsofti toodetel.
Viited
Teave selle terminoloogia mida Microsoft kasutab tarkvaravärskenduste kirjeldamiseks.

Hoiatus. See artikkel on masintõlgitud.

Atribuudid

Artikli ID: 3135750 – viimati läbi vaadatud: 05/31/2016 11:26:00 – redaktsioon: 3.0

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 KB3135750 KbMtet
Tagasiside