Předplatitelé IBM Db2

platí pro:SQL Server

SQL Server podporuje odesílaná předplatná IBM Db2/AS 400, DB2/MVS a DB2/Universal Database prostřednictvím zprostředkovatelů OLE DB, kteříž jsou součástí serveru Microsoft Host Integration Server.

Konfigurace předplatitele IBM Db2

Chcete-li nakonfigurovat předplatitele IBM Db2, postupujte takto:

  1. Nainstalujte na distributora nejnovější verzi zprostředkovatele Microsoft OLE DB pro DB2:

    • Pokud používáte SQL Server edice Enterprise, na stránce SQL Server Downloads v sekci Související stahování vyberte odkaz na nejnovější verzi Microsoft SQL Server Feature Pack. Na webové stránce Microsoft SQL Server Feature Pack vyhledejte OLE DB Provider for DB2.

    • Pokud používáte SQL Server Standard Edition, nainstalujte nejnovější verzi serveru Microsoft Host Integration Services (HIS), která zahrnuje i poskytovatele.

    Kromě instalace poskytovatele nainstalujte nástroj Data Access Tool, který se použije v dalším kroku. Nástroj je ve výchozím nastavení nainstalován se stahováním pro SQL Server edice Enterprise. Další informace o instalaci a používání nástroje Pro přístup k datům najdete v dokumentaci poskytovatele nebo v dokumentaci HIS.

  2. Vytvořte připojovací řetězec pro odběratele. připojovací řetězec můžete vytvořit v jakémkoli textovém editoru, ale použijte nástroj Data Access Tool. Chcete-li vytvořit řetězec v nástroji pro přístup k datům:

    1. Vyberte Start, Programy, OLE DB Provider pro DB2 a poté Nástroj pro přístup k datům.

    2. V nástroji Pro přístup k datům zadejte informace o serveru DB2 podle kroků. Když nástroj dokončíte, vytvoří univerzální datové propojení (UDL) s přidruženým připojovacím řetězcem. UDL se replikací nepoužívá, ale připojovací řetězec ano.

    3. Přístup k připojovacímu řetězci: Klikněte pravým tlačítkem myši na UDL v nástroji Pro přístup k datům a vyberte Zobrazit připojovací řetězec.

      připojovací řetězec je podobný následujícímu (zalomení řádků slouží pro čitelnost):

    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;  
    

    Většina možností v řetězci je specifická pro server DB2, který konfigurujete, ale možnosti Process Binary as Character a Derive Parameters byste měli vždy nastavit na False. Musíte zadat hodnotu u možnosti Initial Catalog, aby bylo možné identifikovat databázi předplatného. Při vytváření předplatného zadejte připojovací řetězec v Průvodci novým předplatným.

  3. Vytvořte snímek nebo transakční publikaci, povolte ji pro předplatitele jiného než SQL Serveru a pak vytvořte nabízené předplatné pro odběratele. Další informace najdete v tématu Vytvoření předplatného pro předplatitele jiného než SQL Serveru.

  4. Volitelně můžete zadat vlastní skript pro vytvoření jednoho nebo více článků. Při publikování CREATE TABLE tabulky se pro tuto tabulku vytvoří skript. Pro ne-SQL Server předplatitele vytvoříte skript v Transact-SQL dialektu a Distribution Agent jej přeloží do obecnějšího SQL dialektu, než jej aplikuje u odběratele. Pro určení vlastního skriptu pro tvorbu buď upravte existující Transact-SQL skript, nebo vytvořte kompletní skript používající dialekt SQL DB2. Pokud vytvoříte DB2 skript, použijte bypass_translation direktivu, aby Distribution Agent aplikoval skript na odběratele bez překladu.

    Skripty můžete upravovat z různých důvodů, ale nejčastějším je měnit mapování datových typů. Pro více informací viz sekce "Úvahy o mapování datových typů" v tomto článku. Pokud upravíte skript Transact-SQL, omezte změny pouze na změny mapování datových typů a nepřidávejte žádné komentáře. Pokud potřebujete zásadnější změny, vytvořte si DB2 skript.

    Upravit skript článku a dodat ho jako vlastní skript pro vytváření

    1. Po vygenerování snapshotu pro publikaci přejděte do složky snapshot pro publikaci.

    2. .sch Vyhledejte soubor se stejným názvem jako článek, například MyArticle.sch.

    3. Otevřete tento soubor pomocí Notepadu nebo jiného textového editoru.

    4. Upravte soubor a uložte ho do jiného adresáře.

    5. Spusťte sp_changearticle a zadejte cestu k souboru a název pro vlastnost creation_script. Další informace najdete v tématu sp_changearticle (Transact-SQL).

    Vytvoření skriptu článku a jeho použití jako vlastního skriptu pro tvorbu

    1. Vytvořte skript článku pomocí SQL dialektu Db2. Ujistěte se, že první řádek souboru je bypass_translation a nic jiného.

    2. Spusťte sp_changearticle a zadejte cestu k souboru a název vlastnosti creation_script .

