Partager via


Solutions aux problèmes courants

Vous pouvez rencontrer ces problèmes courants lors de l’utilisation du service DRDA.

Impossible de démarrer le service DRDA en tant qu’application console

Si vous ne pouvez pas démarrer le service DRDA en tant qu’application console, case activée pour voir si le service DRDA s’exécute déjà en tant que service.

  • Dans le menu Démarrer, pointez sur Tous les programmes, pointez sur Microsoft Visual Studio 2010, pointez sur Visual Studio Tools, cliquez avec le bouton droit sur Invite de commandes Visual Studio x64 Win64 (2010), puis cliquez sur Exécuter en tant qu’administrateur. La boîte de dialogue Contrôle de compte d’utilisateur s’affiche. Cliquez sur OK pour continuer.

  • À partir de l’invite de commandes, entrez net stop msdrdaservice , puis appuyez sur Entrée.

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

Écouteurs personnalisés

Au démarrage du service, le service DRDA écrit des entrées d’avertissement dans les fichiers DrdaAsTextListener et DrdaAsConsoleListener internes, en informant le professionnel de l’informatique que le service DRDA n’a pas pu charger d’écouteurs personnalisés (liaison, texte, autre).

Écouteur de liaison personnalisé

Le service DRDA prend en charge les écouteurs de liaison personnalisés, qui peuvent prendre en charge l’un des deux formats de document SQL statique pour DB2 XML : HIS 2010 (v8.5) ou HIS 2013 (v9.0). Lors d’un rappel à partir d’un écouteur de liaison personnalisé, le service DRDA peut enregistrer cette erreur.

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 solution consiste à configurer la valeur d’attribut packageXmlFormat appropriée. L’attribut packageXmlFormat indique au serveur DRDA d’écrire le fichier XML SQL pour DB2 statique au format v90 ou v85. Cet attribut facultatif accepte une valeur de chaîne v85 ou v90. La valeur par défaut est v90 .

Dans ce cas, vous devez essayer de spécifier la valeur « v85 », puis demander à nouveau la commande bind ou bind copy.

packageXmlFormat="v85 »

Attribut de format XML de package SQL statique pour DB2.

Notes

Microsoft HIS 2013 (V9) prend en charge l’ancien et le nouveau format, qui inclut un schéma XML associé pour valider le document XML. Microsoft HIS 2009 et HIS 2010 (V8.5) prennent uniquement en charge l’ancien format.

Problème avec le client Microsoft pour l’échec de la connexion de test DB2

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

La solution consiste à vérifier la configuration du service DRDA pour l’authentification unique d’entreprise.

Tout d’abord, case activée que vous avez configuré enterprise single Sign-On pour Host-Initiated l’authentification unique, puis redémarré le service EntSSO, en suivant les étapes 6 et 7 de la section intitulée « Configurer HIS 2010 et ESSO V4.5 ».

Deuxièmement, case activée que vous mappiez correctement l’hôte et les informations d’identification Windows, en suivant les étapes 11 à 13 de la section intitulée « Pour définir une application affiliée ESSO pour l’authentification unique lancée par Windows ». En outre, vérifiez que vous utilisez les informations d’identification d’hôte correctes du client Microsoft pour DB2 lors du test de la connexion.

Problème lié à l’échec d’IBM QMF pour z/OS avec le nom de l’emplacement n’est pas connu, erreur connue

Échec de connexion IBM QMF pour z/OS (par exemple, SELECT * FROM HISDEMO1. DBO. CUSTOMERS) retourne l’erreur suivante.

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

La solution consiste à vérifier db2 pour la base de données de configuration z/OS et à redémarrer DDF si nécessaire.

Tout d’abord, vérifiez que vous avez mis à jour les tables de catalogue DB2 pour z/OS (SYSIBM. LOCATIONS, SYSIBM. IPNAMES et SYSIBM. USERNAMES) avec votre base de données relationnelle distante.

Ensuite, demandez à votre administrateur DB2 pour z/OS d’arrêter et de redémarrer db2 for z/OS Distributed Data Facility (DDF), qui est la passerelle de protocole DRDA, puis réessayez la requête SQL.

Problème avec l’échec d’IBM QMF pour z/OS avec une erreur de ressource indisponible

Échec de connexion IBM QMF pour z/OS (par exemple, SELECT * FROM HISDEMO1. DBO. CUSTOMERS) retourne l’erreur suivante.

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 solution consiste à vérifier db2 pour la base de données de configuration z/OS et à redémarrer DDF si nécessaire.

