IBM DB2 Subscribers
SQL Server unterstützt Pushabonnements für IBM DB2/AS 400, DB2/MVS und DB2/Universal Database über die OLE DB-Anbieter, die mit Microsoft Host Integration-Server bereitgestellt werden.
Konfigurieren eines IBM DB2-Abonnenten
Führen Sie zum Konfigurieren eines IBM DB2-Abonnenten die folgenden Schritte aus:
Installieren Sie die neueste Version des Microsoft OLE DB-Anbieters für DB2 auf dem Verteiler:
Wenn Sie Microsoft SQL Server 2012 Enterprise verwenden, klicken Sie auf der Webseite SQL Server 2008-Downloads im Abschnitt Verwandte Downloads auf den Link zur neuesten Version des Microsoft SQL Server 2008 Feature Packs. Suchen Sie auf der Webseite Microsoft SQL Server 2008 Feature Pack nach Microsoft OLE DB Provider for DB2(bzw. nach Microsoft OLE DB-Anbieter für DB2, falls eine deutsche Webseite vorhanden ist).
Wenn Sie SQL Server 2012 Standard verwenden, installieren Sie die neueste Version des Microsoft Host Integration Services-Servers (HIS), die 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 2012 Enterprise 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. 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
Zeigen Sie im Menü Startauf Programme, dann auf Microsoft OLE DB-Anbieter für DB2, und klicken Sie dann auf Data Access Tool.
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).
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;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 Option
Process Binary as Character
sollte jedoch immer aufFalse
festgelegt sein. Für die OptionInitial 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.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 wird das Skript im Transact-SQL-Dialekt erstellt und dann vom Verteilungs-Agent in einen generischeren SQL-Dialekt übersetzt, bevor es auf den 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 auf dem Abonnenten ohne Übersetzung 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 Datentypzuordnungsänderungen beschränkt sein (und das Skript sollte 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
Nachdem die Momentaufnahme für die Veröffentlichung generiert wurde, wechseln Sie in den Momentaufnahmeordner für die Veröffentlichung.
Suchen Sie die Datei .sch, die denselben Namen wie der Artikel trägt, z. B. MyArticle.sch.
Öffnen Sie diese Datei im Editor oder einem anderen Text-Editor.
Ändern Sie die Datei, und speichern Sie sie in einem anderen Verzeichnis.
Führen Sie sp_changearticle aus, wobei Sie den Dateipfad und den Namen für die Eigenschaft creation_script angeben. Weitere Informationen finden Sie unter sp_changearticle (Transact-SQL).
So erstellen Sie ein Artikelskript und stellen Sie es als benutzerdefiniertes Erstellungsskript bereit
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.
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.
InSQL Server werden längere Tabellen- und Spaltennamen als DB2 unterstützt:
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 |
image |
VARCHAR(0) FÜR BITDATEN1 |
into |
INT |
money |
DECIMAL(19,4) |
nchar(1-4000) |
VARCHAR(1-4000) |
ntext |
VARCHAR(0)1 |
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)1 |
real |
REAL |
smalldatetime |
timestamp |
smallint |
SMALLINT |
smallmoney |
DECIMAL(10,4) |
sql_variant |
– |
sysname |
VARCHAR(128) |
text |
VARCHAR(0)1 |
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) FÜR BITDATEN1 |
varchar(max) |
VARCHAR(0)1 |
xml |
VARCHAR(0)1 |
1 Weitere Informationen zu Zuordnungen zu VARCHAR(0) finden Sie im nächsten Abschnitt.
Überlegungen zur Datentypzuordnung
Berücksichtigen Sie die folgenden Überlegungen zur Datentypzuordnung beim Replizieren auf DB2-Abonnenten:
Beim Zuordnen SQL Server
char
,varchar
undbinary
varbinary
zu DB2 CHAR, VARCHAR, CHAR FOR BIT DATA und VARCHAR FOR BIT DATA legt die Replikation die Länge des DB2-Datentyps mit der des SQL Server-Typs fest.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 unterstützt VARCHAR-Spalten bis zu 32 KB. Deshalb können einige LOB-Spalten (Large Object) von SQL Server ordnungsgemäß VARCHAR-Spalten von DB2 zugeordnet werden. Der von der Replikation für DB2 verwendete OLE DB-Anbieter unterstützt jedoch keine Zuordnung von SQL Server -LOB zu DB2-LOB. Aus diesem Grund werden SQL Server
text
Spalten ,varchar(max)
,ntext
undnvarchar(max)
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).Bestimmen Sie basierend auf Ihrer Kenntnis der von Ihnen replizierten Quelltabelle, ob es angemessen ist, einen SQL Server -LOB einem DB2-Objekt variabler Länge zuzuordnen, und geben Sie eine angemessene 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 SQL Server
nchar
undnvarchar
in 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-TabelleIn einigen DB2-Umgebungen ist ein SQL Server
char
Datenelement 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 mitnchar
undnvarchar
Spalten replizieren, müssen Sie möglicherweise eine größere maximale Länge für den Datentyp 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.
Siehe auch
Non-SQL Server Subscribers
Abonnieren von Veröffentlichungen