Důležité informace o předplatitelích IBM Db2

Kromě úvah uvedených v článku Non-SQL Server Subscribers zvažte při replikaci na Db2 Subscribers následující otázky:

  • Data a indexy pro každou replikovanou tabulku jsou přiřazeny do Db2 tabulkového prostoru. Velikost stránky v Db2 tabulkovém prostoru určuje maximální počet sloupců a maximální velikost řádku tabulek patřících do tohoto prostoru. Zajistěte, aby byl prostor tabulky přidružený k replikovaným tabulkám vhodný na základě počtu replikovaných sloupců a maximální velikosti řádků tabulek.

  • Nezveřejňujte tabulky pro Db2 předplatitele pomocí transakční replikace, pokud je jeden nebo více sloupců primárního klíče v tabulce datového typu DECIMAL(32-38, 0-38) nebo NUMERIC (32-38, 0-38). Transakční replikace identifikuje řádky pomocí primárního klíče. Tato metoda může vést k selhání, protože tyto datové typy jsou mapovány na VARCHAR(41) u odběratele. Tabulky s primárními klíči, které tyto datové typy používají, můžete publikovat pomocí snapshot replikace.

  • Pokud chcete vytvářet tabulky přímo na Subscriberu, místo aby je vytvářela replikace, použijte možnost pouze podpory replikace. Další informace naleznete v tématu Inicializace transakčního předplatného bez snímku.

  • SQL Server umožňuje delší názvy tabulek a sloupců než Db2:

    • Pokud databáze publikací obsahuje tabulky s názvy delšími, než jaké podporuje verze Db2 ve Subscriber, zadejte alternativní název pro vlastnost destination_table článku. Další informace o nastavení vlastností při vytváření publikace naleznete v tématu Vytvoření publikace a definování článku.

    • Nemůžeš zadat alternativní názvy sloupců. Ujistěte se, že publikované tabulky neobsahují názvy sloupců delší než ty, které jsou podporovány ve verzi Db2 u odběratele.

Mapování datových typů ze SQL Server na IBM Db2

Následující tabulka ukazuje mapování datových typů, která se používají při replikaci dat do odběratele s IBM Db2.

Datový typ SQL Serveru Datový typ IBM Db2
bigint DECIMAL(19,0)
binary(1-254) CHAR(1–254) PRO BITOVÁ DATA
binary(255-8000) VARCHAR(255-8000) PRO DATOVÝ TYP BIT
bit SMALLINT
char(1-254) ZNAK(1–254)
char(255-8000) VARCHAR(255-8000)
date DATE
datetime ČASOVÁ ZNAČKA
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) DVOJITÝ
float FLOAT
geography OBRÁZEK
geometry OBRÁZEK
hierarchyid Obrázek
image VARCHAR(0) PRO BITOVÁ DATA*
Do INT
peníze DESETINNÉ ČÍSLO(19;4)
nchar(1-4000) VARCHAR(1-4000)
ntext VARCHAR(0)*
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)*
skutečné SKUTEČNÝ
smalldatetime ČASOVÁ ZNAČKA
smallint SMALLINT
málo peněz DECIMAL(10;4)
sql_variant N/A
sysname VARCHAR(128)
text VARCHAR(0)*
time(0-7) VARCHAR(16)
časová značka CHAR(8) PRO BITOVÁ DATA
tinyint SMALLINT
uniqueidentifier ZNAK(38)
varbinary(1-8000) VARCHAR(1-8000) PRO BINÁRNÍ DATA
varchar(1-8000) VARCHAR(1-8000)
varbinary(max) VARCHAR(0) PRO BITOVÁ DATA*
varchar(max) VARCHAR(0)*
xml VARCHAR(0)*
  • Další informace o mapování na VARCHAR(0) najdete v další části.

