Compartir a través de


Configuración del procesamiento de vinculación de paquetes

Enlazador de paquetes internos

El servicio DRDA convertirá SQL estático para paquetes DB2 en procedimientos almacenados de SQL Server, mediante el procesamiento de comandos DRDA Begin Bind (BGNBND) y Bind SQL Statement (BNDSQLSTT) en instrucciones DROP PROCEDURE y CREATE PROCEDURE de SQL Server. Un flujo BGNBND de DRDA contendrá uno o varios flujos BNDSQLSTT, uno por instrucción SQL almacenado en el paquete. El servicio DRDA asigna una sección de paquete SQL estático de DRDA (con una instrucción) a un procedimiento almacenado de SQL Server. El servicio DRDA asigna o preserva las opciones de enlace del paquete BGNBND en los comentarios dentro de los procedimientos almacenados, así como en las propiedades opcionales de los procedimientos almacenados extendidos. El servicio DRDA usa un transformador SQL interno para convertir la sintaxis de comandos SQL, los parámetros, los tipos de datos, los cursores y los conjuntos de resultados. Opcionalmente, puede desarrollar un agente de escucha de enlace de paquetes personalizado para procesar los paquetes de forma interactiva con el servicio DRDA o fuera de línea.

Proceso Empaquetado

El atributo createPackageProcedure indica al servicio DRDA que procese un único flujo BGNBND en un procedimiento almacenado de SQL Server, transformando las instrucciones originales definidas por los flujos BNDSQLSTT de DRDA en la sintaxis de SQL Server correspondiente. Este atributo opcional acepta un valor booleano. El valor predeterminado es true.

Paquete XML

El atributo createPackageXml indica al servicio DRDA que procese un único flujo BGNBND en un archivo XML de paquete SQL estático para DB2, conservando las instrucciones y las opciones de enlace originales tal como se definen en los flujos BNDSQLSTT de DRDA. Este atributo opcional acepta un valor booleano . El valor predeterminado es false.

Nota:

El servicio DRDA procesará un DRDA PKGRPLOPT (opción de reemplazo de paquetes) mediante la transformación de este punto de código en una instrucción DROP PROCEDURE.

Formato XML del paquete

El atributo packageXmlFormat indica al servidor DRDA que escriba el archivo SQL estático para XML DB2 en el formato v90 o v85. Este atributo opcional acepta un valor de cadena de v85 o v90. El valor predeterminado es v90.

Nota:

Microsoft HIS 2010 2013 (V9) admite tanto el formato antiguo como el nuevo, que incluye un esquema XML asociado para validar el documento XML. Microsoft HIS 2009 y HIS 2010 (V8.5) solo admiten el formato antiguo.

Ubicación XML del paquete

El atributo packageXmlLocation indica al servicio DRDA dónde escribir el archivo XML estático de SQL para el paquete DB2. Este atributo opcional acepta un valor de cadena. El valor predeterminado es c:\temp.

Nota:

El servicio DRDA no valida la sintaxis del comando SQL al procesar el BGNBND de DRDA en un archivo SQL estático para DB2 XML. El servicio DRDA conserva las opciones de enlace originales, la sintaxis de instrucciones SQL, los tipos de datos y otros valores.

Nombre del procedimiento almacenado

DRDA define un paquete SQL estático completo mediante un PKGNAMCT (nombre de paquete y token de coherencia) que consta de estas varias partes.

  • RDBNAM (nombre de base de datos relacional)

  • DRDA RDBCOLID (identificador de colección RDB)

  • DRDA PKGID (identificador de paquete RDB)

  • DRDA PKGCNSTKN (token de coherencia de paquetes RDB)

  • DRDA PKGSN (número de sección de paquete)

    El servicio DRDA convierte el nombre del paquete DRDA en un nombre de procedimiento almacenado de SQL Server, quitando la parte RDBNAM, separando RDBCOLID mediante un punto y, a continuación, separando las tres partes restantes con un solo carácter de subrayado.

    Convención de nomenclatura de paquetes SQL estáticos de DRDA BGNBND:

RDBNAME.RDBCOLID.PKGID.PKGCNSTKN.PKGSN  

