Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
SQL Server stöder push-prenumerationer till IBM Db2/AS 400, DB2/MVS och DB2/Universal Database via OLE DB-leverantörer som ingår i Microsoft Host Integration Server.
Konfigurera en IBM Db2-abonnent
Följ dessa steg för att konfigurera en IBM Db2-prenumerant:
Installera den senaste versionen av Microsoft OLE DB-providern för DB2 på distributören:
Om du använder SQL Server Enterprise Edition, välj länken till den senaste versionen av Microsoft SQL Server Feature Pack på sidan SQL Server Downloads, i avsnittet Relaterade nedladdningar. På Microsoft SQL Server Feature Pack-webbsidan, sök efter OLE DB Provider för DB2.
Om du använder SQL Server Standard Edition, installera den senaste versionen av Microsoft Host Integration Services (HIS)-servern, som inkluderar leverantören.
Förutom att installera leverantören, installera Data Access Tool, som används i nästa steg. Verktyget installeras som standard med nedladdningen för SQL Server Enterprise Edition. Mer information om hur du installerar och använder dataåtkomstverktyget finns i providerdokumentationen eller HIS-dokumentationen.
Skapa en anslutningssträng för prenumeranten. Du kan skapa reťazec pripojenia i vilken textredigerare som helst, men använd Data Access Tool. Så här skapar du strängen i dataåtkomstverktyget:
Välj Start, Programs, OLE DB Provider för DB2, och sedan Data Access Tool.
I dataåtkomstverktyget följer du stegen för att ange information om DB2-servern. När du slutför verktyget skapar det en universell datalänk (UDL) med en tillhörande reťazec pripojenia. UDL används inte för replikering, men anslutningssträngen gör det.
Öppna anslutningssträngen: högerklicka på UDL i dataåtkomstverktyget och välj Visa anslutningssträng.
reťazec pripojenia liknar följande (radbrytningar är för läsbarhet):
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 flesta alternativen i strängen är specifika för den DB2-server du konfigurerar, men du bör alltid ställa in och-alternativen
Process Binary as CharacterDerive ParameterstillFalse. Du behöver ange ett värde förInitial Catalogalternativet att identifiera prenumerationsdatabasen. Ange reťazec pripojenia i New Subscription Wizard när du skapar prenumerationen.Skapa en ögonblicksbild eller transaktionspublikation, aktivera den för icke-SQL Server-prenumeranter och skapa sedan en push-prenumeration för prenumeranten. Mer information finns i Skapa en prenumeration för en icke-SQL Server-prenumerant.
Du kan också ange ett anpassat skapandeskript för en eller flera artiklar. När en tabell publiceras skapas ett
CREATE TABLEskript för den tabellen. För prenumeranter som inte SQL Server skapar du skriptet på Transact-SQL-dialekten, och Distribution Agent översätter det till en mer generell SQL-dialekt innan det appliceras på prenumeranten. För att specificera ett eget skapandeskript, modifiera antingen det befintliga Transact-SQL-skriptet eller skapa ett komplett skript som använder DB2 SQL-dialekten. Om du skapar ett DB2-skript, använd bypass_translation-direktivet så att Distribution Agent applicerar skriptet på prenumeranten utan översättning.Du kan ändra skript av flera skäl, men den vanligaste anledningen är att ändra datatypmappningar. Mer information finns i avsnittet "Överväganden för mappning av datatyper" i den här artikeln. Om du ändrar Transact-SQL-skriptet, begränsa ändringarna till datatypmappningsändringar och inkludera inga kommentarer. Om du behöver mer omfattande ändringar, skapa ett DB2-skript.
Ändra ett artikelskript och ange det som ett anpassat skapandeskript
Efter att snapshoten har genererats för publikationen, gå till snapshot-mappen för publikationen.
.schLeta upp filen med samma namn som artikeln, till exempelMyArticle.sch.Öppna denna fil med Anteckningsblock eller en annan textredigerare.
Ändra filen och spara den i en annan katalog.
Kör
sp_changearticleoch ange filsökvägen och namnet för creation_script. Mer information finns i sp_changearticle (Transact-SQL).
Skapa ett artikelskript och ange det som ett anpassat skapandeskript
Skapa ett artikelskript genom att använda Db2 SQL-dialekten. Kontrollera att den första raden i filen är bypass_translation, utan något annat på raden.
Kör sp_changearticle och ange filsökvägen och namnet på egenskapen creation_script .
Överväganden för IBM Db2-prenumeranter
Utöver de överväganden som tas upp i artikeln Non-SQL Server Subscribers, överväg följande problem vid replikering till Db2-abonnenter:
Data och index för varje replikerad tabell tilldelas ett Db2-tabellutrymme. Sidstorleken på ett Db2-tabellutrymme styr det maximala antalet kolumner och den maximala radstorleken på de tabeller som tillhör tabellrymden. Kontrollera att tabellområdet som är associerat med replikerade tabeller är lämpligt baserat på antalet replikerade kolumner och den maximala radstorleken för tabellerna.
Publicera inte tabeller till Db2-prenumeranter genom transaktionell replikering om en eller flera primärnyckelkolumner i tabellen är av datatyp DECIMAL(32-38, 0-38) eller NUMERIC(32-38, 0-38). Transaktionell replikering identifierar rader genom att använda primärnyckeln. Denna metod kan leda till fel eftersom dessa datatyper mappas till VARCHAR(41) hos prenumeranten. Du kan publicera tabeller med primärnycklar som använder dessa datatyper genom att använda snapshot-replikering.
Om du vill skapa tabeller hos Prenumeranten, istället för att replikera dem, använd alternativet för endast replikeringsstöd. Mer information finns i Initiera en transaktionsprenumeration utan en ögonblicksbild.
SQL Server tillåter längre tabellnamn och kolumnnamn än Db2:
Om publikationsdatabasen innehåller tabeller med längre namn än de som stöds på Db2-versionen hos Prenumeranten, ange ett alternativt namn för egenskapen destination_table artikel. Mer information om hur du anger egenskaper när du skapar en publikation finns i Skapa en publikation och Definiera en artikel.
Du kan inte ange alternativa kolumnnamn. Se till att publicerade tabeller inte innehåller kolumnnamn längre än de som stöds i Db2-versionen hos Prenumeranten.
Mappning av datatyper från SQL Server till IBM Db2
I följande tabell visas de datatypsmappningar som används när data replikeras till en prenumerant som kör IBM Db2.
| SQL Server-datatyp | IBM Db2-datatyp |
|---|---|
| bigint | DECIMAL(19,0) |
| binary(1-254) | CHAR(1–254) FÖR BITDATA |
| binary(255-8000) | VARCHAR(255-8000) FÖR 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) | Dubbel |
| float | FLOAT |
| geography | AVBILDNING |
| geometry | AVBILDNING |
| hierarchyid | AVBILDNING |
| image | VARCHAR(0) FÖR BIT-DATA* |
| in i | INT |
| pengar | DECIMAL(19,4) |
| nchar(1-4000) | VARCHAR(1-4000) |
| ntext | VARCHAR(0)* |
| numeriskt(1-31, 0-31) | DECIMAL(1-31,0-31) |
| numeriskt(32-38, 0-38) | VARCHAR(41) |
| nvarchar(1-4000) | VARCHAR(1-4000) |
| nvarchar(max) | VARCHAR(0)* |
| riktiga | Äkta |
| smalldatetime | TIMESTAMP |
| smallint | SMALLINT |
| småpengar | DECIMAL(10,4) |
| sql_variant | N/A |
| sysname | VARCHAR(128) |
| text | VARCHAR(0)* |
| time(0-7) | VARCHAR(16) |
| Tidsstämpel | CHAR(8) för bitdata |
| tinyint | SMALLINT |
| uniqueidentifier | CHAR(38) |
| varbinary(1-8000) | VARCHAR(1-8000) FÖR BITDATA |
| varchar(1-8000) | VARCHAR(1-8000) |
| varbinary(max) | VARCHAR(0) FÖR BIT-DATA* |
| varchar(max) | VARCHAR(0)* |
| xml | VARCHAR(0)* |
- Mer information om mappningar till VARCHAR(0) finns i nästa avsnitt.
Överväganden kring datatypsmappning
Överväg följande problem med datatypsmappning när du replikerar till DB2-prenumeranter:
När SQL Server char, varchar, binär och varbinary mappas till Db2 CHAR, VARCHAR,CHAR FÖR BITDATA OCHVARCHAR FÖR BITDATA, sätter replikering längden på DB2-datatypen till densamma som för SQL Server-typen.
Denna metod gör det möjligt att skapa den genererade tabellen framgångsrikt hos abonnenten, så länge DB2:s sidstorleksbegränsning är tillräckligt stor för att rymma radens maximala storlek. Se till att inloggningen du använder för att komma åt Db2-databasen har behörigheter att komma åt tabellutrymmen av tillräcklig storlek för att de tabeller som replikeras till Db2.
DB2 stöder VARCHAR-kolumner så stora som 32 kilobyte (KB); därför kan vissa SQL Server-kolumner för stora objekt mappas lämpligt till DB2 VARCHAR-kolumner. Dock stöder OLE DB-leverantören som replikering använder för DB2 inte mappning av stora SQL Server-objekt till stora DB2-objekt. Av denna anledning mappas SQL Server-kolumnerna text, varchar(max), ntext och nvarchar(max) till VARCHAR(0) i de genererade create-skripten. Du måste ändra längdvärdet 0 till ett lämpligt värde innan du applicerar skriptet på prenumeranten. Om du inte ändrar datatypens längd ger DB2 fel 604 när tabellskapandet görs hos DB2-abonnenten (fel 604 indikerar att precisions- eller längdattributet för en datatyp inte är giltigt).
Baserat på din kunskap om källkoden som du replikerar, avgör om det är lämpligt att mappa ett stort SQL Server-objekt till ett variabelt långt DB2-objekt och ange en lämplig maximal längd i ett eget skapandeskript. För information om att specificera ett anpassat skapandeskript, se steg 5 i avsnittet "Konfigurera en IBM Db2-abonnent" i denna artikel.
Anmärkning
Den angivna längden för DB2-typen, när den kombineras med andra kolumnlängder, får inte överstiga den maximala radstorleken baserat på det DB2-tabellutrymme som tabelldata är tilldelad.
Om det inte finns någon lämplig mappning för en kolumn med stort objekt, överväg att använda kolumnfiltrering på artikeln så att kolumnen inte replikeras. Mer information finns i Filtrera publicerade data.
Vid replikering av SQL Server nchar och nvarchar till DB2 CHAR och VARCHAR använder replikering samma längdspecificerare för DB2-typen som för SQL Server-typen. Dock kan datatypslängden vara för liten för den genererade DB2-tabellen.
I vissa DB2-miljöer är en SQL Server-char-databit inte begränsad till enbytestecken; längden på ett CHAR- eller VARCHAR-objekt måste ta hänsyn till detta villkor. Du måste också ta hänsyn till att du kan byta in och ut karaktärer om det behövs. Om du replikerar tabeller med nchar- och nvarchar-kolumner kan du behöva specificera en större maximal längd för datatypen i ett anpassat skapandeskript. För information om att specificera ett anpassat skapandeskript, se steg 5 i avsnittet "Konfigurera en IBM Db2-abonnent" i denna artikel.