Soluciones a problemas comunes

Es posible que encuentre estos problemas comunes al usar el servicio DRDA.

No se puede iniciar el servicio DRDA como aplicación de consola

Si no puede iniciar el servicio DRDA como una aplicación de consola, compruebe si el servicio DRDA ya se está ejecutando como un servicio.

  • En el menú Inicio, seleccione Todos los programas, Microsoft Visual Studio 2010, seleccione Visual Studio Tools, haga clic con el botón derecho en Símbolo del sistema de Visual Studio x64 Win64 (2010) y haga clic en Ejecutar como administrador. Aparecerá el cuadro de diálogo Control de cuentas de usuario . Haga clic en para continuar.

  • En el símbolo del sistema, escriba net stop msdrdaservice y presione Entrar.

    C:\Windows\system32>net stop msdrdaservice
    The Microsoft Service for DRDA service is stopping.
    The Microsoft Service for DRDA service was stopped successfully.
    

Agentes de escucha personalizados

Al iniciar el servicio, el servicio DRDA escribirá entradas de advertencia en el drdaAsTextListener interno y DrdaAsConsoleListener, notificando al profesional de TI que el servicio DRDA no pudo cargar agentes de escucha personalizados (enlace, texto, otro).

Agente de escucha de enlace personalizado

El servicio DRDA admite agentes de escucha de enlace personalizados, que pueden admitir uno de los dos formatos de documento XML estáticos de SQL para DB2: HIS 2010 (v8.5) o HIS 2013 (v9.0). En una devolución de llamada de un agente de escucha de enlace personalizado, el servicio DRDA puede registrar este error.

Error:2:2:[sep 13 2012 10:44:09.571] SqlDatabase::CreateXMLForPackage::OnPackageBound(xmlstring ... out sqlscripts) no sql scripts are passed back.
Error:2:2:[sep 13 2012 10:44:09.573] SqlDatabase::CreateXMLForPackage::OnPackageBound(xmlstring, ..., out sqlscripts)  Null and empty scripts passed from custom binder
Error:2:4:[sep 13 2012 10:44:09.575] SqlDatabase::CreateXMLForPackage::OnPackageBound(xmlstring, ..., out sqlscripts)    at Microsoft.HostIntegration.Drda.RDB.SqlDatabase.CreateXMLForPackage

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

En este caso, debe intentar especificar el valor "v85" y volver a solicitar el comando bind o bind copy.

packageXmlFormat="v85"

Atributo de formato XML estático de SQL para paquete DB2.

Nota

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

Problema con el error de conexión de prueba del cliente de Microsoft para DB2

Could not connect to data source 'DATASOURCE':
An internal network library error has occurred. A network level syntax error has occurred.

La solución consiste en comprobar la configuración del servicio DRDA para el inicio de sesión único de Enterprise.

En primer lugar, compruebe que ha configurado Enterprise Single Sign-On para Host-Initiated SSO y, a continuación, vuelva a iniciar el servicio EntSSO, siguiendo los pasos 6 y 7 de la sección titulada "Configuración de HIS 2010 y ESSO V4.5".

En segundo lugar, compruebe que ha asignado correctamente las credenciales de host y Windows; para ello, siga los pasos 11-13 de la sección titulada "Para definir una aplicación afiliada de ESSO para el inicio de sesión único iniciado por Windows". Además, compruebe que usa las credenciales de host correctas del cliente de Microsoft para DB2 al probar la conexión.

El problema con IBM QMF para z/OS con el nombre de ubicación no se conoce

IBM QMF para el error de conexión z/OS (por ejemplo, SELECT * FROM HISDEMO1). DBO. CUSTOMERS) devolverá el siguiente error.

The location name is not known to the local DB2 subsystem.

La solución es comprobar db2 para la base de datos de configuración z/OS y volver a iniciar DDF según sea necesario.

En primer lugar, compruebe que ha actualizado las tablas de catálogo db2 para z/OS (SYSIBM). LOCATIONS, SYSIBM. IPNAMES y SYSIBM. USERNAMES) con la base de datos relacional remota.

En segundo lugar, pida al administrador de DB2 z/OS que detenga e inicie de nuevo db2 para z/OS Distributed Data Facility (DDF), que es la puerta de enlace del protocolo DRDA y, a continuación, vuelva a probar la consulta SQL.

