Soluzioni per problemi comuni

Questi problemi comuni possono verificarsi quando si usa il servizio DRDA.

Impossibile avviare il servizio DRDA come applicazione console

Se non è possibile avviare il servizio DRDA come applicazione console, verificare se il servizio DRDA è già in esecuzione come servizio.

  • Scegliere Tutti i programmi dal menu Start, scegliere Microsoft Visual Studio 2010, Strumenti di Visual Studio, fare clic con il pulsante destro del mouse su Visual Studio x64 Win64 Command Prompt (2010) e scegliere Esegui come amministratore. Verrà visualizzata la finestra di dialogo Controllo account utente . Per continuare, scegliere .

  • Dal prompt dei comandi immettere net stop msdrdaservice e premere INVIO.

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

Listener personalizzati

All'avvio del servizio DRDA, il servizio DRDA scriverà le voci di avviso nel DrdaAsTextListener interno e DrdaAsConsoleListener, comunicando al professionista IT che il servizio DRDA non è riuscito a caricare listener personalizzati (bind, text, other).

Listener di binding personalizzato

Il servizio DRDA supporta listener di associazione personalizzati, che possono supportare uno dei due formati di documento SQL statici per DB2 XML: HIS 2010 (v8.5) o HIS 2013 (v9.0). In un callback da un listener di associazione personalizzato, il servizio DRDA può registrare questo errore.

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 soluzione consiste nel configurare il valore dell'attributo packageXmlFormat appropriato. L'attributo packageXmlFormat indica al server DRDA di scrivere il file SQL statico per DB2 XML nel formato v90 o v85. Questo attributo facoltativo accetta un valore stringa v85 o v90. Il valore predefinito è v90 .

In questo caso, è consigliabile provare a specificare il valore "v85" e quindi richiedere di nuovo il comando bind o bind copy.

packageXmlFormat="v85"

Attributo di formato XML del pacchetto STATIco SQL per DB2.

Nota

Microsoft HIS 2013 (V9) supporta sia il formato precedente che quello nuovo, che include un XML Schema associato per la convalida del documento XML. Microsoft HIS 2009 e HIS 2010 (V8.5) supportano solo il formato precedente.

Problema relativo all'errore di connessione di test del client Microsoft per DB2

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

La soluzione consiste nel verificare la configurazione del servizio DRDA per l'accesso Single Sign-On aziendale.

Prima di tutto, verificare di aver configurato Enterprise Single Sign-On per Host-Initiated SSO e quindi di riavviare il servizio EntSSO seguendo i passaggi 6 e 7 nella sezione intitolata "Configurare HIS 2010 e ESSO V4.5".

In secondo luogo, verificare di aver eseguito correttamente il mapping delle credenziali dell'host e di Windows seguendo i passaggi 11-13 nella sezione intitolata "Per definire un'applicazione affiliata ESSO per l'accesso SSO avviato da Windows". Inoltre, verificare di usare le credenziali host corrette dal client Microsoft per DB2 durante il test della connessione.

Il problema con IBM QMF per z/OS non riesce con il nome del percorso non è noto

IBM QMF per l'errore di connessione z/OS ,ad esempio SELECT * FROM HISDEMO1. DBO. CUSTOMERS) restituirà l'errore seguente.

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

La soluzione consiste nel verificare DB2 per il database di configurazione z/OS e riavviare DDF in base alle esigenze.

Prima di tutto, verificare di aver aggiornato DB2 per le tabelle del catalogo z/OS (SYSIBM). LOCATIONS, SYSIBM. IPNAMES e SYSIBM. USERNAMES) con il database relazionale remoto.

In secondo luogo, chiedere all'amministratore di DB2 di z/OS di arrestare e riavviare DB2 per z/OS Distributed Data Facility (DDF), ovvero il gateway del protocollo DRDA e quindi ripetere la query SQL.

Problema con IBM QMF per z/OS non riuscito con errore di risorsa non disponibile

IBM QMF per l'errore di connessione z/OS ,ad esempio SELECT * FROM HISDEMO1. DBO. CUSTOMERS) restituirà l'errore seguente.

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 soluzione consiste nel verificare DB2 per il database di configurazione z/OS e riavviare DDF in base alle esigenze.

Prima di tutto, verificare di aver aggiornato DB2 per le tabelle del catalogo z/OS (SYSIBM). LOCATIONS, SYSIBM. IPNAMES e SYSIBM. USERNAMES) con il database relazionale remoto.

