REVISIÓN: SQL Server puede bloquearse cuando una solicitud de ejecución de un procedimiento almacenado remoto contiene una definición incompleta de argumentos

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

Haga clic aquí para ver el artículo original (en inglés): 3135750
Síntomas
En un servidor remoto que ejecuta Microsoft SQL Server 2012 o 2014 de SQL Server, tiene un procedimiento almacenado que tiene un argumento de salida similar al siguiente:

create procedure procExample @retVal varchar(10) outputas set @retVal = 'Goodbye';
Normalmente, la sintaxis para invocar un procedimiento remoto tan similar a la siguiente:

-- 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;
¿Si se omite el "? Parte de salida"de la sintaxis de llamada, el servidor local que ejecuta SQL Server puede bloquearse. El servidor remoto seguirán funcionando porque la ejecución nunca llega a él debido a esta omisión de sintaxis. Por ejemplo, la sintaxis es similar a la siguiente:

-- 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];
Una variable que no se ha inicializado no hace que el servidor local se bloquee. Sin embargo, genera un mensaje de error que indica que no todos los argumentos se especifican para la llamada (como debe). Por ejemplo, tiene la siguiente sintaxis:

-- 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];
En este caso, recibirá un mensaje de error similar al siguiente:

Msg 201, nivel 16, estado 4, procedimiento procExample, línea 10

Procedimiento o la función 'procExample' espera el parámetro '@retVal', que no se proporcionó.
Solución

Información de actualización

Este problema se corrigió primero en la siguiente actualización acumulativa para SQL Server:
Recomendación: Instale la actualización acumulativa más reciente para SQL Server

Cada nueva actualización acumulativa para SQL Server contiene todas las revisiones y todas las revisiones de la seguridad que se incluyeron en la actualización acumulativa anterior. Consulte las actualizaciones acumulativas más recientes para SQL Server:

Nota: Puede encontrar información acerca de la más reciente de SQL Server se construye a partir Dónde encontrar información acerca de la más reciente de SQL Server genera.
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".
Referencias
Obtenga información acerca de la terminología que utiliza Microsoft para describir las actualizaciones de software.

Advertencia: este artículo se tradujo automáticamente

Propiedades

Id. de artículo: 3135750 - Última revisión: 05/31/2016 11:24:00 - Revisión: 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 KbMtes
Comentarios