Problema con IBM QMF para z/OS con un error de recurso no disponible

IBM QMF para el error de conexión z/OS (por ejemplo, SELECT * FROM HISDEMO1). DBO. CUSTOMERS) devolverá el siguiente error.

Unsuccessful execution caused by an unavailable resource. (Reason code:
00D300F4; type of resource: 00001005; and resource name: NAME).
The DRDA AS log will have the following corresponding error.
Could not map use rid/password to a valid windows account. Authentication failed.

La solución es comprobar db2 para la base de datos de configuración z/OS y volver a iniciar DDF según sea necesario.

En primer lugar, compruebe que ha actualizado las tablas de catálogo db2 para z/OS (SYSIBM). LOCATIONS, SYSIBM. IPNAMES y SYSIBM. USERNAMES) con la base de datos relacional remota.

En segundo lugar, pida al administrador de DB2 z/OS que detenga e inicie de nuevo db2 para z/OS Distributed Data Facility (DDF), que es la puerta de enlace del protocolo DRDA y, a continuación, vuelva a probar la consulta SQL.

Problema con IBM QMF para z/OS con errores de sintaxis o infracción de regla de acceso

IBM QMF para z/OS, SPUFI, DB2 Administración u otro programa no puede consultar un alias DB2 para z/OS (por ejemplo, DBO). REMAREAS) sobre una tabla de SQL Server (por ejemplo, HISDRDA1. DBO. AREAS), con drda AS, devolviendo el siguiente error.

DSNT408I SQLCODE =   -204, SQLSTATE = 42704, SYNTAX ERROR OR ACCESS RULE VIOLATION FROM DB2 UDB for AIX, Linux, HP-UX, Sun, and Windows TOKENS 'DBO.REMAREAS' IS AN UNDEFINED NAME.

El registro de AS de DRDA tendrá el siguiente error correspondiente.

DrdaAs Information: 7 : [9/19/2011 4:30:55 PM] Processing PRPSQLSTT "SELECT * FROM DBO.REMAREAS"
DrdaAs Error: 7 : [9/19/2011 4:30:55 PM] Message: Invalid object name 'DBO.REMAREAS'.

La solución es comprobar que ha creado un alias o vista de SQL Server correspondiente.

Por ejemplo:

CREATE VIEW [dbo].[REMAREAS]
AS
SELECT     dbo.AREAS.*
FROM         dbo.AREAS

Problema con IBM QMF para z/OS con un error de comunicaciones

IBM QMF para el error de conexión z/OS (por ejemplo, SELECT * FROM HISDEMO1). DBO. CUSTOMERS) devolverá el siguiente error.

A communications error was detected.
Message No: DSQ10427.

Ibm QMF para z/OS Messages and Codes Reference define QMF message DSQ10427 como SQLCODE -30081. La referencia de códigos de IBM DB2 para z/OS define SQLCODE -30081 como error de comunicaciones.

La solución consiste en comprobar que la lista de excepciones del Firewall de Windows incluye el programa MsDrdaService.exe en el equipo del servicio DRDA.

  1. En el menú Inicio, seleccione Panel de control, haga clic en Sistema y seguridad, haga clic en Firewall de Windows, haga clic en Permitir un programa o característica a través del Firewall de Windows, haga clic en Cambiar configuración, haga clic en Permitir otro programa, haga clic en Examinar, escriba "%SNAROOT%\MsDrdaService.exe" y, a continuación, haga clic en Agregar y, a continuación, haga clic en Aceptar.

  2. Vuelva a iniciar el servicio DRDA.

Error en la instrucción SELECT o CALL del cliente DRDA

Los programas cliente DRDA enlazarán un conjunto de paquetes estándar que contienen instrucciones DECLARE CURSOR básicas, con las que definir cómo capturar y devolver resultados en instrucciones SELECT y CALL. Si se produce un error en la instrucción , compruebe si el paquete o la colección aparece en el archivo IgnoreStandardPacakges.txt. Si aparece, quite la referencia, vuelva a enlazar y vuelva a ejecutar la instrucción .

Error de conexión de la base de datos relacional de access

El servicio DRDA se conectará a una base de datos de SQL Server mediante la cadena de conexiones del MsDrdaService.exe.config en respuesta a una solicitud ACCRDB (Access Relational Database) de DRDA. En determinadas circunstancias, el intento de conexión de base de datos SQL Server puede producir el siguiente error.

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server).