In secondo luogo, chiedere all'amministratore di DB2 di z/OS di arrestare e riavviare DB2 per z/OS Distributed Data Facility (DDF), ovvero il gateway del protocollo DRDA e quindi ripetere la query SQL.

Problema con IBM QMF per z/OS non riuscito con errore di sintassi o violazione della regola di accesso

IBM QMF per z/OS, SPUFI, DB2 Amministrazione o altro programma non riesce a eseguire query su un alias DB2 per z/OS (ad esempio DBO. REMAREAS) su una tabella SQL Server (ad esempio, HISDRDA1. DBO. AREAS), utilizzando DRDA AS, restituendo l'errore seguente.

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.

Il log DRDA AS avrà l'errore corrispondente seguente.

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 soluzione consiste nel verificare che sia stata creata una SQL Server ALIAS o VIEW corrispondente.

Ad esempio:

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

Problema con IBM QMF per z/OS non riuscito con un errore di comunicazione

IBM QMF per l'errore di connessione z/OS ,ad esempio SELECT * FROM HISDEMO1. DBO. CUSTOMERS) restituirà l'errore seguente.

A communications error was detected.
Message No: DSQ10427.

Il riferimento a messaggi e codici IBM QMF per z/OS definisce il messaggio QMF DSQ10427 come SQLCODE -30081. Il riferimento ai codici IBM DB2 per z/OS definisce SQLCODE -30081 come errore di comunicazione.

La soluzione consiste nel verificare che l'elenco di eccezioni di Windows Firewall includa il programma MsDrdaService.exe nel computer del servizio DRDA.

  1. Scegliere Pannello di controllo dal menu Start, fare clic su Sistema e sicurezza, fare clic su Windows Firewall, scegliere Consenti programma o funzionalità tramite Windows Firewall, fare clic su Modifica impostazioni, fare clic su Consenti un altro programma, fare clic su Sfoglia, immettere "%SNAROOT%\MsDrdaService.exe" e quindi fare clic su Aggiungi e quindi su OK.

  2. Riavviare il servizio DRDA.

Istruzione SELECT o CALL del client DRDA non riuscita

I programmi client DRDA associano un set di pacchetti standard che contengono istruzioni DECLARE CURSOR di base, con cui definire come recuperare e restituire risultati nelle istruzioni SELECT e CALL. Se l'istruzione ha esito negativo, verificare se il pacchetto o la raccolta è elencato nel file IgnoreStandardPacakges.txt. Se elencato, rimuovere il riferimento, riassociare ed eseguire di nuovo l'istruzione.

Errore di connessione al database relazionale di Access

Il servizio DRDA si connetterà a un database SQL Server usando la stringa di connessione nel MsDrdaService.exe.config in risposta a una richiesta DRDA ACCRDB (Access Relational Database). In determinate circostanze, il tentativo di connessione al database SQL Server potrebbe non riuscire con l'errore seguente.

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

Il servizio DRDA restituirà al client DRDA il seguente errore 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.

In questi casi, è consigliabile usare la documentazione di Microsoft SQL Server e le procedure consigliate per determinare la causa dell'errore di connessione.

Problema con l'errore di autenticazione durante l'uso di ESSO avviato dall'host

Quando si ricevono connessioni associate da DB2 per z/OS usa l'autenticazione del servizio DRDA, il servizio DRDA esegue l'autenticazione solo in base al nome utente. DRDA ACCSEC (Access Security) SECMEC (Meccanismo di sicurezza) è USRIDONL (solo ID utente).

Il servizio DRDA può scrivere l'errore seguente nel listener di traccia durante l'elaborazione di DRDA SECCHK (Controllo di sicurezza).

  • Impossibile autenticare l'utente: SSO LogonExternalUser non è riuscito usando userid/passwd specificato.

    Per supportare questo metodo di autenticazione usando l'accesso Single Sign-On enterprise avviato dall'host, è necessario impostare la proprietà Verify external credentials (Verifica credenziali esterne) su True nell'applicazione affiliata.

Problema durante l'elaborazione di BNDSQLSTT quando i nomi dei parametri contengono trattini

