Freigeben über


Konfigurieren der Paketbindungsverarbeitung

Interner Paketbinder

Der DRDA-Dienst konvertiert statisches SQL für DB2-Pakete in gespeicherte SQL Server-Prozeduren, indem die DRDA-Befehle Begin Bind (BGNBND) und Bind SQL Statement (BNDSQLSTT) zu den SQL Server-Anweisungen DROP PROCEDURE und CREATE PROCEDURE verarbeitet werden. Ein DRDA BGNBND-Fluss enthält einen oder mehrere BNDSQLSTT-Flüsse, eine pro SQL-Anweisung, die im Paket gespeichert ist. Der DRDA-Dienst ordnet einen DRDA static SQL-Paketabschnitt (mit einer Anweisung) einer gespeicherten SQL Server-Prozedur zu. Der DRDA-Dienst ordnet die BGNBND-Paketbindungsoptionen in Kommentaren innerhalb der gespeicherten Prozeduren zu oder bewahrt sie und optionale erweiterte Eigenschaften gespeicherter Prozeduren. Der DRDA-Dienst verwendet einen internen SQL-Transformator, um SQL-Befehlssyntax, Parameter, Datentypen, Cursor und Resultsets zu konvertieren. Optional können Sie einen benutzerdefinierten Paketbindungslistener entwickeln, um die Pakete interaktiv mit dem DRDA-Dienst oder offline zu verarbeiten.

Paketprozedur

Das createPackageProcedure-Attribut weist den DRDA-Dienst an, einen einzelnen BGNBND-Fluss in eine gespeicherte SQL Server-Prozedur zu verarbeiten, wobei die ursprünglichen Anweisungen, wie durch die DRDA BNDSQLSTT definiert, in die entsprechende SQL Server-Syntax transformiert werden. Dieses optionale Attribut akzeptiert einen booleschen Wert. Der Standardwert ist true.

XML-Paket

Das createPackageXml-Attribut weist den DRDA-Dienst an, einen einzelnen BGNBND-Fluss in eine statische SQL für DB2-Paket-XML-Datei zu verarbeiten, wobei die ursprünglichen Bindungsoptionen und Anweisungen beibehalten werden, wie durch die DRDA BNDSQLSTT-Flüsse definiert. Dieses optionale Attribut akzeptiert einen booleschen Wert. Der Standardwert ist false.

Hinweis

Der DRDA-Dienst verarbeitet eine DRDA PKGRPLOPT (Paketersetzungsoption), indem dieser Codepunkt in eine DROP PROCEDURE-Anweisung umgewandelt wird.

XML-Paketformat

Das packageXmlFormat-Attribut weist den DRDA-Server an, die statische SQL für DB2-XML-Datei im v90- oder v85-Format zu schreiben. Dieses optionale Attribut akzeptiert einen Zeichenfolgenwert von v85 oder v90. Der Standardwert ist v90.

Hinweis

Microsoft HIS 2010 2013 (V9) unterstützt sowohl das alte als auch das neue Format, das ein zugeordnetes XML-Schema zum Überprüfen des XML-Dokuments enthält. Microsoft HIS 2009 und HIS 2010 (V8.5) unterstützen nur das alte Format.

Der Speicherort des XML-Pakets

Das packageXmlLocation-Attribut weist den DRDA-Dienst an, wo die statische SQL für DB2-Paket-XML-Datei geschrieben werden soll. Dieses optionale Attribut akzeptiert einen Zeichenfolgenwert. Der Standardwert lautet "c:\temp".

Hinweis

Der DRDA-Dienst überprüft nicht die SQL-Befehlssyntax beim Verarbeiten der DRDA BGNBND in statische SQL für DB2-XML-Datei. Der DRDA-Dienst behält die ursprünglichen Bindungsoptionen, sql-Anweisungssyntax, Datentypen und andere Werte bei.

Name der gespeicherten Prozedur

DRDA definiert ein vollqualifiziertes statisches SQL-Paket mit einem PKGNAMCT (Paketname und Konsistenztoken), das aus diesen mehreren Teilen besteht.

  • RDBNAM (Relationaler Datenbankname)

  • DRDA RDBCOLID (RDB-Sammlungsbezeichner)

  • DRDA PKGID (RDB-Paketbezeichner)

  • DRDA PKGCNSTKN (RDB Package Consistency Token)

  • DRDA PKGSN (Paketabschnittsnummer)

    Der DRDA-Dienst wandelt den Namen des DRDA-Pakets in einen Namen der gespeicherten SQL Server-Prozedur um, entfernt den RDBNAM-Teil, trennt die RDBCOLID mithilfe eines Punkts und trennt dann die verbleibenden drei Teile mit einem einzelnen Unterstrich.

    DRDA BGNBND-Konvention zur Benennung von statischen SQL-Paketen:

