IBM DB2-Abonnenten

Gilt für:SQL Server

SQL Server unterstützt Pushabonnements an IBM DB2/AS 400, DB2/MVS und DB2/Universal Database über die OLE DB-Anbieter, die in Microsoft Host Integration Server enthalten sind.

Konfigurieren eines IBM DB2-Abonnenten

Führen Sie zum Konfigurieren eines IBM DB2-Abonnenten die folgenden Schritte aus:

  1. Installieren Sie die neueste Version des Microsoft OLE DB-Anbieters für DB2 im Distributor:

    • Wenn Sie SQL Server Enterprise Edition verwenden, klicken Sie auf der Webseite "SQL Server-Downloads " im Abschnitt "Verwandte Downloads " auf den Link zur neuesten Version des Microsoft SQL Server Feature Packs. Suchen Sie auf der Webseite Microsoft SQL Server Feature Pack nach Microsoft OLE DB-Anbieter für DB2.

    • Wenn Sie SQL Server Standard Edition verwenden, installieren Sie die neueste Version des Microsoft Host Integration Services (HIS)-Servers, der den Anbieter enthält.

    Zusätzlich zur Installation des Anbieters wird empfohlen, das Datenzugriffstool zu installieren, das im nächsten Schritt verwendet wird (es wird standardmäßig mit dem Download für SQL Server Enterprise Edition installiert. Weitere Informationen zum Installieren und Verwenden des Data Access Tools finden Sie in der Anbieter- oder der HIS-Dokumentation.

  2. Erstellen Sie eine Verbindungszeichenfolge für den Abonnenten. Die Verbindungszeichenfolge kann in einem beliebigen Text-Editor erstellt werden, Sie sollten jedoch das Data Access Tool verwenden. So erstellen Sie die Zeichenfolge im Data Access Tool

    1. Zeigen Sie im Menü Startauf Programme, dann auf Microsoft OLE DB-Anbieter für DB2, und klicken Sie dann auf Data Access Tool.

    2. Folgen Sie im Data Access Tool den Anweisungen, um die Informationen zum DB2-Server anzugeben. Wenn Sie das Tool abgeschlossen haben, wird ein universeller Datenlink (Universal Data Link, UDL) mit einer zugeordneten Verbindungszeichenfolge erstellt (die UDL wird nicht tatsächlich von der Replikation verwendet, sondern die Verbindungszeichenfolge).

    3. Greifen Sie auf die Verbindungszeichenfolge zu: Klicken Sie mit der rechten Maustaste auf die UDL im Data Access Tool, und wählen Sie Verbindungszeichenfolge anzeigenaus.

    Die Verbindungszeichenfolge ähnelt dem Folgenden (der Zeilenumbruch dient der besseren Lesbarkeit):

    Provider=DB2OLEDB;Initial Catalog=MY_SUBSCRIBER_DB;Network Transport Library=TCP;Host CCSID=1252;  
    PC Code Page=1252;Network Address=MY_SUBSCRIBER;Network Port=50000;Package Collection=MY_PKGCOL;  
    Default Schema=MY_SCHEMA;Process Binary as Character=False;Derive Parameters=False;Units of Work=RUW;DBMS Platform=DB2/NT;  
    Persist Security Info=False;Connection Pooling=True;  
    

    Die meisten Optionen in der Zeichenfolge beziehen sich speziell auf den DB2-Server, den Sie konfigurieren. Die Optionen Process Binary as Character und Derive Parameters sollten jedoch immer auf False festgelegt sein. Für die Option Initial Catalog ist ein Wert erforderlich, um die Abonnementdatenbank identifizieren zu können. Die Verbindungszeichenfolge wird beim Erstellen des Abonnements in Assistenten für neue Abonnements eingegeben.

  3. Erstellen Sie eine Momentaufnahme oder transaktionsbezogene Publikation, aktivieren Sie sie für Nicht-SQL Server-Abonnenten, und erstellen Sie dann ein Pushabonnement für den Abonnenten. Weitere Informationen finden Sie unter Erstellen eines Abonnements für einen Nicht-SQL Server-Abonnenten.

  4. Sie können auch ein benutzerdefiniertes Erstellungsskript für einen oder mehrere Artikel angeben. Beim Veröffentlichen einer Tabelle wird ein CREATE TABLE-Skript für diese Tabelle erstellt. Für Nicht-SQL Server-Abonnenten wird das Skript im Transact-SQL-Dialekt erstellt und anschließend vom Verteilungs-Agent in einen generischeren SQL-Dialekt übersetzt, bevor es beim Abonnenten angewendet wird. Um ein benutzerdefiniertes Erstellungsskript anzugeben, ändern Sie entweder das vorhandene Transact-SQL-Skript, oder erstellen Sie ein vollständiges Skript, das den DB2 SQL-Dialekt verwendet; Wenn ein DB2-Skript erstellt wird, verwenden Sie die bypass_translation-Direktive , damit der Verteilungs-Agent das Skript ohne Übersetzung beim Abonnenten anwendet.

    Skripts können aus verschiedenen Gründen geändert werden, der häufigste Grund ist jedoch das Ändern von Datentypzuordnungen. Weitere Informationen dazu finden Sie unter den Überlegungen zu Datentypänderungen in diesem Thema. Wenn Sie das Transact-SQL-Skript ändern, sollten Änderungen auf Änderungen der Datentypzuordnung beschränkt werden (und das Skript darf keine Kommentare enthalten). Wenn weit reichendere Änderungen erforderlich sind, erstellen Sie ein DB2-Skript.

    So ändern Sie ein Artikelskript und stellen Sie es als benutzerdefiniertes Erstellungsskript bereit

    1. Nachdem die Momentaufnahme für die Veröffentlichung generiert wurde, wechseln Sie in den Momentaufnahmeordner für die Veröffentlichung.

    2. Suchen Sie die Datei .sch, die denselben Namen wie der Artikel trägt, z.B. MyArticle.sch.

    3. Öffnen Sie diese Datei im Editor oder einem anderen Text-Editor.

    4. Ändern Sie die Datei, und speichern Sie sie in einem anderen Verzeichnis.

    5. Führen Sie sp_changearticleaus, und geben Sie dabei den Dateipfad und den Namen für die creation_script -Eigenschaft an. Weitere Informationen finden Sie unter sp_changearticle (Transact-SQL).

    So erstellen Sie ein Artikelskript und stellen Sie es als benutzerdefiniertes Erstellungsskript bereit

    1. Erstellen Sie mit dem DB2 SQL-Dialekt ein Artikelskript. Stellen Sie sicher, dass bypass_translationdie erste Zeile in der Datei ist und nichts sonst in der Zeile steht.

    2. Führen Sie sp_changearticle aus, wobei Sie den Dateipfad und den Namen für die Eigenschaft creation_script angeben.

Überlegungen zu IBM DB2-Abonnenten

Berücksichtigen Sie beim Replizieren auf DB2-Abonnenten neben den Überlegungen im Thema Non-SQL Server Subscribersdie folgenden Aspekte:

  • Die Daten und Indizes für jede replizierte Tabelle werden einem DB2-Tabellenbereich zugewiesen. Die Seitengröße eines DB2-Tabellenbereichs steuert die maximale Spaltenzahl und die maximale Zeilengröße der zum Tabellenbereich gehörenden Tabellen. Stellen Sie sicher, dass sich der Tabellenbereich, der replizierten Tabellen zugeordnet ist, hinsichtlich der Zahl der replizierten Spalten und der maximalen Zeilengröße der Tabellen eignet.

  • Veröffentlichen Sie Tabellen nicht mithilfe der Transaktionsreplikation auf DB2-Abonnenten, wenn eine oder mehrere Fremdschlüsselspalten in der Tabelle den DECIMAL(32-38, 0-38)- oder NUMERIC(32-38, 0-38)-Datentyp aufweist. Bei der Transaktionsreplikation werden Zeilen anhand des Primärschlüssels identifiziert. Das kann zu Fehlern führen, weil diese Datentypen VARCHAR(41) auf dem Abonnenten zugeordnet sind. Tabellen mit Primärschlüsseln, die diesen Datentyp verwenden, können mithilfe der Momentaufnahmereplikation veröffentlicht werden.

  • Wenn Sie Tabellen auf dem Abonnenten im Voraus erstellen möchten statt später durch die Replikation, verwenden Sie die Option replication support only. Weitere Informationen finden Sie unter Initialize a Transactional Subscription Without a Snapshotinitialisiert wird.

  • SQL Server ermöglicht längere Tabellen- und Spaltennamen als DB2:

    • Wenn die Veröffentlichungsdatenbank Tabellen mit längeren Namen enthält, als von der DB2-Version auf dem Abonnenten unterstützt werden, geben Sie einen alternativen Namen für die destination_table-Artikeleigenschaft an. Weitere Informationen zum Festlegen von Eigenschaften beim Erstellen einer Veröffentlichung finden Sie unter Erstellen einer Veröffentlichung und Definieren eines Artikels.

    • Es können keine alternativen Spaltennamen angegeben werden. Stellen Sie sicher, dass veröffentlichte Tabellen keine längeren Spaltennamen enthalten, als von der DB2-Version auf dem Abonnenten unterstützt werden.

Zuordnung zwischen Datentypen von SQL Server und IBM DB2

Die folgende Tabelle zeigt die Datentypzuordnungen, die beim Replizieren von Daten auf einen Abonnenten mit IBM DB2 verwendet werden.

SQL Server-Datentyp IBM DB2-Datentyp
bigint DECIMAL(19,0)
binary(1-254) CHAR(1-254) FOR BIT DATA
binary(255-8000) VARCHAR(255-8000) FOR BIT DATA
bit SMALLINT
char(1-254) CHAR(1-254)
char(255-8000) VARCHAR(255-8000)
date DATE
datetime timestamp
DATETIME2(0-7) VARCHAR(27)
DATETIMEOFFSET(0-7) VARCHAR(34)
decimal(1-31, 0-31) DECIMAL(1-31, 0-31)
decimal(32-38, 0-38) VARCHAR(41)
float(53) Double
float GLEITKOMMAZAHL
geography BILD
geometry BILD
hierarchyid BILD
Abbildung VARCHAR(0) FOR BIT DATA*
into INT
money DECIMAL(19,4)
nchar(1-4000) VARCHAR(1-4000)
ntext VARCHAR(0)*
numeric(1-31, 0-31) DECIMAL(1-31,0-31)
numeric(32-38, 0-38) VARCHAR(41)
nvarchar(1-4000) VARCHAR(1-4000)
nvarchar(max) VARCHAR(0)*
real REAL
smalldatetime timestamp
smallint SMALLINT
smallmoney DECIMAL(10,4)
sql_variant Nicht zutreffend
sysname VARCHAR(128)
text VARCHAR(0)*
TIME(0-7) VARCHAR(16)
timestamp CHAR(8) FOR BIT DATA
tinyint SMALLINT
uniqueidentifier CHAR(38)
varbinary(1-8000) VARCHAR(1-8000) FOR BIT DATA
varchar(1-8000) VARCHAR(1-8000)
varbinary(max) VARCHAR(0) FOR BIT DATA*
varchar(max) VARCHAR(0)*
xml VARCHAR(0)*
  • Im nächsten Abschnitt finden Sie weitere Informationen zu den Zuordnungen zu VARCHAR(0).

Überlegungen zur Datentypzuordnung

Berücksichtigen Sie die folgenden Überlegungen zur Datentypzuordnung beim Replizieren auf DB2-Abonnenten:

  • Beim Zuordnen von SQL Server-Zeichen, Varchar, Binary und Varbinary zu DB2 CHAR, VARCHAR, CHAR FOR BIT DATA und VARCHAR FOR BIT DATA legt die Replikation die Länge des DB2-Datentyps so fest, dass sie mit dem des SQL Server-Typs identisch ist.

    Dadurch kann die Tabelle erfolgreich auf dem Abonnenten erstellt werden, sofern die Einschränkung der DB2-Seitengröße die maximale Größe der Zeile zulässt. Stellen Sie sicher, dass die für den Zugriff auf die DB2 verwendete Anmeldung über die Berechtigungen verfügt, um auf Tabellenbereiche von ausreichender Größe für die auf DB2 zu replizierenden Tabellen zugreifen zu können.

  • DB2 kann VARCHAR-Spalten mit einer Größe von 32 KB unterstützen; Daher ist es möglich, dass einige große SQL Server-Objektspalten entsprechend DB2 VARCHAR-Spalten zugeordnet werden können. Der OLE DB-Anbieter, der für DB2 verwendet wird, unterstützt jedoch die Zuordnung großer SQL Server-Objekte zu db2 großen Objekten nicht. Aus diesem Grund werden SQL Server-Text, varchar(max)-, ntext- und nvarchar(max)-Spalten varCHAR(0) in den generierten Erstellungsskripts zugeordnet. Der Längenwert 0 muss in einen ordnungsgemäßen Wert geändert werden, bevor das Skript auf den Abonnenten angewendet wird. Wird die Länge des Datentyps nicht geändert, löst DB2 Fehler 604 bei dem Versuch der Tabellenerstellung auf dem DB2-Abonnenten aus (Fehler 604 bedeutet, dass das Genauigkeits- oder Längenattribut des Datentyps ungültig ist).

    Ermitteln Sie basierend auf Ihrem Wissen über die Quelltabelle, die Sie replizieren, ob es geeignet ist, ein großes SQL Server-Objekt einem DB2-Element mit variabler Länge zuzuordnen, und geben Sie eine geeignete maximale Länge in einem benutzerdefinierten Erstellungsskript an. Informationen zum Angeben eines benutzerdefinierten Erstellungsskripts finden Sie in Schritt 5 im Abschnitt zum Konfigurieren eines IBM DB2-Abonnenten in diesem Thema.

    Hinweis

    Die angegebene Länge für den DB2-Typ kann beim Kombinieren mit anderen Spaltenlängen die maximale Zeilengröße nicht überschreiten, die auf dem DB2-Tabellenbereich basiert, dem die Tabellendaten zugewiesen sind.

    Wenn keine geeignete Zuordnung für eine LOB-Spalte vorhanden ist, verwenden Sie die Spaltenfilterung für die Artikel, sodass die Spalte nicht repliziert wird. Weitere Informationen finden Sie unter Filtern von veröffentlichten Daten.

  • Beim Replizieren von SQL Server nchar und nvarchar auf DB2 CHAR und VARCHAR verwendet die Replikation den gleichen Längenbezeichner für den DB2-Typ wie für den SQL Server-Typ. Die Datentyplänge ist jedoch möglicherweise zu gering für die generierte DB2-Tabelle

    In einigen DB2-Umgebungen ist ein SQL Server-Zeichendatenelement nicht auf Einzelbytezeichen beschränkt. Die Länge eines CHAR- oder VARCHAR-Elements muss dies berücksichtigen. Sie müssen auch Rückschaltungs - und Dauerumschaltungs zeichen berücksichtigen, wenn diese benötigt werden. Wenn Sie Tabellen mit nchar - und nvarchar -Spalten replizieren, müssen Sie gegebenenfalls eine größere maximale Länge für die Datentypen in einem benutzerdefinierten Erstellungsskript angeben. Informationen zum Angeben eines benutzerdefinierten Erstellungsskripts finden Sie in Schritt 5 im Abschnitt zum Konfigurieren eines IBM DB2-Abonnenten in diesem Thema.

Weitere Informationen

Nicht-SQL Server-Abonnenten
Abonnieren von Veröffentlichungen