El servicio DRDA devolverá al cliente DRDA el siguiente error de IBM DB2.

SQLCODE -30041
SQLSTATE 57013
Error Text: EXECUTION FAILED DUE TO UNAVAILABLE RESOURCES THAT WILL AFFECT THE SUCCESSFUL EXECUTION OF SUBSEQUENT COMMANDS AND SQL STATEMENTS.

En estos casos, debe usar la documentación de Microsoft SQL Server y los procedimientos recomendados para determinar la causa del error de conexión.

Problema con el error de autenticación al usar el inicio de sesión único iniciado por el host

Al recibir conexiones enlazadas desde DB2 para z/OS usa la autenticación del servicio DRDA, el servicio DRDA se autenticará solo en función del nombre de usuario. SECMEC (Mecanismo de seguridad) de ACCSEC (Seguridad de acceso) de DRDA es USRIDONL (Solo id. de usuario).

El servicio DRDA puede escribir el siguiente error en el agente de escucha de seguimiento al procesar EL SECCHK (Comprobación de seguridad) de DRDA.

  • No se pudo autenticar al usuario: error al iniciar sesión de SSO LogonExternalUser con el valor de userid/passwd especificado.

    Para admitir este método de autenticación mediante Enterprise Single Sign-On iniciado por el host, debe establecer la propiedad Comprobar credenciales externas en True en la aplicación afiliada.

Problema con error al procesar BNDSQLSTT cuando los nombres de parámetro contienen guiones

Según MSDN, Microsoft SQL Server no reconoce nombres de variables ni parámetros de procedimiento almacenados que están delimitados. Este tipo de identificadores debe cumplir las reglas de formato de los identificadores normales. Vea https://msdn.microsoft.com/library/ms176027.aspx. Sin embargo, los nombres de parámetros PL/I y COBOL contienen guiones y otros caracteres especiales. La solución es para que el servicio DRDA procese el BGNBND BNDSQLSTT quitando caracteres especiales y reemplazando por un único carácter de subrayado. Por ejemplo, el servicio DRDA reemplaza el nombre del parámetro SQL estático "PARM-1" por SQL Server nombre de parámetro de procedimiento almacenado "PARM_1". El servicio DRDA usa el valor reemplazado al procesar BGNBIND BNDSQLSTT en un procedimiento almacenado SQL Server o en un archivo de definición XML de SQL estático para DB2. Vea la lista de caracteres no válidos en la referencia de T-SQL, en https://msdn.microsoft.com/library/aa224033(v=SQL.80).aspx.