Convención de nomenclatura de procedimientos almacenados de SQL Server mapeada por el servicio DRDA:

CollectionIdentifer.PackageIdentifier_PackageConsistencyToken_PackageSectionNumber  

Esquema y nombre del paquete original:

CONTOSO.DSN8HC91_PKGSAMP1_43484152544F4B31_1  

Esquema y nombre del paquete mapeado

ContosoRetailDW.DSN8910_PKGSAMP1_43484152544F4B31_1  

El atributo storedProcedureNameSeparator indica al servicio DRDA qué carácter separador usar al asignar un nombre de paquete DRDA a un nombre de procedimiento almacenado de SQL Server. Este atributo opcional acepta un valor de cadena . El valor predeterminado es un carácter de subrayado único (_).

Opciones de enlace de paquetes

El atributo createPackageProcedureWithExtendedProperties indica al servicio DRDA que conserve las opciones de enlace del paquete BGNBND como propiedades extendidas en el procedimiento almacenado de SQL Server. Este atributo opcional acepta un valor booleano . El valor predeterminado es false.

Esquema del procedimiento de empaquetado

El servicio DRDA procesará los comandos DRDA EXCSQLSTT (Execute SQL Statement) y OPNQRY (Open Query) mediante la ejecución de una instrucción CALL de SQL Server en un procedimiento almacenado de SQL Server correspondiente. El servicio DRDA localizará el procedimiento almacenado de SQL Server de destino en un nombre de esquema derivado del valor del RDBCOLID (Identificador de Colección RDB), dentro del nombre de paquete y token de coherencia de DRDA PKGNAMCT, o del nombre de paquete completamente calificado que forma parte de los flujos de comandos DRDA EXCSQLSTT y OPNQRY.

PackageProcedureSchemaList indica al servicio DRDA que busque el procedimiento almacenado de SQL Server de destino en esquemas alternativos. Este atributo opcional acepta un valor de cadena . El valor predeterminado es una cadena vacía. La cadena se compone de nombres de esquema de SQL Server separados por comas.

packageProcedureSchemaList="DBO,DSN8910"

El atributo packageProcedureSchemaList es similar al registro especial CURRENT PACKAGESET y a la instrucción SET CURRENT PACKAGESET de IBM DB2 para z/OS. El servicio DRDA combinará las convenciones de asignación de nomenclatura contenidas en el elemento databaseAliases y el atributo packageProcedureSchemaList.

Esquema y nombre del paquete original:

CONTOSO.DSN8HC91_MSDB2SDK_43484152544F4B31_1  

Esquema y nombre del paquete mapeado

ContosoRetailDW.DSN8910_MSDB2SDK_43484152544F4B31_1  

En primer lugar, el servicio DRDA intentará localizar los metadatos del procedimiento almacenado de SQL Server de destino en la caché de procedimientos de paquetes del servicio DRDA, mediante el nombre literal del procedimiento de paquete y luego usar el nombre asignado mediante los valores de la lista de esquemas del procedimiento de paquete.

En segundo lugar, el servicio DRDA intentará localizar los metadatos del procedimiento almacenado de destino de SQL Server en el catálogo de bases de datos de SQL Server, utilizando el nombre literal del procedimiento de paquete y luego el nombre asignado según los valores de la lista de esquemas del procedimiento de paquete.

Caché de procedimientos del paquete

El servicio DRDA procesará los comandos DRDA EXCSQLSTT (Execute SQL Statement) y OPNQRY (Open Query) mediante la ejecución de una instrucción CALL de SQL Server en un procedimiento almacenado de SQL Server correspondiente. Antes de ejecutar la instrucción CALL, el servicio DRDA capturará metadatos para el procedimiento almacenado de SQL Server con el que comprobar el tipo de instrucción (SELECT, INSERT, UPDATE, DELETE), el tipo de cursor (WITH HOLD), los tipos de datos de parámetro (por ejemplo, CHAR FOR BIT) y otros atributos (por ejemplo, tiene resultados). Después de capturar los metadatos, el servicio DRDA almacenará en caché esta información, incluido el nombre del procedimiento asignado, para un intervalo configurado en una caché de procedimientos de paquete.

Vaciado de caché de procedimientos de paquete