Úvahy o mapování datových typů

Při replikaci na předplatitele DB2 zvažte následující problémy s mapováním datových typů:

  • Při mapování typů SQL Server char, varchar, binary a varbinary na typy Db2 CHAR, VARCHAR, CHAR FOR BIT DATA a VARCHAR FOR BIT DATA replikace nastaví délku datového typu Db2 tak, aby byla stejná jako délka datového typu SQL Server.

    Tento přístup umožňuje úspěšně vytvořit generovanou tabulku na straně odběratele, pokud je velikost stránky v DB2 dostatečně velká, aby pojmula maximální velikost řádku. Ujistěte se, že přihlašovací údaje, které používáte k přístupu k databázi Db2, mají oprávnění k přístupu k tabulkám dostatečné velikosti pro tabulky, které se replikují do Db2.

  • DB2 podporuje sloupce VARCHAR až do velikosti 32 kilobajtů (KB); proto lze některé velké objektové sloupce SQL Server vhodně mapovat na sloupce DB2 VARCHAR. Nicméně poskytovatel OLE DB, který replikace používá pro DB2, nepodporuje mapování velkých objektů SQL Server na velké objekty DB2. Z tohoto důvodu jsou sloupce SQL Server text, varchar(max),ntext a nvarchar(max) mapovány na VARCHAR(0) ve generovaných skriptech pro vytváření. Před aplikací skriptu na předplatitele musíte změnit hodnotu délky 0 na odpovídající hodnotu. Pokud nezměníte délku datového typu, DB2 při pokusu o vytvoření tabulky u DB2 Subscriber zobrazí chybu 604 (chyba 604 znamená, že atribut přesnosti nebo délky datového typu není platný).

    Na základě znalosti zdrojové tabulky, kterou replikujete, určete, zda je vhodné namapovat velký objekt SQL Server na proměnnou délku položky DB2, a určete vhodnou maximální délku v vlastním skriptu pro tvorbu. Pro informace o specifikaci vlastního skriptu pro tvorbu viz krok 5 v sekci "Konfigurace předplatitele IBM Db2" v tomto článku.

    Poznámka:

    Specifikovaná délka pro typ DB2, v kombinaci s dalšími délkami sloupců, nesmí překročit maximální velikost řádku založenou na prostoru tabulky DB2, ke kterému jsou data tabulky přiřazena.

    Pokud neexistuje vhodné mapování pro velký sloupec objektu, zvažte použití filtrování sloupců na článku, aby se sloupec nereplikoval. Další informace najdete v tématu Filtrování publikovaných dat.

  • Při replikaci SQL Server nchar a nvarchar do DB2 CHAR a VARCHAR používá replikace stejnou délku specifikátoru pro typ DB2 jako pro typ SQL Server. Délka datového typu však může být pro generovanou tabulku DB2 příliš malá.

    V některých DB2 prostředích není datová položka SQL Server s charem omezena pouze na znaky o velikosti jednoho bajtu; délka položky CHAR nebo VARCHAR musí tuto podmínku zohlednit. Musíte také vzít v úvahu znaky shift in a shift out, pokud jsou potřeba. Pokud replikujete tabulky s nchar a nvarchar sloupci, možná budete muset v vlastním skriptu pro tvorbu zadat větší maximální délku datového typu. Pro informace o specifikaci vlastního skriptu pro tvorbu viz krok 5 v sekci "Konfigurace předplatitele IBM Db2" v tomto článku.