Valor original Valor reemplazado
tilde (~)
guión (-)
signo de exclamación de cierre (!)
llave de apertura ({)
porcentaje (%)
llave de cierre (})
símbolo de intercalación (^)
apóstrofo (')
y comercial (&)
punto (.)
paréntesis de apertura (()
barra diagonal inversa (\)
paréntesis de cierre ())
acento grave (`)

El servicio DRDA reemplaza los caracteres no válidos por un carácter de subrayado único.

Problema con el procesamiento de BGNBND BNDSQLSTT cuando el token de coherencia es ilegible

La solución es para que DRDA AS procese el BGNBND BNDSQLSTT mediante una representación hexadecimal del token de coherencia de 8 bytes.

Problema con el tiempo de espera de conexión al conectarse a SQL Server asociado de creación de reflejo

Posibles errores durante la creación de reflejo de la base de datos

Problema al cargar el agente de escucha de enlace personalizado en el inicio del servicio

El servicio DRDA devolverá una advertencia si no puede cargar un agente de escucha de enlace personalizado en el inicio del servicio. La advertencia no impide que se inicie el servicio DRDA.

Este problema puede deberse a que el servicio DRDA no puede acceder al agente de escucha de enlace personalizado o al directorio en el que el agente de escucha de enlace personalizado está configurado para escribir la copia de enlace en archivos XML o de seguimiento. El administrador debe establecer los derechos de lista de control de acceso adecuados en estos directorios.

Todos los miembros del grupo de usuarios en tiempo de ejecución de HIS deben tener derechos de lectura y ejecución en el directorio del sistema de archivos de programa en el que está instalada la biblioteca de vínculos dinámicos del agente de escucha de enlace personalizado. Todos los miembros del grupo De usuarios en tiempo de ejecución de HIS deben tener derechos de escritura, lectura y ejecución para enlazar la copia a directorios en los que el agente de escucha de enlace personalizado escribirá copia de enlace en archivos XML y de seguimiento.

Problema cuando el agente de escucha de enlace personalizado no vuelve en la interfaz de devolución de llamada.

El servicio DRDA no devolverá un BGNBNDRM (Begin Bind Error Reply Message) al cliente del solicitante de la aplicación DRDA cuando un agente de escucha de enlace personalizado no vuelva al servicio DRDA una instrucción DDL CREATE PROCEDURE. El atributo errorWhenNoCallback indica al servicio DRDA que devuelva BGNBNDRM (Begin Bind Reply Message) al cliente DRDA AR, cuando el componente de escucha de enlace personalizado no devuelve ninguna información en la interfaz de devolución de llamada. Este atributo opcional acepta un valor booleano . El valor predeterminado es true.


<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.

Problema al iniciar el servicio DRDA como una aplicación de línea de comandos

Al iniciar el servicio DRDA como una aplicación de línea de comandos, el programa puede producir un error.

C:\Program Files\Microsoft Host Integration Server 2013\system>MsDrdaService.exe -c
Only one usage of each socket address (protocol/network address/port) is normally permitted

La solución consiste en detener el servicio DRDA ya en ejecución como servicio de Windows.

Con una ventana de comandos, puede detener e iniciar el servicio DRDA.

  1. En el menú Inicio, seleccione Todos los programas, Microsoft Visual Studio 2010, seleccione Visual Studio Tools, haga clic con el botón derecho en Símbolo del sistema de Visual Studio x64 Win64 (2010) y haga clic en Ejecutar como administrador. Aparecerá el cuadro de diálogo Control de cuentas de usuario . Haga clic en para continuar.

  2. En el símbolo del sistema, escriba net stop msdrdaservice y presione Entrar.

    C:\Windows\system32>net stop msdrdaservice
    The Microsoft Service for DRDA service is stopping.
    The Microsoft Service for DRDA service was stopped successfully.
    

    Con una ventana de comandos, puede ejecutar el servicio DRDA como una aplicación.

  3. En el menú Inicio, seleccione Todos los programas, Microsoft Visual Studio 2010, seleccione Visual Studio Tools, haga clic con el botón derecho en Símbolo del sistema de Visual Studio x64 Win64 (2010) y haga clic en Ejecutar como administrador. Aparecerá el cuadro de diálogo Control de cuentas de usuario . Haga clic en para continuar.

  4. En el símbolo del sistema, escriba net stop msdrdaservice y presione Entrar.

    C:\Windows\system32>net stop msdrdaservice
    The Microsoft Service for DRDA service is stopping.
    The Microsoft Service for DRDA service was stopped successfully.
    
  5. En el símbolo del sistema, escriba cd C:\Windows\system32>cd C:\Program Files\Microsoft Host Integration Server 2013\system y presione Entrar.

    C:\Program Files\Microsoft Host Integration Server 2013\system>MsDrdaService.exe -c
    DrdaAs Information: 0 : [10/4/2011 4:51:48 PM] Microsoft Service for DRDA (build: 9.0.1203.0 )
    DrdaAs Information: 0 : [10/4/2011 4:51:48 PM] TCP communication manager listening on port 446
    

    Nota

    El escritor de registros del servicio DRDA generará información en la ventana de la consola.

No se puede cargar el agente de escucha de enlace de paquetes personalizado

Al iniciar el servicio, si el servicio DRDA no puede cargar un agente de escucha de enlace de paquetes personalizado, el servicio DRDA registrará la siguiente advertencia.

Warning:0:2:[Apr 30 2012 16:04:12.996] SessionManager::Initialize PackageBindingListener failed to load type: " Microsoft.HostIntegration.Drda.Common.PackageBindListener, Microsoft.HostIntegration.Drda.Common, Version=9.0.1000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL "

En tiempo de ejecución, si MsDrdaService no puede cargar un agente de escucha de enlace de paquete personalizado, msDrdaService no devolverá un error.

Nota

El servicio DRDA seguirá ejecutándose sin advertencia adicional. El servicio DRDA admite varios agentes de escucha de enlace de paquetes personalizados simultáneos. El profesional o desarrollador de TI debe corregir el problema, en función de la advertencia inicial después del inicio del servicio DRDA.

Consulta en SYSIBM. SYSDUMMY1 devuelve SQLCODE -204

Para definir un esquema SYSIBM y una tabla SYSDUMMY1, edite la cláusula USE para hacer referencia a la base de datos de SQL Server de destino y, a continuación, ejecute la instrucción .

/****** HAS OUTPUT PARAMS ******/

El enlace interno del servicio DRDA incluirá este comentario al ejecutar la instrucción CREATE PROCEDURE.

USE [CONTOSO]
GO
/****** Object:  Schema [SYSIBM]    Script Date: 09/26/2012 13:21:38 ******/
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = N'SYSIBM')
EXEC sys.sp_executesql N'CREATE SCHEMA [SYSIBM] AUTHORIZATION [dbo]'
GO
/****** Object:  Table [SYSIBM].[SYSDUMMY1]    Script Date: 09/26/2012 13:21:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[SYSIBM].[SYSDUMMY1]') AND type in (N'U'))
BEGIN
CREATE TABLE [SYSIBM].[SYSDUMMY1]([IBMREQD] [char](1) NOT NULL) ON [PRIMARY]
END
GO
SET ANSI_PADDING OFF
GO
INSERT [SYSIBM].[SYSDUMMY1] ([IBMREQD]) VALUES (N'Y')

DDL para crear el esquema SYSIBM y la tabla SYSDUMMY1.

La consulta devuelve un valor de parámetro vacío.

La instrucción CREATE PROCEDURE debe incluir un comentario para indicar que se usarán uno o varios parámetros OUTPUT para devolver los datos de la instrucción SELECT.

/****** HAS OUTPUT PARAMS ******/

El enlace interno del servicio DRDA incluirá este comentario al ejecutar la instrucción CREATE PROCEDURE.

La consulta devuelve un conjunto de resultados vacío

Al ejecutar DECLARE CURSOR FOR SELECT, el servicio DRDA puede devolver un conjunto de resultados vacío y el siguiente error.

THE CURSOR  IS NOT IN A PREPARED STATE
SQLSTATE: 26501, SQLCODE: -514

La instrucción CREATE PROCEDURE debe incluir un comentario para indicar que el procedimiento almacenado devolverá un conjunto de resultados.

/****** RETURN RESULTSET ******/

El enlace interno del servicio DRDA incluirá este comentario al ejecutar la instrucción CREATE PROCEDURE.

Error de copia de enlace con SQLCODE -904

Al ejecutar DRDA BGNBND (Begin Bind) para copiar un paquete de DB2 para z/OS en SQL Server, mediante el panel DB2 Administración Enlazar paquete de copia, el sistema DB2 puede devolver un CÓDIGO SQLCODE -904.

Este problema puede deberse a una configuración de seguridad incorrecta, asociada al perfil 3270 que se usa para iniciar sesión en la sesión de host.

Error de ejecución del paquete con SQLCODE 805

Al ejecutar un paquete SQL estático de DB2 para z/OS en SQL Server, mediante un programa conectado localmente z/OS para z/OS (TSO, CICS), el sistema DB2 puede devolver un CÓDIGO SQLCODE -805.

Este problema puede deberse a una asignación incorrecta de DB2 para z/OS a SQL Server convención de nomenclatura de paquetes completa. Compruebe que la copia de enlace generó un procedimiento almacenado en el esquema de SQL Server que coincide con el literal z/OS de DB2 o el nombre de la colección coincidente. Además, compruebe que el MsDrdaService.exe.config databaseAliases incluye cualquier ubicación de DB2 necesaria para SQL Server asignaciones de nombres de base de datos o colección DB2 para SQL Server asignaciones de nombres de esquema.

  <databaseAlias sourceLocation="CONTOSO"
                 sourceCollection="DSN8HC91"
                 targetDatabase="ContosoRetailDW"
                 targetSchema="DSN8910" />
  <databaseAlias sourceLocation="NWIND"
                 sourceCollection="DSN8HC91"
                 targetDatabase="Northwind"
                 targetSchema="DSN8910" />
</databaseAliases>

Además, compruebe los valores separados por comas para el atributo packageProcedureSchemaList dentro del elemento de base de datos del MsDrdaService.exe.config.

packageProcedureSchemaList="DBO,DSN8910"