El atributo packageProcedureCacheFlush indica al servidor DRDA que vacíe la memoria caché del procedimiento de paquete después de un intervalo de tiempo especificado. Este atributo opcional acepta un valor de duración . El valor predeterminado es P1D (el período de tiempo es 1 día). El valor de duración se especifica con el formato PnYnMnDTnHnMnS.

Elemento Descripción
P Período de duración (obligatorio)
Ny Número de años.
nm Número de meses.
Nd Número de días.
T Inicio de una sección de tiempo (necesario para especificar una duración de tiempo compuesta por horas, minutos o segundos).
Nh Número de horas.
Nm Número de minutos.
S Número de segundos.

Duración del tiempo expresado en formato XML.

Última invocación del procedimiento del paquete

El atributo packageProcedureLastInvoke indica al servidor DRDA que escriba los nombres de los objetos en la memoria caché del procedimiento de paquete en un archivo de texto, %DRDAROOT%\LastInvokePackageProcedures.txt, después de un intervalo de tiempo especificado. Este atributo opcional acepta un valor de duración . El valor predeterminado es P7D (el período de tiempo es 7 días). Al iniciar el servicio, el servicio DRDA cargará este archivo de texto para capturar previamente el esquema de los procedimientos enumerados en el archivo. El valor de duración se especifica con el formato PnYnMnDTnHnMnS.

Elemento Descripción
P Período de tiempo durante la duración (obligatorio)
Ny Número de años.
Nm Número de meses.
Nd Número de días.
T Inicio de una sección de tiempo (es necesario especificar una duración que consta de horas, minutos o segundos).
nH Número de horas.
Nm Número de minutos.
S Número de segundos.

Duración del tiempo expresado en formato XML.

Nota:

Para mejorar el rendimiento del inicio del servicio, puede editar este archivo y quitar los nombres de procedimientos almacenados innecesarios. Para mejorar el rendimiento de la ejecución en tiempo de ejecución, puede editar este archivo para incluir nombres de procedimiento almacenados adicionales. Para deshabilitar la lectura y escritura del archivo LastInvokePackageProcedures.txt, establezca el intervalo de tiempo en PT0S (período de tiempo cero segundos).

Enlazador de paquetes personalizados

El servicio DRDA admite encuadernadores de paquetes personalizados en forma de un agente de escucha personalizado del .NET Framework. Consulte Guía y referencia del programador para obtener información sobre el ejemplo de agente de escucha de enlace de paquetes personalizado. El elemento packageBindListeners contiene uno o varios elementos packageBindListener para indicar al servidor DRDA que envíe el paquete de enlace junto con la salida de la instrucción SQL de enlace a oyentes de enlace personalizados opcionales. El elemento packageBindListener contiene un conjunto de atributos para definir un agente de escucha de enlace personalizado. El tipo es Microsoft.HostIntegration.Drda.Common.PackageBindListener, que define un agente de escucha de enlace personalizado del servidor DRDA.

Escuchador de enlace personalizado

El atributo createPackageProcedureWithCustomSqlScripts indica al servicio DRDA que procese DRDA BGNBND y BNDSQLSTT a través de un componente de escucha de enlace de paquete personalizado externo. Este atributo opcional acepta un valor booleano . El valor predeterminado es false.

Nota:

Se debe hacer referencia al componente "listener" de enlace de paquetes personalizado en el MsDrdaService.exe.config como se indica a continuación.

<packageBindListeners>  
    <packageBindListener  
      type="Microsoft.HostIntegration.Drda.Common.PackageBindListener, Microsoft.HostIntegration.Drda.Common, Version=9.0.1000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"  
      errorWhenNoCallback="true"/>  
  </packageBindListeners>  

Valores predeterminados para packageBindListener en el archivo de configuración de la aplicación del servicio DRDA.

Error cuando no hay devolución de llamada

El atributo errorWhenNoCallback indica al servicio DRDA que devuelva BGNBNDRM (Begin Bind Reply Message) al cliente AR de DRDA, cuando el componente de escucha de enlace personalizado no devuelve ninguna información sobre la interfaz de devolución de llamada. Este atributo opcional acepta un valor booleano . El valor predeterminado es true.