Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Program SQL Server obsługuje wypychane subskrypcje do IBM Db2/AS 400, DB2/MVS i DB2/Universal Database za pośrednictwem dostawców OLE DB, które są dołączone do Microsoft Host Integration Server.
Konfigurowanie subskrybenta IBM Db2
Aby skonfigurować subskrybenta IBM Db2, wykonaj następujące kroki:
Zainstaluj najnowszą wersję dostawcy MICROSOFT OLE DB dla bazy danych DB2 w dystrybutorze:
Jeśli korzystasz z SQL Server Enterprise Edition, na stronie Pobrania SQL Server, w sekcji Powiązane Pobrania, wybierz link do najnowszej wersji Microsoft SQL Server Feature Pack. Na stronie Microsoft SQL Server Feature Pack wyszukaj OLE DB Provider for DB2.
Jeśli używasz SQL Server Standard Edition, zainstaluj najnowszą wersję serwera Microsoft Host Integration Services (HIS), która zawiera także dostawcę.
Oprócz instalacji operatora, zainstaluj narzędzie do dostępu do danych, które jest używane w kolejnym kroku. Narzędzie jest domyślnie zainstalowane wraz z pobraniem SQL Server Enterprise Edition. Aby uzyskać więcej informacji na temat instalowania i używania narzędzia Data Access Tool, zobacz dokumentację dostawcy lub dokumentację HIS.
Utwórz parametry połączenia dla subskrybenta. Możesz utworzyć parametry połączenia w dowolnym edytorze tekstu, ale użyj narzędzia Data Access Tool. Aby utworzyć ciąg w narzędziu Data Access Tool:
Wybierz Start, Programy, Dostawca OLE DB dla DB2, a następnie Narzędzie do dostępu do danych.
W narzędziu dostępu do danych wykonaj kroki, aby podać informacje o serwerze DB2. Po zakończeniu pracy z narzędziem narzędzie tworzy uniwersalne łącze danych (UDL) z powiązanymi parametrami połączenia. UDL nie jest używany przez replikację, ale parametr połączenia już tak.
Uzyskaj dostęp do parametrów połączenia: kliknij prawym przyciskiem myszy pozycję UDL w narzędziu dostępu do danych i wybierz pozycję Wyświetl parametry połączenia.
Parametry połączenia są podobne do następujących (podziały wierszy zostały dodane dla czytelności):
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;Większość opcji w tym ciągu zależy od serwera DB2, który konfigurujesz, ale zawsze powinieneś ustawić opcje
Process Binary as CharacteriDerive ParametersnaFalse. Musisz podać wartośćInitial Catalogopcji identyfikacji bazy subskrypcyjnej. Wprowadź parametry połączenia w Kreatorze nowej subskrypcji podczas tworzenia subskrypcji.Utwórz migawkę lub publikację transakcyjną, włącz ją dla subskrybentów innych niż SQL Server, a następnie utwórz subskrypcję wypychaną dla subskrybenta. Aby uzyskać więcej informacji, zobacz Tworzenie subskrypcji dla subskrybenta programu innego niż SQL Server.
Opcjonalnie określ niestandardowy skrypt tworzenia dla co najmniej jednego artykułu. Po opublikowaniu
CREATE TABLEtabeli zostanie utworzony skrypt dla tej tabeli. Dla subskrybentów innych niż SQL Server tworzysz skrypt w dialekcie Transact-SQL, a Agent dystrybucji tłumaczy go na bardziej ogólny dialekt SQL przed zastosowaniem go u subskrybenta. Aby określić niestandardowy skrypt tworzący, albo zmodyfikuj istniejący skrypt Transact-SQL, albo stwórz kompletny skrypt wykorzystujący dialekt SQL DB2. Jeśli tworzysz skrypt DB2, użyj dyrektywy bypass_translation, aby Distribution Agent zastosował skrypt do Subscribera bez tłumaczenia.Skrypty można modyfikować z różnych powodów, ale najczęstszym jest zmiana mapowania typów danych. Aby uzyskać więcej informacji, zobacz sekcję „Zagadnienia dotyczące mapowania typów danych” w tym artykule. Jeśli modyfikujesz skrypt Transact-SQL, ograniczaj zmiany w mapowaniu typów danych i nie dodawaj żadnych komentarzy. Jeśli potrzebujesz bardziej istotnych zmian, stwórz skrypt DB2.
Aby zmodyfikować skrypt artykułu i podać go jako niestandardowy skrypt tworzenia
Po wygenerowaniu snapshota dla publikacji przejdź do folderu snapshot dla publikacji.
.schZnajdź plik o tej samej nazwie co artykuł, na przykładMyArticle.sch.Otwórz ten plik, używając Notatnika lub innego edytora tekstu.
Zmodyfikuj plik i zapisz go w innym katalogu.
Wykonaj
sp_changearticlepolecenie, podając ścieżkę pliku i nazwę właściwości dla creation_script. Aby uzyskać więcej informacji, zobacz sp_changearticle (Transact-SQL).
Aby utworzyć skrypt artykułu i udzielić go jako niestandardowy skrypt tworzenia
Stwórz skrypt artykułu, używając języka SQL Db2. Upewnij się, że pierwszy wiersz pliku to bypass_translation, a jego jedyną zawartością jest ten tekst.
Wykonaj sp_changearticle, określając ścieżkę pliku i nazwę właściwości creation_script .
Zagadnienia dotyczące subskrybentów IBM Db2
Oprócz rozważań omówionych w artykule Non-SQL Server Subscribers, rozważ następujące kwestie podczas replikacji do subskrybentów Db2:
Dane i indeksy dla każdej replikowanej tabeli są przypisane do przestrzeni tabelowej Db2. Rozmiar strony przestrzeni tabelowej Db2 kontroluje maksymalną liczbę kolumn oraz maksymalny rozmiar wiersza tabel należących do tej przestrzeni. Upewnij się, że przestrzeń tabel skojarzona z replikowanymi tabelami jest odpowiednia na podstawie liczby replikowanych kolumn i maksymalnego rozmiaru wierszy tabel.
Nie publikuj tabel dla subskrybentów Db2 za pomocą replikacji transakcyjnej, jeśli jedna lub więcej głównych kolumn klucza w tabeli ma typ danych DECIMAL(32-38, 0-38) lub NUMERIC(32-38, 0-38). Replikacja transakcyjna identyfikuje wiersze za pomocą klucza głównego. Ta metoda może skutkować awariami, ponieważ te typy danych są mapowane na VARCHAR(41) u abonenta. Możesz publikować tabele z kluczami głównymi, które wykorzystują te typy danych, korzystając z replikacji snapshotów.
Jeśli chcesz tworzyć tabele na Subskrybencie, zamiast pozwolić, aby replikacja je utworzyła, użyj opcji tylko obsługa replikacji. Aby uzyskać więcej informacji, zobacz Inicjowanie subskrypcji transakcyjnej bez migawki.
SQL Server pozwala na dłuższe nazwy tabel i kolumn niż Db2:
Jeśli baza publikacji zawiera tabele o nazwach dłuższych niż te obsługiwane w wersji Db2 w Subscriber, należy określić alternatywną nazwę dla właściwości destination_table artykułu. Aby uzyskać więcej informacji na temat ustawiania właściwości podczas tworzenia publikacji, zobacz Tworzenie publikacji i Definiowanie artykułu.
Nie możesz określić alternatywnych nazw kolumn. Upewnij się, że opublikowane tabele nie zawierają nazw kolumn dłuższych niż te obsługiwane w wersji Db2 na stronie Subskrybera.
Mapowanie typów danych z SQL Server do IBM Db2
W poniższej tabeli przedstawiono mapowania typów danych używane podczas replikacji danych do subskrybenta z uruchomioną usługą IBM Db2.
| Typ danych programu SQL Server | Typ danych IBM Db2 |
|---|---|
| bigint | DECIMAL(19,0) |
| binary(1–254) | CHAR(1–254) DLA DANYCH BITOWYCH |
| binary(255-8000) | VARCHAR(255-8000) DLA DANYCH BITOWYCH |
| 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) |
| dziesiętne (1–31, 0–31) | DECIMAL(1–31, 0–31) |
| DECIMAL (32-38, 0-38) | VARCHAR(41) |
| Float(53) | Podwójny |
| float | FLOAT |
| geography | OBRAZ |
| geometry | OBRAZ |
| hierarchyid | OBRAZ |
| image | VARCHAR(0) DLA DANYCH BITOWYCH* |
| Do | INT |
| pieniędzy | DECIMAL(19,4) |
| nchar(1-4000) | VARCHAR(1-4000) |
| ntext | VARCHAR(0)* |
| numeryczne(1–31, 0–31) | DZIESIĘTNE (1–31,0–31) |
| numeryczne (32-38, 0-38) | VARCHAR(41) |
| nvarchar(1-4000) | VARCHAR(1-4000) |
| nvarchar(max) | VARCHAR(0)* |
| prawdziwy | PRAWDZIWY |
| smalldatetime | TIMESTAMP |
| smallint | SMALLINT |
| małe pieniądze | DECIMAL(10,4) |
| sql_variant | N/A |
| sysname | VARCHAR(128) |
| tekst | VARCHAR(0)* |
| time(0-7) | VARCHAR(16) |
| Znacznik czasu | CHAR(8) DLA DANYCH BITOWYCH |
| tinyint | SMALLINT |
| uniqueidentifier | CHAR(38) |
| varbinary(1-8000) | VARCHAR(1-8000) DLA DANYCH TYPU BIT |
| varchar(1-8000) | VARCHAR(1-8000) |
| varbinary(max) | VARCHAR(0) DLA DANYCH BITOWYCH* |
| varchar(max) | VARCHAR(0)* |
| xml | VARCHAR(0)* |
- Zobacz następną sekcję, aby uzyskać więcej informacji na temat mapowań na VARCHAR(0).
Rozważania dotyczące mapowania typów danych
Podczas replikacji do subskrybentów DB2 należy wziąć pod uwagę następujące problemy z mapowaniem typu danych:
Podczas mapowania typów SQL Server char, varchar, binary i varbinary odpowiednio na typy Db2 CHAR, VARCHAR, CHAR FOR BIT DATA i VARCHAR FOR BIT DATA replikacja ustawia długość typu danych Db2 na taką samą jak długość odpowiedniego typu SQL Server.
Takie podejście umożliwia pomyślne utworzenie wygenerowanej tabeli u subskrybenta, pod warunkiem że ograniczenie rozmiaru strony w DB2 jest na tyle duże, aby pomieścić maksymalny rozmiar wiersza. Upewnij się, że login używany do uzyskiwania dostępu do bazy danych Db2 ma uprawnienia dostępu do obszarów tabel o rozmiarze wystarczającym dla tabel, które są replikowane do Db2.
DB2 obsługuje kolumny VARCHAR o rozmiarze nawet 32 kilobajtów (KB); dlatego niektóre duże kolumny obiektowe SQL Server można odpowiednio mapować na kolumny DB2 VARCHAR. Jednak dostawca OLE DB, którego używa replikacja dla DB2, nie obsługuje mapowania dużych obiektów SQL Server na duże obiekty DB2. Z tego powodu kolumny SQL Server text, varchar(max),ntext i nvarchar(max) są mapowane na VARCHAR(0) w wygenerowanych skryptach tworzenia. Przed zastosowaniem skryptu do Subskrybenta musisz zmienić wartość długości 0 na odpowiednią. Jeśli nie zmienisz długości typu danych, DB2 wywoła błąd 604 przy próbie tworzenia tabeli na subskrybentze DB2 (błąd 604 wskazuje, że atrybut precyzji lub długości danego typu danych nie jest poprawny).
Na podstawie swojej wiedzy o tabeli źródłowej, którą replikujesz, zdecyduj, czy odpowiednie jest mapowanie dużego obiektu SQL Server na element DB2 o zmiennej długości i określ odpowiednią maksymalną długość w niestandardowym skrypcie tworzenia. Aby uzyskać informacje o określaniu niestandardowego skryptu tworzenia, zobacz krok 5 w sekcji "Konfiguracja subskrybenta IBM Db2" w tym artykule.
Uwaga / Notatka
Określona długość dla typu DB2, w połączeniu z innymi długościami kolumn, nie może przekroczyć maksymalnego rozmiaru wiersza opartego na przestrzeni tabeli DB2, do której przypisane są dane tabeli.
Jeśli nie ma odpowiedniego mapowania dla dużej kolumny obiektu, rozważ użycie filtrowania kolumn w artykule, aby kolumna nie była replikowana. Aby uzyskać więcej informacji, zobacz Filtrowanie opublikowanych danych.
Podczas replikowania typów SQL Server nchar i nvarchar do typów DB2 CHAR i VARCHAR replikacja używa tego samego specyfikatora długości dla typu DB2 jak dla typu SQL Server. Jednak długość typu danych może być zbyt mała dla wygenerowanej tabeli DB2.
W niektórych środowiskach DB2 element danych typu char w SQL Server nie jest ograniczony do znaków jednobajtowych; długość elementu CHAR lub VARCHAR musi uwzględniać ten fakt. Musisz też uwzględnić znaki shift in i shift out, jeśli są potrzebne. Jeśli replikujesz tabele z kolumnami nchar i nvarchar , może być konieczne określenie większej maksymalnej długości dla typu danych w niestandardowym skrypcie tworzenia. Aby uzyskać informacje o określaniu niestandardowego skryptu tworzenia, zobacz krok 5 w sekcji "Konfiguracja subskrybenta IBM Db2" w tym artykule.