Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 servicio.
En el menú Inicio, apunte a Todos los programas, apunte a Microsoft Visual Studio 2010, apunte a Visual Studio Tools, haga clic con el botón derecho en Visual Studio x64 Win64 Símbolo del sistema (2010) y haga clic en Ejecutar como administrador. Aparecerá el cuadro de diálogo Control de cuentas de usuario . Haga clic en Sí para continuar.
En la ventana de comandos, 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 personalizado
El servicio DRDA admite "bind listeners" personalizados, que podrían admitir uno de los dos formatos de documentos XML de SQL estáticos para DB2: HIS 2010 (v8.5) o HIS 2013 (v9.0). En una devolución de llamada desde 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 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 .
En este caso, debe intentar especificar el valor "v85" y, a continuación, volver a solicitar el comando bind o bind copy.
packageXmlFormat="v85"
Sql estático para el atributo de formato XML del paquete DB2.
Nota:
Microsoft HIS 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.
Problema con el fallo en la conexión de prueba del cliente 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 es verificar la configuración del servicio DRDA para Enterprise Single Sign-On.
En primer lugar, compruebe que configuró 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, siguiendo los pasos 11-13 de la sección titulada "Para definir una aplicación afiliada de ESSO para el SSO iniciado por Windows". Además, compruebe que usa las credenciales de host correctas del cliente de Microsoft para DB2 al probar la conexión.
Problema con IBM QMF para z/OS que falla con el error de nombre de ubicación desconocido.
Error de conexión de IBM QMF para 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 consiste en comprobar la base de datos de configuración de DB2 para z/OS y volver a iniciar DDF según sea necesario.
En primer lugar, compruebe que ha actualizado las tablas de catálogo de z/OS de DB2 (SYSIBM). LOCATIONS, SYSIBM. IPNAMES y SYSIBM. USERNAMES) con la base de datos relacional remota.
En segundo lugar, pida al administrador de DB2 para z/OS que detenga e inicie la instancia de DB2 para z/OS Distributed Data Facility (DDF), que es la puerta de enlace del protocolo DRDA, y vuelva a probar la consulta SQL.
Problema con IBM QMF para z/OS debido a un error de recurso no disponible.
Error de conexión de IBM QMF para 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 consiste en comprobar la base de datos de configuración de DB2 para z/OS y volver a iniciar DDF según sea necesario.
En primer lugar, compruebe que ha actualizado las tablas de catálogo de z/OS de DB2 (SYSIBM). LOCATIONS, SYSIBM. IPNAMES y SYSIBM. USERNAMES) con la base de datos relacional remota.
En segundo lugar, pida al administrador de DB2 para z/OS que detenga e inicie la instancia de DB2 para z/OS Distributed Data Facility (DDF), que es la puerta de enlace del protocolo DRDA, y luego vuelva a probar la consulta SQL.
Problema con IBM QMF para z/OS fallando debido a un error de sintaxis o violación de regla de acceso
IBM QMF para z/OS, SPUFI, DB2 Admin u otro programa no pueden consultar un alias DB2 para z/OS (por ejemplo, DBO.REMAREAS) a través de 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 AS de DRDA presentará 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 consiste en comprobar que ha creado un ALIAS o VIEW de SQL Server correspondiente.
Por ejemplo:
CREATE VIEW [dbo].[REMAREAS]
AS
SELECT dbo.AREAS.*
FROM dbo.AREAS
Problema de IBM QMF para z/OS que falla por un error de comunicaciones
Error de conexión de IBM QMF para z/OS (por ejemplo, SELECT * FROM HISDEMO1.DBO.CUSTOMERS) devolverá el siguiente error.
A communications error was detected.
Message No: DSQ10427.
Referencia de Mensajes y Códigos de IBM QMF para z/OS define el mensaje QMF DSQ10427 como SQLCODE -30081. El IBM DB2 for z/OS Codes Reference 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.
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 de 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 Agregary, a continuación, haga clic en Aceptar.
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 a 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 DE ACCRDB (Access Relational Database) de DRDA. En determinadas circunstancias, es posible que se produzca un error en el intento de conexión de base de datos de SQL Server con 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 fallo de autenticación al usar ESSO iniciado por el host
Al recibir conexiones entrantes, si DB2 para z/OS usa la autenticación del servicio DRDA, el servicio DRDA se autenticará en función únicamente del nombre de usuario. El SECMEC (mecanismo de seguridad) de DRDA ACCSEC (seguridad de acceso) es USRIDONL (solo identificación de usuario).
El servicio DRDA puede escribir el siguiente error en el agente de escucha de seguimiento al procesar EL SECCHK de DRDA (Comprobación de seguridad).
No se pudo autenticar al usuario: SSO LogonExternalUser falló al iniciar sesión utilizando el userid/passwd especificado.
Para admitir este método de autenticación mediante el inicio de sesión único empresarial iniciado por el host, debe configurar la propiedad "Verificar credenciales externas" a Verdadero en la aplicación afiliada.
Problema 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 delimitados. Estos tipos de identificadores deben cumplir las reglas de los identificadores normales. Consulte https://msdn.microsoft.com/library/ms176027.aspx. Sin embargo, los nombres de parámetros en 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 el nombre del parámetro de procedimiento almacenado de SQL Server "PARM_1". El servicio DRDA usa el valor reemplazado al procesar BGNBIND BNDSQLSTT en un procedimiento almacenado de SQL Server o en un archivo de definición XML estático de SQL 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 (~) | |
| guion (-) | |
| signo de exclamación (!) | |
| llave izquierda ({) | |
| por ciento (%) | |
| corchete de cierre (}) | |
| símbolo de intercalación (^) | |
| apóstrofo (') | |
| ampersand (&) | |
| punto (.) | |
| paréntesis izquierdo (() | |
| barra diagonal inversa (\) | |
| paréntesis derecho ()) | |
| acento grave (`) |
El servicio DRDA reemplaza caracteres no válidos por un solo carácter de subrayado.
Problema con el procesamiento de BGNBND BNDSQLSTT cuando el token de coherencia no es legible
La solución es para que DRDA AS procese BGNBND BNDSQLSTT mediante una representación hexadecimal del token de coherencia de 8 bytes.
Problema con el tiempo de espera al conectarse al socio de reflejo de SQL Server
Posibles errores durante el reflejo de bases 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 al iniciar el servicio. La advertencia no impide que se inicie el servicio DRDA.
Este problema puede deberse a que el servicio DRDA no puede tener acceso al agente de escucha de enlace personalizado o al directorio en el que está configurado el agente de escucha de enlace personalizado para escribir una 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 de tiempo de ejecución de HIS deben tener derechos de lectura y ejecución en el directorio del sistema de archivos de programas donde está instalada la biblioteca de enlaces dinámicos del bind listener personalizado. Todos los miembros del grupo de Usuarios de Tiempo de Ejecución de HIS deben tener derechos de escritura, lectura y ejecución para realizar copias de enlace en los directorios donde el listener de enlace personalizado escribirá estas copias de enlace en archivos XML y de traza.
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 aplicación DRDA cuando una escucha personalizada de enlace no logra devolver 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 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.
<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 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 que ya se está ejecutando como un servicio de Windows.
Con una ventana de comandos, puede detener e iniciar el servicio DRDA.
En el menú Inicio, apunte a Todos los programas, apunte a Microsoft Visual Studio 2010, apunte a Visual Studio Tools, haga clic con el botón derecho en Visual Studio x64 Win64 Símbolo del sistema (2010) y haga clic en Ejecutar como administrador. Aparecerá el cuadro de diálogo Control de cuentas de usuario . Haga clic en Sí para continuar.
En la ventana de comandos, 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.
En el menú Inicio, apunte a Todos los programas, apunte a Microsoft Visual Studio 2010, apunte a Visual Studio Tools, haga clic con el botón derecho en Visual Studio x64 Win64 Símbolo del sistema (2010) y haga clic en Ejecutar como administrador. Aparecerá el cuadro de diálogo Control de cuentas de usuario . Haga clic en Sí para continuar.
En la ventana de comandos, 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.En el símbolo del sistema, escriba cd C:\Windows\system32>cd C:\Archivos de programa\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 446Nota:
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 paquete 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 de TI o desarrollador 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 SYSDUMMY1 tabla, 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.
Fallo en Bind Copy con SQLCODE -904
Al ejecutar DRDA BGNBND (Begin Bind) para copiar un paquete de DB2 para z/OS a SQL Server, mediante el panel de copia de paquetes de administración de DB2, 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 hacia SQL Server, utilizando un programa de z/OS conectado localmente (TSO, CICS), el sistema DB2 puede devolver un SQLCODE -805.
Este problema puede deberse a una asignación incorrecta de DB2 para z/OS según la convención de nomenclatura totalmente calificada de paquetes de SQL Server. Compruebe que la copia de enlazado generó un procedimiento almacenado en el esquema de SQL Server que coincida con el literal del DB2 para z/OS o con el nombre exacto de la colección correspondiente. Además, compruebe que el MsDrdaService.exe.config databaseAliases incluye cualquier ubicación de DB2 necesaria en asignaciones de nombres de base de datos de SQL Server o colección DB2 en asignaciones de nombres de esquema de SQL Server.
<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"