Tout d’abord, vérifiez que vous avez mis à jour les tables de catalogue DB2 pour z/OS (SYSIBM. LOCATIONS, SYSIBM. IPNAMES et SYSIBM. USERNAMES) avec votre base de données relationnelle distante.

Ensuite, demandez à votre administrateur DB2 pour z/OS d’arrêter et de redémarrer db2 for z/OS Distributed Data Facility (DDF), qui est la passerelle de protocole DRDA, puis réessayez la requête SQL.

Problème avec l’échec d’IBM QMF pour z/OS avec une erreur de syntaxe ou une violation de règle d’accès

IBM QMF for z/OS, SPUFI, DB2 Administration ou un autre programme ne parvient pas à interroger un alias DB2 for z/OS (par exemple, DBO. REMAREAS) sur une table SQL Server (par exemple, HISDRDA1. DBO. AREAS), à l’aide de l’AS DRDA, en retournant l’erreur suivante.

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.

Le journal AS DRDA présente l’erreur correspondante suivante.

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 solution consiste à vérifier que vous avez créé un SQL Server ALIAS ou VIEW correspondant.

Par exemple :

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

Problème avec l’échec d’IBM QMF pour z/OS avec une erreur de communication

Échec de connexion IBM QMF pour z/OS (par exemple, SELECT * FROM HISDEMO1. DBO. CUSTOMERS) retourne l’erreur suivante.

A communications error was detected.
Message No: DSQ10427.

La référence des codes et messages IBM QMF pour z/OS définit les DSQ10427 de messages QMF comme SQLCODE -30081. La référence des codes IBM DB2 for z/OS définit SQLCODE -30081 comme erreur de communication.

La solution consiste à vérifier que la liste des exceptions du Pare-feu Windows inclut le programme MsDrdaService.exe sur l’ordinateur du service DRDA.

  1. Dans le menu Démarrer, pointez sur Panneau de configuration, cliquez sur Système et sécurité, sur Pare-feu Windows, sur Autoriser un programme ou une fonctionnalité via le Pare-feu Windows, sur Modifier les paramètres, sur Autoriser un autre programme, sur Parcourir, entrez « %SNAROOT%\MsDrdaService.exe », puis cliquez sur Ajouter, puis sur OK.

  2. Relancez le service DRDA.

Échec de l’instruction SELECT ou CALL du client DRDA

Les programmes clients DRDA lient un ensemble de packages standard qui contiennent des instructions DECLARE CURSOR de base, avec lesquelles définir comment extraire et retourner des résultats sur les instructions SELECT et CALL. Si l’instruction échoue, case activée pour voir si le package ou la collection est répertorié dans le fichier IgnoreStandardPacakges.txt. S’il est répertorié, supprimez la référence, rebinez et réexécutez l’instruction.

Échec de connexion de base de données relationnelle Access

Le service DRDA se connecte à une base de données SQL Server à l’aide de la chaîne de connexions dans le MsDrdaService.exe.config en réponse à une demande ACCRDB (base de données relationnelle Access) DRDA. Dans certaines circonstances, la tentative de connexion de base de données SQL Server peut échouer avec l’erreur suivante.

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

Le service DRDA retourne au client DRDA l’erreur IBM DB2 suivante.

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

Dans ce cas, vous devez utiliser la documentation microsoft SQL Server et les meilleures pratiques pour déterminer la cause de l’échec de la connexion.

Problème d’échec de l’authentification lors de l’utilisation d’ESSO initié par l’hôte

Lors de la réception de connexions liées à partir de DB2 pour z/OS utilise l’authentification du service DRDA, le service DRDA s’authentifie en fonction du nom d’utilisateur uniquement. Le mécanisme de sécurité (SECMEC) pour la sécurité d’accès (ACCSEC) de DRDA est USRIDONL (ID utilisateur uniquement).

Le service DRDA peut écrire l’erreur suivante dans l’écouteur de trace lors du traitement du SECCHK (Security Check) DRDA.

  • Échec de l’authentification de l’utilisateur : SSO LogonExternalUser a échoué à l’aide de userid/passwd spécifié.

    Pour prendre en charge cette méthode d’authentification à l’aide du système Enterprise Single Sign-On lancé par l’hôte, vous devez définir la propriété Vérifier les informations d’identification externes sur True dans l’application associée.

Problème d’échec du traitement de BNDSQLSTT lorsque les noms de paramètres contiennent des traits d’union