In base a MSDN, Microsoft SQL Server non riconosce i nomi delle variabili e i parametri della stored procedure delimitati. È necessario che tali tipi di identificatori soddisfino le regole relative ai normali identificatori. Vedere https://msdn.microsoft.com/library/ms176027.aspx. Tuttavia, i nomi dei parametri PL/I e COBOL contengono trattini e altri caratteri speciali. La soluzione è destinata al servizio DRDA per elaborare BGNBND BNDSQLSTT rimuovendo i caratteri speciali e sostituendo con un singolo carattere di sottolineatura. Ad esempio, il servizio DRDA sostituisce il nome del parametro SQL statico "PARM-1" con SQL Server nome del parametro della stored procedure "PARM_1". Il servizio DRDA usa il valore sostituito durante l'elaborazione di BGNBIND BNDSQLSTT in una stored procedure SQL Server o in un file di definizione SQL statico per DB2 XML. Vedere l'elenco di caratteri non validi nel riferimento T-SQL all'indirizzo https://msdn.microsoft.com/library/aa224033(v=SQL.80).aspx.

Valore originale Sostituito valore
~ (tilde)
- (trattino)
! (punto esclamativo)
{ (parentesi graffa aperta)
% (percento)
} (parentesi graffa chiusa)
^ (accento circonflesso)
apostrofo (')
& (e commerciale)
. (punto)
( (parentesi aperta)
barra rovesciata (\)
) (parentesi chiusa)
` (accento grave)

Il servizio DRDA sostituisce i caratteri non validi con un singolo carattere di sottolineatura.

Problema con l'elaborazione di BGNBND BNDSQLSTT quando il token di coerenza è illeggibile

La soluzione consiste nell'elaborare il DRDA AS per elaborare BGNBND BNDSQLSTT usando una rappresentazione esadecimale del token di coerenza a 8 byte.

Problema con il timeout di connessione durante la connessione a SQL Server partner di mirroring

Possibili errori durante il mirroring del database

Problema durante il caricamento del listener di binding personalizzato all'avvio del servizio

Il servizio DRDA restituirà un avviso se non è in grado di caricare un listener di associazione personalizzato all'avvio del servizio. L'avviso non impedisce l'avvio del servizio DRDA.

Questo problema può essere causato quando il servizio DRDA non riesce ad accedere al listener di associazione personalizzato o alla directory in cui il listener di associazione personalizzato è configurato per scrivere la copia di binding in file XML o di traccia. L'amministratore deve impostare i diritti appropriati per l'elenco di controllo di accesso su queste directory.

Tutti i membri del gruppo di utenti his runtime devono disporre dei diritti di lettura ed esecuzione per la directory di sistema dei file di programma in cui è installata la libreria di collegamento dinamico del listener di binding personalizzato. Tutti i membri del gruppo HIS Runtime Users devono disporre dei diritti di scrittura, lettura ed esecuzione per associare la copia alle directory in cui il listener di associazione personalizzato scriverà la copia di binding nei file XML e di traccia.

Problema quando il listener di binding personalizzato non restituisce sull'interfaccia di callback.

Il servizio DRDA non restituirà un BGNBNDRM (Begin Bind Error Reply Message) al client DRDA Application Requester quando un listener di associazione personalizzato non torna all'istruzione DRDA Service a un'istruzione DDL CREATE PROCEDURE. L'attributo errorWhenNoCallback indica al servizio DRDA di restituire BGNBNDRM (Begin Bind Reply Message) al client DRDA AR, quando il componente listener di associazione personalizzato non restituisce informazioni sull'interfaccia di callback. Questo attributo facoltativo accetta un valore booleano . Il valore predefinito è 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>

Valori predefiniti per packageBindListener nel file di configurazione dell'applicazione del servizio DRDA.

Problema con l'avvio del servizio DRDA come applicazione della riga di comando

Quando si avvia il servizio DRDA come applicazione della riga di comando, il programma potrebbe non riuscire con un errore.

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 soluzione consiste nell'arrestare il servizio DRDA già in esecuzione come servizio Windows.

Usando una finestra di comando, è possibile arrestare e avviare il servizio DRDA.

  1. Scegliere Tutti i programmi dal menu Start, scegliere Microsoft Visual Studio 2010, Strumenti di Visual Studio, fare clic con il pulsante destro del mouse su Visual Studio x64 Win64 Command Prompt (2010) e scegliere Esegui come amministratore. Verrà visualizzata la finestra di dialogo Controllo account utente . Per continuare, scegliere .

  2. Dal prompt dei comandi immettere net stop msdrdaservice e premere INVIO.

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

    Usando una finestra di comando, è possibile eseguire il servizio DRDA come applicazione.

  3. Scegliere Tutti i programmi dal menu Start, scegliere Microsoft Visual Studio 2010, Strumenti di Visual Studio, fare clic con il pulsante destro del mouse su Visual Studio x64 Win64 Command Prompt (2010) e scegliere Esegui come amministratore. Verrà visualizzata la finestra di dialogo Controllo account utente . Per continuare, scegliere .

  4. Dal prompt dei comandi immettere net stop msdrdaservice e premere INVIO.

    C:\Windows\system32>net stop msdrdaservice
    The Microsoft Service for DRDA service is stopping.
    The Microsoft Service for DRDA service was stopped successfully.
    
  5. Dal prompt dei comandi immettere cd C:\Windows\system32>cd C:\Programmi\Microsoft Host Integration Server 2013\system e premere INVIO.

    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

    Il writer di log del servizio DRDA restituirà informazioni nella finestra della console.

Impossibile caricare il listener di associazione di pacchetti personalizzato

All'avvio del servizio, se il servizio DRDA non è in grado di caricare un listener di associazione di pacchetti personalizzato, il servizio DRDA porterà l'avviso seguente.

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 "

In fase di esecuzione, se MsDrdaService non è in grado di caricare un listener di associazione di pacchetti personalizzato, MsDrdaService non restituirà un errore.

Nota

Il servizio DRDA continuerà a essere eseguito senza alcun avviso aggiuntivo. Il servizio DRDA supporta più listener di associazione di pacchetti personalizzati simultanei. Il professionista IT o lo sviluppatore deve risolvere il problema, in base all'avviso iniziale dopo l'avvio del servizio DRDA.

Eseguire query su SYSIBM. SYSDUMMY1 restituisce SQLCODE -204

Per definire uno schema SYSIBM e una tabella SYSDUMMY1, modificare la clausola USE per fare riferimento al database di destinazione SQL Server e quindi eseguire l'istruzione .

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

L'associazione interna del servizio DRDA includerà questo commento durante l'esecuzione dell'istruzione 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 per creare schema SYSIBM e SYSDUMMY1 tabella.

Query restituisce un valore di parametro vuoto

L'istruzione CREATE PROCEDURE deve includere un commento, per indicare uno o più parametri OUTPUT verrà usato per restituire i dati dall'istruzione SELECT.

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

L'associazione interna del servizio DRDA includerà questo commento durante l'esecuzione dell'istruzione CREATE PROCEDURE.

Query restituisce un set di risultati vuoto

Quando si esegue DECLARE CURSOR FOR SELECT, il servizio DRDA può restituire un set di risultati vuoto e l'errore seguente.

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

L'istruzione CREATE PROCEDURE deve includere un commento per indicare che la stored procedure restituirà un set di risultati.

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

L'associazione interna del servizio DRDA includerà questo commento durante l'esecuzione dell'istruzione CREATE PROCEDURE.

La copia di binding ha esito negativo con SQLCODE -904

Quando si esegue DRDA BGNBND (Begin Bind) per copiare un pacchetto da DB2 per z/OS a SQL Server, usando il pannello DB2 Amministrazione Bind Copy Package, il sistema DB2 può restituire un codice SQLCODE -904.

Questo problema può essere causato da una configurazione di sicurezza errata, associata al profilo 3270 usato per accedere alla sessione host.

L'esecuzione del pacchetto ha esito negativo con SQLCODE 805

Quando si esegue un pacchetto SQL statico da DB2 per z/OS a SQL Server, usando un programma collegato db2 per z/OS (TSO, CICS), il sistema DB2 può restituire un codice SQLCODE -805.

Questo problema può essere causato da un mapping errato di DB2 per z/OS a SQL Server convenzione di denominazione dei pacchetti completa. Verificare che la copia di binding produsse una stored procedure nello schema SQL Server corrispondente al valore letterale DB2 per z/OS o al nome della raccolta corrispondente. Verificare inoltre che l'MsDrdaService.exe.config databaseAliases includa qualsiasi percorso DB2 necessario per SQL Server mapping dei nomi di database o la raccolta DB2 per SQL Server mapping dei nomi dello schema.

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

Controllare inoltre i valori delimitati da virgole per l'attributo packageProcedureSchemaList all'interno dell'elemento di database del MsDrdaService.exe.config.

packageProcedureSchemaList="DBO,DSN8910"