Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
SQL Server unterstützt Pushabonnements für 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
Gehen Sie zum Konfigurieren eines IBM Db2-Abonnenten wie folgt vor:
Installieren Sie die neueste Version des Microsoft OLE DB-Anbieters für DB2 auf dem Verteiler:
Wenn Sie SQL Server Enterprise Edition verwenden, wählen Sie auf der Webseite SQL Server Downloads im Bereich Verwandte Downloads den Link zur neuesten Version des Microsoft SQL Server Feature Packs aus. Auf der Webseite des Microsoft SQL Server Feature Packs suchen Sie nach OLE DB Provider für DB2.
Wenn Sie die SQL Server Standard Edition verwenden, installieren Sie die neueste Version des Microsoft Host Integration Services (HIS) Servers, zu dem auch der Anbieter gehört.
Zusätzlich zur Installation des Providers installieren Sie das Data Access Tool, das im nächsten Schritt verwendet wird. Das Tool ist 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.
Erstellen Sie eine Verbindungszeichenfolge für den Abonnenten. Du kannst die Verbindungszeichenfolge in jedem Texteditor erstellen, aber benutze das Data Access Tool. So erstellen Sie die Zeichenfolge im Data Access Tool
Wählen Sie Start, Programme, OLE DB Provider für DB2 und dann Data Access Tool.
Folgen Sie im Data Access Tool den Anweisungen, um die Informationen zum DB2-Server anzugeben. Wenn Sie das Tool abschließen, erstellt es eine universelle Datenverbindung (UDL) mit einem zugehörigen Verbindungszeichenfolge. Das UDL wird nicht durch Replikation verwendet, aber der Verbindungszeichenfolge schon.
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.
Der Verbindungszeichenfolge ist ähnlich wie folgt (Zeilenumbrüche dienen der 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 String sind spezifisch für den DB2-Server, den du konfigurierst, aber du solltest die
Process Binary as Characterund-OptionenDerive Parametersimmer aufFalsesetzen. Sie müssen einen Wert für dieInitial CatalogOption zur Identifizierung der Abonnementdatenbank angeben. Gib die Verbindungszeichenfolge im New Subscription Wizard ein, wenn du das Abonnement erstellst.Erstellen Sie eine Momentaufnahme- oder Transaktionsveröffentlichung, 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.
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 erstellt man das Skript im Transact-SQL-Dialekt, und der Verteilungs-Agent übersetzt es in einen generischeren SQL-Dialekt, bevor es beim Abonnenten angewendet wird. Um ein benutzerdefiniertes Erstellungsskript zu spezifizieren, modifizieren Sie entweder das bestehende Transact-SQL Skript oder erstellen Sie ein vollständiges Skript, das den DB2-SQL-Dialekt verwendet. Wenn du ein DB2-Skript erstellst, verwende die bypass_translation-Direktive, damit die Verteilungs-Agent das Skript ohne Übersetzung beim Subscriber anwendet.Man kann Skripte aus verschiedenen Gründen modifizieren, aber der häufigste Grund ist, die Datentypzuordnungen zu ändern. Weitere Informationen finden Sie im Abschnitt "Überlegungen zur Datentypabbildung" in diesem Artikel. Wenn du das Transact-SQL-Skript änderst, beschränke Änderungen auf Änderungen bei Datentyp-Mapping und füge keine Kommentare hinzu. Wenn du größere Änderungen brauchst, erstelle ein DB2-Skript.
So ändern Sie ein Artikelskript und stellen Sie es als benutzerdefiniertes Erstellungsskript bereit
Nachdem der Schnappschuss für die Veröffentlichung generiert wurde, gehe zum Snapshot-Ordner der Veröffentlichung.
Suchen Sie die Datei
.sch, die denselben Namen wie der Artikel trägt, z.B.MyArticle.sch.Öffnen Sie diese Datei mit Notepad oder einem anderen Texteditor.
Ändern Sie die Datei, und speichern Sie sie in einem anderen Verzeichnis.
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
Erstellen Sie ein Artikelskript mit dem Db2-SQL-Dialekt. Stellen Sie sicher, dass bypass_translationdie erste Zeile in der Datei ist und nichts sonst in der Zeile steht.
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
Zusätzlich zu den im Artikel behandelten Überlegungen Non-SQL Server Subscribers sollten Sie bei der Replikation auf Db2-Abonnenten folgende Probleme berücksichtigen:
Die Daten und Indizes jeder replizierten Tabelle werden einem Db2-Tabellenraum zugewiesen. Die Seitengröße eines Db2-Tabellenraums steuert die maximale Anzahl der Spalten und die maximale Zeilengröße der Tabellen, die zum Tabellenraum gehören. Stellen Sie sicher, dass der den replizierten Tabellen zugeordnete Tablespace unter Berücksichtigung der Anzahl der replizierten Spalten und der maximalen Zeilengröße der Tabellen geeignet ist.
Veröffentlichen Sie keine Tabellen an Db2-Abonnenten durch transaktionale Replikation, wenn eine oder mehrere Primärschlüsselspalten in der Tabelle den Datentyp DECIMAL(32-38, 0-38) oder NUMERIC(32-38, 0-38) haben. Transaktionale Replikation identifiziert Zeilen mithilfe des Primärschlüssels. Diese Methode kann zu Fehlern führen, da diese Datentypen beim Abonnenten VARCHAR(41) zugeordnet werden. Man kann Tabellen mit Primärschlüsseln, die diese Datentypen verwenden, durch Snapshot-Replikation veröffentlichen.
Wenn Sie Tabellen auf dem Subscriber erstellen möchten, anstatt sie durch die Replikation erstellen zu lassen, verwenden Sie die Option „Nur Replikationsunterstützung“. Weitere Informationen finden Sie unter Initialisieren eines Transaktionsabonnements ohne Snapshot.
SQL Server erlaubt längere Tabellen- und Spaltennamen als Db2:
Wenn die Publikationsdatenbank Tabellen mit Namen enthält, die länger sind, als von der Db2-Version des Subscribers unterstützt wird, geben Sie für die „destination_table“-Artikeleigenschaft einen alternativen Namen an. Weitere Informationen zum Festlegen von Eigenschaften beim Erstellen einer Veröffentlichung finden Sie unter Erstellen einer Veröffentlichung und Definieren eines Artikels.
Du kannst keine alternativen Spaltennamen angeben. Stellen Sie sicher, dass veröffentlichte Tabellen keine Spaltennamen enthalten, die länger sind als die, die in der Db2-Version beim Subscriber unterstützt werden.
Zuordnung von Datentypen vom SQL Server auf IBM Db2
Die folgende Tabelle zeigt die Datentypzuordnungen, die verwendet werden, wenn Daten für einen Abonnenten repliziert werden, der IBM Db2 verwendet.
| SQL Server-Datentyp | IBM Db2-Datentyp |
|---|---|
| bigint | DECIMAL(19,0) |
| binary(1-254) | ZEICHEN(1-254) FÜR BIT-DATEN |
| binary(255-8000) | VARCHAR(255-8000) FÜR BIT-DATEN |
| Bit | SMALLINT |
| char(1-254) | CHAR(1-254) |
| char(255-8000) | VARCHAR(255-8000) |
| date | DATUM |
| datetime | timestamp |
| DATETIME2(0-7) | VARCHAR(27) |
| DATETIMEOFFSET(0-7) | VARCHAR(34) |
| Dezimalzahl(1-31, 0-31) | DEZIMAL(1-31, 0-31) |
| Dezimalzahl(32-38, 0-38) | VARCHAR(41) |
| float(53) | DOPPELT |
| float | FLOAT |
| geography | IMAGE |
| geometry | IMAGE |
| hierarchyid | BILD |
| Abbildung | VARCHAR(0) FÜR BIT-DATEN* |
| into | INT |
| money | DECIMAL(19,4) |
| nchar(1-4000) | VARCHAR(1-4000) |
| ntext | VARCHAR(0)* |
| numerisch(1-31, 0-31) | DECIMAL(1-31,0-31) |
| numerisch(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 | N/V |
| sysname | VARCHAR(128) |
| text | VARCHAR(0)* |
| TIME(0-7) | VARCHAR(16) |
| timestamp | ZEICHEN(8) FÜR BIT-DATEN |
| tinyint | SMALLINT |
| uniqueidentifier | CHAR(38) |
| varbinary(1-8000) | VARCHAR(1-8000) FÜR BIT-DATEN |
| varchar(1-8000) | VARCHAR(1-8000) |
| varbinary(max) | VARCHAR(0) FÜR BIT-DATEN* |
| varchar(max) | VARCHAR(0)* |
| xml | VARCHAR(0)* |
- Im nächsten Abschnitt finden Sie weitere Informationen zu den Zuordnungen zu VARCHAR(0).
Überlegungen zur Datentyp-Abbildung
Berücksichtigen Sie die folgenden Überlegungen zur Datentypzuordnung beim Replizieren auf DB2-Abonnenten:
Beim Mapping von SQL Server char, varchar, binary und varbinary auf Db2 CHAR, VARCHAR, CHAR FOR BIT DATA bzw. VARCHAR FOR BIT DATA setzt die Replikation die Länge des Db2-Datentyps auf dieselbe Länge wie die des SQL Server-Typs.
Dieser Ansatz ermöglicht es, die generierte Tabelle beim Abonnenten erfolgreich zu erstellen, solange die DB2-Seitengrößenbeschränkung groß genug ist, um die maximale Größe der Zeile zu ermöglichen. Stellen Sie sicher, dass das Login, mit dem Sie auf die Db2-Datenbank zugreifen, Berechtigungen hat, auf Tabellenräume zuzugreifen, die ausreichend groß sind, damit die Tabellen zu Db2 repliziert werden.
DB2 unterstützt VARCHAR-Spalten bis zu 32 Kilobyte (KB); daher können einige große Objektspalten von SQL Server angemessen auf DB2-VARCHAR-Spalten abgebildet werden. Der OLE-Datenbankanbieter, den die Replikation für DB2 verwendet, unterstützt jedoch keine Abbildung großer SQL Server-Objekte auf große DB2-Objekte. Aus diesem Grund werden SQL Server-Spalten vom Typ text, varchar(max), ntext und nvarchar(max) in den generierten CREATE-Skripten VARCHAR(0) zugeordnet. Sie müssen den Längenwert von 0 auf einen passenden Wert ändern, bevor Sie das Skript auf den Subscriber anwenden. Wenn Sie die Länge des Datentyps nicht ändern, löst DB2 den Fehler 604 aus, wenn die Tabellenerstellung beim DB2-Abonnenten durchgeführt wird (Fehler 604 zeigt an, dass das Genauigkeits- oder Längenattribut eines Datentyps nicht gültig ist).
Basierend auf deinem Wissen über die Quelltabelle, die du replizierst, entscheide, ob es angemessen ist, ein großes SQL Server-Objekt auf ein variabel langes DB2-Element zu mappen, und gib in einem benutzerdefinierten Erstellungsskript eine passende maximale Länge an. Informationen zur Spezifikation eines benutzerdefinierten Erstellungsskripts finden Sie in Schritt 5 im Abschnitt "Konfiguration eines IBM Db2-Abonnenten" in diesem Artikel.
Hinweis
Die angegebene Länge für den DB2-Typ darf in Kombination mit anderen Spaltenlängen die maximale Zeilengröße nicht überschreiten, basierend auf dem DB2-Tabellenraum, dem die Tabellendaten zugeordnet sind.
Wenn es keine geeignete Abbildung für eine große Objektspalte gibt, solltest du eine Spaltenfilterung im Artikel verwenden, damit die Spalte nicht repliziert wird. Weitere Informationen finden Sie unter Filtern von veröffentlichten Daten.
Beim Replikieren von SQL Server nchar und nvarchar auf DB2 CHAR und VARCHAR verwendet die Replikation für den DB2-Typ denselben Längen-Spezifizator wie für den SQL Server-Typ. Allerdings könnte die Länge des Datentyps für die generierte DB2-Tabelle zu klein sein.
In einigen DB2-Umgebungen ist ein SQL Server-Char-Datenelement nicht auf Einzelbyte-Zeichen beschränkt; die Länge eines CHAR- oder VARCHAR-Elements muss diese Bedingung berücksichtigen. Du musst auch shift in- und shift out-Zeichen berücksichtigen, falls sie benötigt werden. Wenn du Tabellen mit nchar- und nvarchar-Spalten replizierst, musst du möglicherweise eine größere maximale Länge für den Datentyp in einem benutzerdefinierten Erstellungsskript angeben. Informationen zur Spezifikation eines benutzerdefinierten Erstellungsskripts finden Sie in Schritt 5 im Abschnitt "Konfiguration eines IBM Db2-Abonnenten" in diesem Artikel.