Selon MSDN, Microsoft SQL Server ne reconnaît pas les noms de variables et les paramètres de procédure stockée qui sont délimités. Ces types d'identificateurs doivent respecter les règles qui s'appliquent aux identificateurs réguliers. Consultez https://msdn.microsoft.com/library/ms176027.aspx. Toutefois, les noms de paramètres PL/I et COBOL contiennent des traits d’union et d’autres caractères spéciaux. La solution consiste à ce que le service DRDA traite le BNDSQLSTT BGNBND en supprimant les caractères spéciaux et en remplaçant par un trait de soulignement unique. Par exemple, le service DRDA remplace le nom de paramètre SQL statique « PARM-1 » par SQL Server nom de paramètre de procédure stockée « PARM_1 ». Le service DRDA utilise la valeur remplacée lors du traitement du BNDSQLSTT BGNBIND dans une procédure stockée SQL Server ou dans un fichier de définition XML SQL pour DB2 statique. Consultez la liste des caractères non valides dans la référence T-SQL à l’adresse https://msdn.microsoft.com/library/aa224033(v=SQL.80).aspx.

Valeur d'origine Valeur remplacée
tilde (~)
trait d'union (-)
point d'exclamation (!)
accolade gauche ({)
pourcentage (%)
accolade droite (})
accent circonflexe (^)
apostrophe (')
esperluette (&)
point (.)
parenthèse gauche (()
barre oblique inverse (\)
parenthèse droite ())
accent grave (`)

Le service DRDA remplace les caractères non valides par un trait de soulignement unique.

Problème avec le traitement de BGNBND BNDSQLSTT lorsque le jeton de cohérence n’est pas illisible

La solution est que l’AS DRDA traite le BNDSQLSTT BGNBND à l’aide d’une représentation hexadécimale du jeton de cohérence de 8 octets.

Problème avec le délai d’expiration de connexion lors de la connexion à SQL Server partenaire de mise en miroir

Défaillances possibles pendant la mise en miroir d’une base de données

Problème de chargement de l’écouteur de liaison personnalisé au démarrage du service

Le service DRDA renvoie un avertissement s’il ne peut pas charger un écouteur de liaison personnalisé au démarrage du service. L’avertissement n’empêche pas le service DRDA de démarrer.

Ce problème peut être dû au fait que le service DRDA ne peut pas accéder à l’écouteur de liaison personnalisé ou au répertoire dans lequel l’écouteur de liaison personnalisé est configuré pour écrire une copie de liaison dans des fichiers XML ou de trace. L’administrateur doit définir les droits de liste de contrôle d’accès appropriés pour ces répertoires.

Tous les membres du groupe d’utilisateurs runtime HIS doivent disposer de droits de lecture et d’exécution sur le répertoire système des fichiers programme dans lequel la bibliothèque de liens dynamiques de l’écouteur de liaison de liaisons de liaison personnalisée est installée. Tous les membres du groupe Utilisateurs du runtime HIS doivent disposer de droits d’écriture, de lecture et d’exécution pour lier la copie aux répertoires dans lesquels l’écouteur de liaison personnalisé écrit la copie de liaison dans des fichiers XML et de trace.

Problème lorsque l’écouteur de liaison personnalisé ne retourne pas sur l’interface de rappel.

Le service DRDA ne retourne pas de BGNBNDRM (Begin Bind Error Reply Message) au client Demandeur d’application DRDA lorsqu’un écouteur de liaison personnalisé ne parvient pas à renvoyer au service DRDA une instruction CREATE PROCEDURE DDL. L’attribut errorWhenNoCallback indique au service DRDA de renvoyer BGNBNDRM (Begin Bind Reply Message) au client DRDA AR, lorsque le composant d’écouteur de liaison personnalisé ne retourne aucune information sur l’interface de rappel. Cet attribut facultatif accepte une valeur booléenne . La valeur par défaut est 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>

Valeurs par défaut pour packageBindListener dans le fichier de configuration de l’application de service DRDA.

Problème avec le démarrage du service DRDA en tant qu’application de ligne de commande

Lors du démarrage du service DRDA en tant qu’application de ligne de commande, le programme peut échouer avec une erreur.

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 solution consiste à arrêter le service DRDA en cours d’exécution en tant que service Windows.

À l’aide d’une fenêtre de commande, vous pouvez arrêter et démarrer le service DRDA.

  1. Dans le menu Démarrer, pointez sur Tous les programmes, sur Microsoft Visual Studio 2010, sur Visual Studio Tools, cliquez avec le bouton droit sur Invite de commandes Visual Studio x64 Win64 (2010), puis cliquez sur Exécuter en tant qu’administrateur. La boîte de dialogue Contrôle de compte d’utilisateur s’affiche. Cliquez sur OK pour continuer.

  2. À partir de l’invite de commandes, entrez net stop msdrdaservice et appuyez sur Entrée.

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

    À l’aide d’une fenêtre de commande, vous pouvez exécuter le service DRDA en tant qu’application.

  3. Dans le menu Démarrer, pointez sur Tous les programmes, sur Microsoft Visual Studio 2010, sur Visual Studio Tools, cliquez avec le bouton droit sur Invite de commandes Visual Studio x64 Win64 (2010), puis cliquez sur Exécuter en tant qu’administrateur. La boîte de dialogue Contrôle de compte d’utilisateur s’affiche. Cliquez sur OK pour continuer.

  4. À partir de l’invite de commandes, entrez net stop msdrdaservice et appuyez sur Entrée.

    C:\Windows\system32>net stop msdrdaservice
    The Microsoft Service for DRDA service is stopping.
    The Microsoft Service for DRDA service was stopped successfully.
    
  5. À partir de l’invite de commandes, entrez cd C :\Windows\system32>cd C :\Program Files\Microsoft Host Integration Server 2013\system , puis appuyez sur Entrée.

    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
    

    Notes

    L’enregistreur de journal du service DRDA génère des informations dans la fenêtre de console.

Impossible de charger l’écouteur de liaison de package personnalisé

Au démarrage du service, si le service DRDA ne peut pas charger un écouteur de liaison de package personnalisé, le service DRDA consigne l’avertissement suivant.

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 "

Au moment de l’exécution, si MsDrdaService ne peut pas charger un écouteur de liaison de package personnalisé, le MsDrdaService ne retourne pas d’erreur.

Notes

Le service DRDA continue de s’exécuter sans avertissement supplémentaire. Le service DRDA prend en charge plusieurs écouteurs de liaison de package personnalisés simultanés. Le professionnel de l’informatique ou le développeur doit corriger le problème, en fonction de l’avertissement initial après le démarrage du service DRDA.

Interrogez SYSIBM. SYSDUMMY1 retourne SQLCODE -204

Pour définir un schéma SYSIBM et SYSDUMMY1 table, modifiez la clause USE pour référencer la base de données SQL Server cible, puis exécutez l’instruction.

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

La liaison interne du service DRDA inclut ce commentaire lors de l’exécution de l’instruction 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 pour créer un schéma SYSIBM et SYSDUMMY1 table.

La requête retourne une valeur de paramètre vide

L’instruction CREATE PROCEDURE doit inclure un commentaire pour indiquer qu’un ou plusieurs paramètres OUTPUT seront utilisés pour retourner les données de l’instruction SELECT.

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

La liaison interne du service DRDA inclut ce commentaire lors de l’exécution de l’instruction CREATE PROCEDURE.

La requête retourne un jeu de résultats vide

Lors de l’exécution de DECLARE CURSOR FOR SELECT, le service DRDA peut retourner un jeu de résultats vide et l’erreur suivante.

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

L’instruction CREATE PROCEDURE doit inclure un commentaire, pour indiquer que la procédure stockée retourne un jeu de résultats.

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

La liaison interne du service DRDA inclut ce commentaire lors de l’exécution de l’instruction CREATE PROCEDURE.

Échec de la copie de liaison avec SQLCODE -904

Lors de l’exécution de DRDA BGNBND (Begin Bind) pour copier un package de DB2 pour z/OS vers SQL Server, à l’aide du panneau DB2 Administration Lier le package de copie, le système DB2 peut retourner un SQLCODE -904.

Ce problème peut être dû à une configuration de sécurité incorrecte, associée à votre profil 3270 utilisé pour se connecter à la session hôte.

Échec de l’exécution du package avec SQLCODE 805

Lors de l’exécution d’un package SQL statique de DB2 pour z/OS vers SQL Server, à l’aide d’un programme db2 pour z/OS attaché localement (TSO, CICS), le système DB2 peut retourner un SQLCODE -805.

Ce problème peut être dû à un mappage incorrect de DB2 pour z/OS à SQL Server convention de nommage de package complet. Vérifiez que la copie de liaison a produit une procédure stockée dans le schéma SQL Server correspondant au littéral DB2 pour z/OS ou au nom de collection correspondant. En outre, case activée que le MsDrdaService.exe.config databaseAliases inclut tout emplacement DB2 requis pour SQL Server mappages de noms de base de données, ou la collection DB2 pour SQL Server mappages de noms de schéma.

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

En outre, case activée les valeurs séparées par des virgules pour l’attribut packageProcedureSchemaList dans l’élément de base de données du MsDrdaService.exe.config.

packageProcedureSchemaList="DBO,DSN8910"