FIX: SQL Server loopt vast wanneer een aanvraag voor het uitvoeren van een extern opgeslagen procedure onvolledige definitie van argumenten bevat

BELANGRIJK: Dit artikel is vertaald door middel van automatische vertalingssoftware van Microsoft en is mogelijk nabewerkt door de Microsoft Community via CTF-technologie (Community Translation Framework) of door een menselijke vertaler. Microsoft biedt zowel automatisch vertaalde, door mensen vertaalde en door de community nabewerkte artikelen aan, zodat er in meerdere talen toegang is tot alle artikelen in onze Knowledge Base. Een vertaald of bewerkt artikel kan fouten bevatten in vocabulaire, syntaxis of grammatica.. Microsoft is niet verantwoordelijk voor eventuele onjuistheden, fouten of schade ten gevolge van een foute vertaling van de inhoud van een bericht of het gebruik van deze vertaalde berichten door onze klanten.

De Engelstalige versie van dit artikel is de volgende: 3135750
Symptomen
Op een externe server waarop Microsoft SQL Server 2012 of SQL Server 2014 hebt u een opgeslagen procedure met een argument voor uitvoer met de volgende strekking weergegeven:

create procedure procExample @retVal varchar(10) outputas set @retVal = 'Goodbye';
Normaal gesproken de syntaxis voor het aanroepen van een externe procedure de volgende strekking weergegeven:

-- 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;
Als u geen waarde opgeeft de '? UITVOER' deel van de call-syntaxis, de lokale server waarop SQL Server loopt vast. De externe server blijven werken omdat de uitvoering van dit nooit bereikt door het nalaten van deze syntaxis. Bijvoorbeeld de syntaxis van de volgende strekking weergegeven:

-- 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];
Een variabele die niet is geïnitialiseerd, wordt niet de lokale server vastloopt. Het genereert echter een foutbericht waarin wordt gemeld dat niet alle argumenten worden opgegeven voor het gesprek (zoals ze zijn moeten). U hebt bijvoorbeeld de volgende syntaxis:

-- 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];
In dit geval wordt een foutbericht van de volgende strekking:

Msg 201, niveau 16, 4 staat, de Procedure procExample, regel 10

Procedure of functie 'procExample' verwacht parameter '@retVal', die niet is opgegeven.
Oplossing

Update-informatie

Dit probleem werd in eerste instantie opgelost in de volgende cumulatieve update voor SQL Server:
Aanbeveling: Installeer de meest recente cumulatieve update voor SQL Server

Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en alle beveiligingscorrecties die zijn opgenomen in de vorige cumulatieve update. Bekijk de meest recente cumulatieve updates voor SQL Server:

Opmerking U vindt informatie over de nieuwste SQL Server maakt van Waar vind ik informatie over de nieuwste SQL Server maakt.
Status
Microsoft heeft bevestigd dat dit probleem kan optreden in de Microsoft-producten die worden vermeld in de sectie 'Van toepassing op'.
Referenties
Meer informatie over de terminologie die door Microsoft wordt gebruikt om software-updates te beschrijven.

Waarschuwing: dit artikel is automatisch vertaald

Eigenschappen

Artikel-id: 3135750 - Laatst bijgewerkt: 05/31/2016 11:58:00 - Revisie: 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 KbMtnl
Feedback