Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Van toepassing op:SQL Server
SQL Server ondersteunt pushabonnementen naar IBM Db2/AS 400, DB2/MVS en DB2/Universal Database via de OLE DB-providers die zijn opgenomen in Microsoft Host Integration Server.
Een IBM Db2-abonnee configureren
Voer de volgende stappen uit om een IBM Db2-abonnee te configureren:
Installeer de nieuwste versie van de Microsoft OLE DB-provider voor DB2 op de distributeur:
Als je SQL Server Enterprise Edition gebruikt, selecteer dan op de SQL Server Downloads-webpagina, in de sectie Gerelateerde Downloads, de link naar de nieuwste versie van het Microsoft SQL Server Feature Pack. Op de webpagina van de Microsoft SQL Server Feature Pack zoekt u naar OLE DB Provider voor DB2.
Als je SQL Server Standard Edition gebruikt, installeer dan de nieuwste versie van de Microsoft Host Integration Services (HIS) server, inclusief de provider.
Naast het installeren van de provider, installeer je de Data Access Tool, die in de volgende stap wordt gebruikt. De tool wordt standaard geïnstalleerd met de download voor SQL Server Enterprise Edition. Zie de documentatie van de provider of de HIS-documentatie voor meer informatie over het installeren en gebruiken van het Data Access-hulpprogramma.
Maak een verbindingsreeks voor de abonnee. Je kunt de verbindingsreeks in elke teksteditor aanmaken, maar gebruik de Data Access Tool. Om de tekenreeks in de Data Access Tool te maken:
Selecteer Start, Programs, OLE DB Provider voor DB2, en vervolgens Data Access Tool.
Volg in het hulpprogramma voor gegevenstoegang de stappen om informatie over de DB2-server op te geven. Wanneer je de tool voltooit, wordt er een universele datalink (UDL) gemaakt met een bijbehorende verbindingsreeks. De UDL wordt niet gebruikt door replicatie, maar de verbindingsreeks wel.
Open de verbindingsreeks: klik met de rechtermuisknop op de UDL in het hulpprogramma Voor gegevenstoegang en selecteer Verbindingsreeks weergeven.
De verbindingsreeks lijkt op het volgende (regelbrekingen zijn voor leesbaarheid):
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;De meeste opties in de tekenreeks zijn specifiek voor de DB2-server die je configureert, maar je moet de opties
Process Binary as CharacterenDerive Parametersaltijd instellen opFalse. Je moet een waarde opgeven voor deInitial Catalogoptie om de abonnementsdatabase te identificeren. Voer de verbindingsreeks in in de New Subscription Wizard wanneer je het abonnement aanmaakt.Maak een momentopname of transactionele publicatie, schakel deze in voor niet-SQL Server-abonnees en maak vervolgens een pushabonnement voor de abonnee. Zie Een abonnement maken voor een niet-SQL Server-abonnee voor meer informatie.
Geef desgewenst een aangepast script voor het maken van een of meer artikelen op. Wanneer een tabel wordt gepubliceerd, wordt er een
CREATE TABLEscript voor die tabel gemaakt. Voor niet-SQL Server abonnees maak je het script in het Transact-SQL dialect, en de Distribution Agent vertaalt het naar een meer generiek SQL-dialect voordat het wordt toegepast op de abonnee. Om een aangepast creatiescript te specificeren, wijzig je ofwel het bestaande Transact-SQL script of maak je een compleet script dat het DB2 SQL-dialect gebruikt. Als je een DB2-script maakt, gebruik dan de bypass_translation-richtlijn zodat de Distribution Agent het script toepast op de abonnee zonder vertaling.Je kunt scripts om verschillende redenen aanpassen, maar de meest voorkomende reden is het aanpassen van datatype-mappings. Voor meer informatie, zie de sectie "Data Type Mapping Considerations" in dit artikel. Als je het Transact-SQL script aanpast, beperk dan wijzigingen tot datatype-mapping en voeg geen opmerkingen toe. Als je ingrijpendere wijzigingen nodig hebt, maak dan een DB2-script.
Een artikelscript wijzigen en opgeven als een aangepast creatiescript
Nadat de snapshot voor de publicatie is gegenereerd, ga je naar de snapshotmap van de publicatie.
Zoek het
.schbestand met dezelfde naam als het artikel, zoalsMyArticle.sch.Open dit bestand met een Notepad of een andere teksteditor.
Wijzig het bestand en sla het op in een andere map.
Voer
sp_changearticleuit en specificeer het bestandspad en de naam voor de eigenschap creation_script. Zie sp_changearticle (Transact-SQL) voor meer informatie.
Een artikelscript maken en opgeven als een aangepast creatiescript
Maak een artikelscript door gebruik te maken van het Db2 SQL-dialect. Zorg ervoor dat de eerste regel van het bestand bypass_translation is, met niets anders op de regel.
Voer sp_changearticle uit, waarbij u het bestandspad en de naam voor de eigenschap creation_script opgeeft.
Overwegingen voor IBM Db2-abonnees
Naast de overwegingen die in het artikel Non-SQL Server Subscribers worden behandeld, kunt u de volgende aspecten overwegen bij replicatie naar Db2-abonnees:
De gegevens en indexen voor elke gerepliceerde tabel worden toegewezen aan een Db2-tabelruimte. De paginagrootte van een Db2-tabel bepaalt het maximale aantal kolommen en de maximale rijgrootte van de tabellen die tot de tabelruimte behoren. Zorg ervoor dat de tabelruimte die is gekoppeld aan gerepliceerde tabellen, geschikt is op basis van het aantal gerepliceerde kolommen en de maximale rijgrootte van de tabellen.
Publiceer tabellen niet naar Db2-abonnees door transactionele replicatie te gebruiken als één of meer primaire sleutelkolommen in de tabel van het datatype DECIMAL(32-38, 0-38) of NUMERIC(32-38, 0-38) zijn. Transactionele replicatie identificeert rijen door gebruik te maken van de primaire sleutel. Deze methode kan tot storingen leiden omdat deze datatypes worden toegewezen aan VARCHAR(41) bij de abonnee. Je kunt tabellen publiceren met primaire sleutels die deze datatypes gebruiken door snapshotreplicatie te gebruiken.
Als je tabellen wilt maken bij de abonnee, in plaats van replicatie ze te laten maken, gebruik dan de optie voor replicatie-ondersteuning. Zie Een transactioneel abonnement initialiseren zonder momentopname voor meer informatie.
SQL Server staat langere tabelnamen en kolomnamen toe dan Db2:
Als de publicatiedatabase tabellen bevat met namen die langer zijn dan die op de Db2-versie bij de Abonnee, geef dan een alternatieve naam op voor de eigenschap van het destination_table artikel. Zie Een publicatie maken en een artikel definiëren voor meer informatie over het instellen van eigenschappen bij het maken van een publicatie.
Je kunt geen alternatieve kolomnamen opgeven. Zorg ervoor dat gepubliceerde tabellen geen kolomnamen bevatten die langer zijn dan die welke worden ondersteund op de Db2-versie bij de Abonnee.
Mapping van datatypen van SQL Server naar IBM Db2
In de volgende tabel ziet u de gegevenstypetoewijzingen die worden gebruikt wanneer gegevens worden gerepliceerd naar een abonnee die IBM Db2 gebruikt.
| SQL Server-gegevenstype | IBM Db2-gegevenstype |
|---|---|
| bigint | DECIMAAL(19,0) |
| binary(1-254) | CHAR(1-254) VOOR BITDATA |
| binary(255-8000) | VARCHAR(255-8000) VOOR BIT-GEGEVENS |
| 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) | DECIMAAL(1-31, 0-31) |
| decimal(32-38, 0-38) | VARCHAR(41) |
| float(53) | Dubbel |
| float | FLOAT |
| geography | BEELD |
| geometry | BEELD |
| hierarchyid | BEELD |
| image | VARCHAR(0) VOOR BITGEGEVENS* |
| In | INT |
| geld | DECIMAAL(19,4) |
| nchar(1-4000) | VARCHAR(1-4000) |
| ntext | VARCHAR(0)* |
| numeriek(1-31, 0-31) | DECIMAAL(1-31,0-31) |
| numeriek(32-38, 0-38) | VARCHAR(41) |
| nvarchar(1-4000) | VARCHAR(1-4000) |
| nvarchar(max) | VARCHAR(0)* |
| echte | WERKELIJK |
| smalldatetime | TIMESTAMP |
| smallint | SMALLINT |
| kleingeld | DECIMAAL(10,4) |
| sql_variant | N/A |
| sysname | VARCHAR(128) |
| tekst | VARCHAR(0)* |
| tijd(0-7) | VARCHAR(16) |
| tijdstempel | CHAR(8) VOOR BITDATA |
| tinyint | SMALLINT |
| uniqueidentifier | CHAR(38) |
| varbinary(1-8000) | VARCHAR(1-8000) VOOR BIT-GEGEVENS |
| varchar(1-8000) | VARCHAR(1-8000) |
| varbinary(max) | VARCHAR(0) VOOR BITGEGEVENS* |
| varchar(max) | VARCHAR(0)* |
| xml | VARCHAR(0)* |
- Zie de volgende sectie voor meer informatie over toewijzingen naar VARCHAR(0).
Overwegingen bij de toewijzing van gegevenstypen
Houd rekening met de volgende problemen met het toewijzen van gegevenstypen bij het repliceren naar DB2-abonnees:
Bij het mappen van SQL Server char, varchar, binary en varbinary naar respectievelijk Db2 CHAR, VARCHAR,CHAR VOOR BITDATA ENVARCHAR VOOR BIT DATA, STELT REPLICATIE DE LENGTE VAN HET DB2-datatype gelijk aan die van het SQL Server-type.
Deze aanpak maakt het mogelijk om de gegenereerde tabel succesvol te maken bij de abonnee, zolang de DB2-paginagroottebeperking groot genoeg is om de maximale grootte van de rij te accommoderen. Zorg ervoor dat de login die je gebruikt om toegang te krijgen tot de Db2-database machtigingen heeft om tabelruimtes te benaderen van voldoende grootte voor de tabellen die naar Db2 worden gerepliceerd.
DB2 ondersteunt VARCHAR-kolommen tot wel 32 kilobyte (KB); daarom kunnen sommige SQL Server grote objectkolommen op passende wijze worden gekoppeld aan DB2 VARCHAR-kolommen. De OLE DB-provider die replicatie gebruikt voor DB2 ondersteunt echter geen mapping van SQL Server grote objecten naar DB2 grote objecten. Om deze reden worden SQL Server text-, varchar(max)-, ntext- en nvarchar(max)-kolommen toegewezen aan VARCHAR(0) in de gegenereerde scripts voor het maken van tabellen. Je moet de lengtewaarde van 0 veranderen naar een geschikte waarde voordat je het script op de abonnee toepast. Als je de lengte van het datatype niet verandert, geeft DB2 fout 604 wanneer de tabelaanmaak wordt geprobeerd bij de DB2-abonnee (fout 604 geeft aan dat het precisie- of lengteattribuut van een datatype niet geldig is).
Op basis van je kennis van de brontabel die je repliceert, bepaal of het gepast is om een groot SQL Server-object te mappen naar een variabele lengte DB2-item, en specificeer een passende maximale lengte in een aangepast creatiescript. Voor informatie over het specificeren van een aangepaste creatiescript, zie stap 5 in de sectie "Een IBM Db2-abonnee configureren" in dit artikel.
Opmerking
De opgegeven lengte voor het DB2-type, gecombineerd met andere kolomlengtes, mag niet groter zijn dan de maximale rijgrootte op basis van de DB2-tabelruimte waaraan de tabelgegevens zijn toegewezen.
Als er geen geschikte mapping is voor een kolom met een groot object, overweeg dan kolomfiltering op het artikel te gebruiken zodat de kolom niet wordt gerepliceerd. Zie Gepubliceerde gegevens filteren voor meer informatie.
Bij het repliceren van SQL Server nchar en nvarchar naar DB2 CHAR en VARCHAR gebruikt replicatie dezelfde lengtespecificeerder voor het DB2-type als voor het SQL Server-type. De lengte van het datatype kan echter te klein zijn voor de gegenereerde DB2-tabel.
In sommige DB2-omgevingen is een SQL Server-char-dataitem niet beperkt tot tekens van één byte; de lengte van een CHAR- of VARCHAR-item moet rekening houden met deze voorwaarde. Je moet ook rekening houden met het in- en uitwisselen van personages als dat nodig is. Als je tabellen repliceert met nchar- en nvarchar-kolommen , moet je mogelijk een grotere maximale lengte voor het datatype specificeren in een aangepast creatiescript. Voor informatie over het specificeren van een aangepaste creatiescript, zie stap 5 in de sectie "Een IBM Db2-abonnee configureren" in dit artikel.