Soluzioni per problemi comuni

È possibile che si verifichino questi problemi comuni 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.

  • Nel menu Start scegliere Tutti i programmi, scegliere Microsoft Visual Studio 2010, scegliere 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, il servizio DRDA scriverà voci di avviso all'interno DrdaAsTextListener e DrdaAsConsoleListener, notificando al professionista IT che il servizio DRDA non poteva caricare listener personalizzati (binding, testo, altro).

Listener di binding personalizzato

Il servizio DRDA supporta listener di binding 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 potrebbe 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 di v85 o v90. Il valore predefinito è v90 .

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

packageXmlFormat="v85"

Attributo di formato XML del pacchetto STATIco SQL per DB2.

Nota

Microsoft HIS 2013 (V9) supporta sia il formato precedente che il nuovo, che include uno schema XML associato per convalidare il documento XML. Microsoft HIS 2009 e HIS 2010 (V8.5) supportano solo il formato precedente.

Problema con Microsoft Client for DB2 test connection failure

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 Enterprise Single Sign-On.

Verificare prima di tutto che sia stato configurato Enterprise Single Sign-On per Host-Initiated SSO e quindi riavviare il servizio EntSSO, seguendo i passaggi 6 e 7 nella sezione intitolata "Configure HIS 2010 and ESSO V4.5".

In secondo luogo, verificare che l'host e le credenziali di Windows siano state mappate correttamente, seguendo i passaggi 11-13 nella sezione intitolata "Per definire un'applicazione di affiliazione ESSO per l'accesso SSO avviato da Windows". Verificare inoltre di usare le credenziali host corrette dal client Microsoft per DB2 durante il test della connessione.

Problema con IBM QMF per z/OS che non riesce con il nome della posizione non è noto.

Errore di connessione IBM QMF per z/OS (ad esempio SELECT * FROM HISDEMO1). Dbo. I CLIENTI restituiranno 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.

Verificare innanzitutto di aver aggiornato il database2 per le tabelle del catalogo z/OS (SYSIBM). LOCATION, SYSIBM. IPNAMES e SYSIBM. USERNAMES) con il database relazionale remoto.

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

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

Errore di connessione IBM QMF per z/OS (ad esempio SELECT * FROM HISDEMO1). Dbo. I CLIENTI restituiranno 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.

Verificare innanzitutto di aver aggiornato il database2 per le tabelle del catalogo z/OS (SYSIBM). LOCATION, SYSIBM. IPNAMES e SYSIBM. USERNAMES) con il database relazionale remoto.

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

Problema con IBM QMF per z/OS 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. AREA), usando DRDA AS, restituito 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 che ha esito negativo con un errore di comunicazione

Errore di connessione IBM QMF per z/OS (ad esempio SELECT * FROM HISDEMO1). Dbo. I CLIENTI restituiranno l'errore seguente.

A communications error was detected.
Message No: DSQ10427.

Ibm QMF for z/OS Messages and Codes Reference 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. Nel menu Start, scegliere Pannello di controllo, fare clic su Sistema e sicurezza, fare clic su Windows Firewall, fare clic su Consenti un programma o una 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.

L'istruzione DRDA Client SELECT o CALL ha esito negativo

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

Accesso all'errore di connessione del database relazionale

Il servizio DRDA si connetterà a un database SQL Server usando la stringa di connessioni nella 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 l'errore IBM DB2 seguente.

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 a DB2 per z/OS usa l'autenticazione del servizio DRDA, il servizio DRDA eseguirà l'autenticazione in base solo 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 sicurezza).

  • Impossibile autenticare l'utente: accesso SSOExternalUser non riuscito usando userid/passwd specificati.

    Per supportare questo metodo di autenticazione usando l'accesso Single Sign-On dell'host avviato dall'host, è necessario impostare la proprietà Verifica credenziali esterne su True nell'applicazione di affiliazione.

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

Secondo 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 è per il servizio DRDA per elaborare BGNBND BNDSQLSTT rimuovendo 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 (')
amperand (&)
. (punto)
( (parentesi aperta)
barra rovesciata (\)
) (parentesi chiusa)
` (accento grave)

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

Problema durante l'elaborazione di BGNBND BNDSQLSTT quando il token di coerenza non è leggibile

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

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

Possibili errori durante il mirroring del database

Problema di caricamento del listener di associazione personalizzato all'avvio del servizio

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

Questo problema può essere causato quando il servizio DRDA non può 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 di elenco di controllo di accesso appropriati a queste directory.

Tutti i membri del gruppo di utenti di RUNTIME HIS devono avere diritti di lettura ed esecuzione per la directory di sistema dei file di programma in cui è installata la libreria dinamica del listener di associazione personalizzata. Tutti i membri del gruppo UTENTI runtime HIS devono disporre di diritti di scrittura, lettura ed esecuzione per associare la copia alle directory in cui il listener di associazione personalizzato scriverà la copia di associazione ai file XML e di traccia.

Problema quando il listener di associazione personalizzato non restituisce l'interfaccia di callback.

Il servizio DRDA non restituirà un messaggio di risposta all'associazione BGNBNDRM (Begin Bind Error Reply Message) al client richiesta applicazione DRDA quando un listener di binding personalizzato non riesce a tornare all'istruzione DRDA Service a CREATE PROCEDURE DDL. L'attributo errorWhenNoCallback indica al servizio DRDA di restituire BGNBNDRM (Begin Bind Reply Message) al client DRDA AR, quando il componente listener di binding 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 dei comandi, è possibile arrestare e avviare il servizio DRDA.

  1. Nel menu Start scegliere Tutti i programmi, scegliere Microsoft Visual Studio 2010, scegliere 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 dei comandi, è possibile eseguire il servizio DRDA come applicazione.

  3. Nel menu Start scegliere Tutti i programmi, scegliere Microsoft Visual Studio 2010, scegliere 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 personalizzati

All'avvio del servizio, se il servizio DRDA non può caricare un listener di associazione di pacchetti personalizzato, il servizio DRDA registra 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 devono correggere il problema, in base all'avviso iniziale dopo l'avvio del servizio DRDA.

Eseguire una 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 lo schema SYSIBM e la tabella SYSDUMMY1.

Query restituisce un valore di parametro vuoto

L'istruzione CREATE PROCEDURE deve includere un commento, per indicare che verranno usati uno o più parametri OUTPUT 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 associazione 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 SQLCODE -904.

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

Il pacchetto di esecuzione 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 in locale (TSO, CICS), il sistema DB2 può restituire un SQLCODE -805.

Questo problema può essere causato dal mapping errato di DB2 per z/OS a SQL Server convenzione di denominazione del pacchetto completo. Verificare che la copia di associazione producesse una stored procedure nello schema SQL Server corrispondente al nome letterale db2 per z/OS o al nome della raccolta corrispondente. Verificare inoltre che le MsDrdaService.exe.config databaseAlias includano qualsiasi percorso DB2 necessario per SQL Server mapping dei nomi del 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 separati da virgole per l'attributo packageProcedureSchemaList all'interno dell'elemento di database dell'MsDrdaService.exe.config.

packageProcedureSchemaList="DBO,DSN8910"