RDBNAME.RDBCOLID.PKGID.PKGCNSTKN.PKGSN  

DRDA-Dienst zugeordnete Benennungskonvention für gespeicherte SQL Server-Prozeduren:

CollectionIdentifer.PackageIdentifier_PackageConsistencyToken_PackageSectionNumber  

Ursprüngliches Paketschema und Name:

CONTOSO.DSN8HC91_PKGSAMP1_43484152544F4B31_1  

Zugeordnetes Paketschema und Name:

ContosoRetailDW.DSN8910_PKGSAMP1_43484152544F4B31_1  

Das storedProcedureNameSeparator-Attribut weist den DRDA-Dienst an, welches Trennzeichen verwendet werden soll, wenn ein DRDA-Paketname einem NAMEN der gespeicherten SQL Server-Prozedur zugeordnet wird. Dieses optionale Attribut akzeptiert einen Zeichenfolgenwert . Der Standardwert ist ein einzelnes Unterstrichzeichen (_).

Paketbindungsoptionen

Das attribut createPackageProcedureWithExtendedProperties weist den DRDA-Dienst an, die BGNBND-Paketbindungsoptionen als erweiterte Eigenschaften in der gespeicherten SQL Server-Prozedur beizubehalten. Dieses optionale Attribut akzeptiert einen booleschen Wert. Der Standardwert ist false.

Paketprozedurschema

Der DRDA-Dienst verarbeitet die DRDA-Befehle EXCSQLSTT (Execute SQL Statement) und OPNQRY (Open Query), indem eine SQL Server CALL-Anweisung für eine entsprechende gespeicherte SQL Server-Prozedur ausgeführt wird. Der DRDA-Dienst sucht die gespeicherte Ziel-SQL Server-Prozedur in einem Schemanamen, der vom Wert des DRDA RDBCOLID (RDB Collection Identifier), innerhalb des DRDA PKGNAMCT (Paketname und Konsistenztoken) oder vollqualifizierten Paketnamens abgeleitet ist, der Teil der DRDA EXCSQLSTT- und OPNQRY-Befehlsflüsse ist.

Das packageProcedureSchemaList weist den DRDA-Dienst an, die gespeicherte Zielprozedur von SQL Server in alternativen Schemas zu suchen. Dieses optionale Attribut akzeptiert einen Zeichenfolgenwert . Der Standardwert ist eine leere Zeichenfolge. Die Zeichenfolge besteht aus einem durch Kommas getrennten SQL Server-Schemanamen.

packageProcedureSchemaList="DBO,DSN8910"

Das Attribut packageProcedureSchemaList ähnelt dem besonderen Register CURRENT PACKAGESET und der Anweisung SET CURRENT PACKAGESET für IBM DB2 für z/OS. Der DRDA-Dienst kombiniert die Namenszuordnungskonventionen, die sowohl im databaseAliases-Element als auch im packageProcedureSchemaList-Attribut enthalten sind.

Ursprüngliches Paketschema und Name:

CONTOSO.DSN8HC91_MSDB2SDK_43484152544F4B31_1  

Zugeordnetes Paketschema und Name:

ContosoRetailDW.DSN8910_MSDB2SDK_43484152544F4B31_1  

Zuerst versucht der DRDA-Dienst, die Metadaten für die SQL Server-Zielprozedur im Caché der Paketprozeduren des DRDA-Dienstes zu finden, indem er zuerst den wörtlichen Paketprozedurennamen verwendet und dann den zugeordneten Namen mithilfe der Schemalistenwerte der Paketprozedur.

Zweitens wird der DRDA-Dienst versuchen, die Metadaten für die Ziel-SQL-Server-Prozedur im SQL-Server-Datenbankkatalog zunächst mithilfe des wörtlichen Paketprozedurnamens und anschließend mit dem zugeordneten Namen unter Verwendung der Schemalistenwerte der Paketprozedur zu finden.

Zwischenspeicher für Paketprozeduren

Der DRDA-Dienst verarbeitet die DRDA-Befehle EXCSQLSTT (Execute SQL Statement) und OPNQRY (Open Query), indem eine SQL Server CALL-Anweisung für eine entsprechende gespeicherte SQL Server-Prozedur ausgeführt wird. Vor der Ausführung der CALL-Anweisung ruft der DRDA-Dienst Metadaten der SQL-Server-Stored-Prozedur ab, um den Anweisungstyp (SELECT, INSERT, UPDATE, DELETE), den Cursortyp (WITH HOLD), die Parameterdatentypen (z. B. CHAR FOR BIT) und andere Attribute, wie beispielsweise das Vorhandensein von Ergebnissen, zu überprüfen. Nach dem Abrufen der Metadaten speichert der DRDA-Dienst diese Informationen, einschließlich des zugeordneten Prozedurnamens, für ein konfiguriertes Intervall in einem Paketprozedurcache zwischen.

