Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de 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 u SQL Server Enterprise Edition gebruikt, klikt u op de webpagina DOWNLOADS van SQL Server in de sectie Gerelateerde downloads op de koppeling naar de nieuwste versie van het Microsoft SQL Server Feature Pack. Zoek op de webpagina van Microsoft SQL Server Feature Pack naar Microsoft OLE DB-provider voor DB2.
Als u SQL Server Standard Edition gebruikt, installeert u de nieuwste versie van de Microsoft Host Integration Services-server (HIS), die de provider bevat.
Naast het installeren van de provider raden we u aan het Data Access-hulpprogramma te installeren, dat in de volgende stap wordt gebruikt (deze 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. De verbindingsreeks kan worden gemaakt in elke teksteditor, maar u wordt aangeraden het hulpprogramma Voor gegevenstoegang te gebruiken. Om de tekenreeks in de Data Access Tool te maken:
Klik op Start, Programma's, Microsoft OLE DB-provider voor DB2 en vervolgens op Data Access Tool.
Volg in het hulpprogramma voor gegevenstoegang de stappen om informatie over de DB2-server op te geven. Wanneer u het hulpprogramma voltooit, wordt er een UDL (Universal Data Link) gemaakt met een bijbehorende verbindingsreeks (de UDL wordt niet daadwerkelijk 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 connection string lijkt op het volgende (regelafbrekingen zijn bedoeld voor de 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 u configureert, maar de
Process Binary as CharacterenDerive Parametersopties dienen altijd te worden ingesteld opFalse. Er is een waarde vereist voor deInitial Catalogoptie om de abonnementsdatabase te identificeren. De verbindingsreeks wordt ingevoerd in de wizard Nieuw abonnement wanneer u het abonnement maakt.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 wordt het script gemaakt in het Transact-SQL dialect en wordt het vervolgens vertaald naar een algemeen SQL-dialect door de distributieagent voordat het wordt toegepast bij de abonnee. Als u een aangepast script voor het maken wilt opgeven, wijzigt u het bestaande Transact-SQL script of maakt u een volledig script dat gebruikmaakt van het DB2 SQL-dialect; als er een DB2-script wordt gemaakt, gebruikt u de bypass_translation instructie zodat de distributieagent het script op de abonnee zonder vertaling toepast.Scripts kunnen om een aantal redenen worden gewijzigd, maar de meest voorkomende reden is het wijzigen van toewijzingen voor gegevenstypen. Zie voor meer informatie het gedeelte 'Overwegingen voor toewijzing van gegevenstypen' in dit onderwerp. Als u het Transact-SQL script wijzigt, moeten wijzigingen worden beperkt tot wijzigingen in de toewijzing van gegevenstypen (en mag het script geen opmerkingen bevatten). Als er grotere wijzigingen nodig zijn, maakt u een DB2-script.
Een artikelscript wijzigen en opgeven als een aangepast creatiescript
Nadat de momentopname voor de publicatie is gegenereerd, gaat u naar de map met momentopnamen voor de publicatie.
Zoek het
.schbestand met dezelfde naam als het artikel, zoalsMyArticle.sch.Open dit bestand met Kladblok 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 met behulp 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 onderwerp Niet-SQL Server-abonnees worden behandeld, moet u rekening houden met de volgende problemen bij het repliceren naar DB2-abonnees:
De gegevens en indexen voor elke gerepliceerde tabel worden toegewezen aan een DB2-tabelruimte. De paginagrootte van een DB2-tabelruimte bepaalt het maximum aantal kolommen en de maximale rijgrootte van de tabellen die behoren tot de tabelruimte. 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 met transactionele replicatie als een of meer primaire-sleutelkolommen in de tabel het gegevenstype DECIMAL(32-38, 0-38) of NUMERIEK(32-38, 0-38) hebben. Transactionele replicatie identificeert rijen met behulp van de primaire sleutel; Dit kan leiden tot fouten omdat deze gegevenstypen zijn toegewezen aan VARCHAR(41) bij de abonnee. Tabellen met primaire sleutels die gebruikmaken van deze gegevenstypen kunnen worden gepubliceerd met behulp van momentopnamereplicatie.
Als u tabellen bij de abonnee vooraf wilt aanmaken in plaats van dat replicatie ze aanmaakt, gebruikt u de optie alleen replicatieondersteuning. 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 de namen die worden ondersteund in de DB2-versie van de abonnee, geeft u een alternatieve naam op voor de eigenschap 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.
Het is niet mogelijk om alternatieve kolomnamen op te geven. U moet ervoor zorgen dat gepubliceerde tabellen geen kolomnamen bevatten die langer zijn dan die worden ondersteund in de DB2-versie bij de abonnee.
Gegevenstypen toewijzen van SQL Server aan 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 voor toewijzing van gegevenstypen
Houd rekening met de volgende problemen met het toewijzen van gegevenstypen bij het repliceren naar DB2-abonnees:
Bij het toewijzen van SQL Server char, varchar, binary en varbinary aan DB2 CHAR, VARCHAR, CHAR FOR BIT DATA en VARCHAR FOR BIT DATA, wordt bij replicatie de lengte van het DB2-gegevenstype ingesteld op hetzelfde als dat van het SQL Server-type.
Hierdoor kan de gegenereerde tabel worden gemaakt bij de abonnee, zolang de beperking van de grootte van de DB2-pagina groot genoeg is om de maximale grootte van de rij te accommoderen. Zorg ervoor dat de aanmelding die wordt gebruikt voor toegang tot de DB2-database machtigingen heeft voor toegang tot tabelruimten van een voldoende grootte voor de tabellen die worden gerepliceerd naar DB2.
DB2 kan VARCHAR-kolommen ondersteunen die zo groot zijn als 32 kilobytes (KB); Daarom is het mogelijk dat sommige grote SQL Server-objectkolommen op de juiste wijze kunnen worden toegewezen aan DB2 VARCHAR-kolommen. De OLE DB-provider die replicatie gebruikt voor DB2 biedt echter geen ondersteuning voor het toewijzen van grote SQL Server-objecten aan grote DB2-objecten. Daarom worden de kolommen SQL Server-tekst, varchar(max), ntext en nvarchar(max) toegewezen aan VARCHAR(0) in de gegenereerde createscripts. De lengtewaarde van 0 moet worden gewijzigd in een geschikte waarde voordat u het script toepast op de abonnee. Als de lengte van het gegevenstype niet wordt gewijzigd, veroorzaakt DB2 fout 604 wanneer de tabel wordt gemaakt bij de DB2-abonnee (fout 604 geeft aan dat het precisie- of lengtekenmerk van een gegevenstype ongeldig is).
Op basis van uw kennis van de brontabel die u repliceert, moet u bepalen of het geschikt is om een groot SQL Server-object toe te wijzen aan een DB2-object met variabele lengte en een geschikte maximumlengte op te geven in een aangepast script. Zie stap 5 in de sectie 'Een IBM Db2-subscriptie configureren' in dit onderwerp voor meer informatie over het opgeven van een aangepast script voor het aanmaken.
Opmerking
De opgegeven lengte voor het DB2-type, in combinatie met andere kolomlengten, mag niet groter zijn dan de maximale rijgrootte op basis van de DB2-tabelruimte waaraan de tabelgegevens zijn toegewezen.
Als er geen geschikte toewijzing is voor een grote objectkolom, kunt u overwegen om kolomfiltering op het artikel te gebruiken, zodat de kolom niet gerepliceerd wordt. Zie Gepubliceerde gegevens filteren voor meer informatie.
Bij het repliceren van SQL Server nchar en nvarchar naar DB2 CHAR en VARCHAR, gebruikt replicatie dezelfde lengteaanduiding voor het DB2-type als voor het SQL Server-type. De lengte van het gegevenstype kan echter te klein zijn voor de gegenereerde DB2-tabel.
In sommige DB2-omgevingen is een gegevensitem met SQL Server-tekens niet beperkt tot tekens met één byte; de lengte van een CHAR- of VARCHAR-item moet hierbij rekening houden. U moet ook rekening houden met het in- en uitschakelen van tekens als ze nodig zijn. Als u tabellen repliceert met nchar en nvarchar-kolommen, moet u mogelijk een grotere maximale lengte opgeven voor het gegevenstype in een aangepast aanmaakschema. Zie stap 5 in de sectie 'IBM Db2-abonnee configureren' in dit onderwerp voor meer informatie over het opgeven van een aangepast aanmaaks script.