Cache für Paketprozeduren leeren

Das packageProcedureCacheFlush-Attribut weist den DRDA-Server an, den Paketprozedurcache nach einem bestimmten Zeitintervall zu leeren. Dieses optionale Attribut akzeptiert einen Dauerwert . Der Standardwert ist P1D (Zeitraum ist 1 Tag). Der Dauerwert wird im Formular PnYnMnDTnHnMnS angegeben.

Gegenstand BESCHREIBUNG
P Zeitspanne der Dauer (erforderlich)
Ny Anzahl der Jahre.
Nm Anzahl der Monate.
nD Anzahl der Tage.
T Beginn eines Zeitabschnitts (erforderlich, um eine Zeitdauer anzugeben, die aus Stunden, Minuten oder Sekunden besteht).
nH Anzahl der Stunden.
Nm Anzahl der Minuten.
S Anzahl der Sekunden.

Dauer der Im XML-Format ausgedrückten Zeit.

Letzter Aufruf der Paketprozedur

Das packageProcedureLastInvoke-Attribut weist den DRDA-Server an, die Namen von Objekten im Paketprozedurcache in eine Textdatei zu schreiben, %DRDAROOT%\LastInvokePackageProcedures.txtnach einem angegebenen Zeitintervall. Dieses optionale Attribut akzeptiert einen Dauerwert . Der Standardwert ist P7D (Zeitraum beträgt 7 Tage). Beim Starten des Diensts lädt der DRDA-Dienst diese Textdatei in das Vorababrufschema für Prozeduren, die in der Datei aufgeführt sind. Der Dauerwert wird im Formular PnYnMnDTnHnMnS angegeben.

Gegenstand BESCHREIBUNG
P Zeitspanne der Dauer (erforderlich)
Ny Anzahl der Jahre.
Nm Anzahl der Monate.
nD Anzahl der Tage.
T Beginn eines Zeitabschnitts (erforderlich, um eine Zeitdauer anzugeben, die aus Stunden, Minuten oder Sekunden besteht).
nH Anzahl der Stunden.
Nm Anzahl der Minuten.
S Anzahl der Sekunden.

Dauer der Im XML-Format ausgedrückten Zeit.

Hinweis

Um die Leistung des Dienststarts zu verbessern, können Sie diese Datei bearbeiten und nicht benötigte Namen gespeicherter Prozeduren entfernen. Um die Leistung der Laufzeitausführung zu verbessern, können Sie diese Datei bearbeiten, um zusätzliche Namen gespeicherter Prozeduren einzuschließen. Um das Lesen und Schreiben der LastInvokePackageProcedures.txt Datei zu deaktivieren, legen Sie den Zeitbereich auf PT0S (Zeitraum null Sekunden) fest.

Benutzerdefinierter Paketbinder

Der DRDA-Dienst unterstützt benutzerdefinierte Paketordner in Form eines benutzerdefinierten .NET Framework-Listeners. Weitere Informationen zum Beispiel für den benutzerdefinierten Paket-Bindungs-Listener finden Sie im Programmierhandbuch und in der Referenz. Das packageBindListeners-Element enthält ein oder mehrere packageBindListener-Elemente, um den DRDA-Server anzuweisen, das Bindenpaket mit ausgebundenen SQL-Anweisungen an optionale benutzerdefinierte Bindungslistener zu senden. Das packageBindListener-Element enthält einen Satz von Attributen zum Definieren eines benutzerdefinierten Bindungslisteners. Der Typ ist Microsoft.HostIntegration.Drda.Common.PackageBindListener, der einen benutzerdefinierten DRDA Server-Bindungslistener definiert hat.

Benutzerdefinierter Bindungsempfänger

Das attribut createPackageProcedureWithCustomSqlScripts weist den DRDA-Dienst an, DRDA BGNBND und BNDSQLSTT über eine externe benutzerdefinierte Paketbindungslistenerkomponente zu verarbeiten. Dieses optionale Attribut akzeptiert einen booleschen Wert. Der Standardwert ist false.

Hinweis

Auf die benutzerdefinierte Paketbindungslistenerkomponente muss in der MsDrdaService.exe.config wie folgt verwiesen werden.

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

Standardwerte für packageBindListener in der DRDA-Dienstanwendungskonfigurationsdatei.

Fehler bei fehlendem Callback

Das Attribut errorWhenNoCallback weist den DRDA-Dienst an, an den DRDA AR-Client BGNBNDRM (Begin Bind Reply Message) zurückzusenden, wenn die benutzerdefinierte Bindungs-Listener-Komponente keine Informationen über die Rückrufschnittstelle liefert. Dieses optionale Attribut akzeptiert einen booleschen Wert. Der Standardwert lautet true.