Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
SQL Server supporta le sottoscrizioni push a database IBM Db2/AS 400, DB2/MVS e DB2/Universal tramite i provider OLE DB inclusi in Microsoft Host Integration Server.
Configurare un sottoscrittore IBM Db2
Per configurare un sottoscrittore IBM Db2, completare la procedura seguente:
Installare la versione più recente del provider Microsoft OLE DB per DB2 nel server di distribuzione:
Se stai usando SQL Server edizione Enterprise, nella pagina Web SQL Server Downloads, nella sezione Download correlati, seleziona il link all'ultima versione del Microsoft SQL Server Feature Pack. Nella pagina Microsoft SQL Server Feature Pack del sito Web, cerca OLE DB Provider for DB2.
Se stai usando SQL Server Standard Edition, installa l'ultima versione del server Microsoft Host Integration Services (HIS), che include il provider.
Oltre a installare il provider, installa lo strumento di accesso ai dati, che viene utilizzato nella fase successiva. Lo strumento viene installato di default con il download per SQL Server edizione Enterprise. Per ulteriori informazioni sull'installazione e sull'utilizzo dello strumento di accesso ai dati, vedere la documentazione del provider o di HIS.
Creare una stringa di connessione per il Sottoscrittore. Puoi creare la stringa di connessione in qualsiasi editor di testo, ma usa lo strumento di accesso ai dati. Per creare la stringa nello strumento di accesso ai dati:
Seleziona Avvio, Programmi, OLE DB Provider per DB2 e poi Strumento di Accesso Dati.
In Strumento di accesso ai datieseguire la procedura per fornire informazioni sul server DB2. Quando completi lo strumento, crea un collegamento dati universale (UDL) con una stringa di connessione associata. L'UDL non viene usata per replicare, ma la stringa di connessione sì.
Accedere alla stringa di connessione: fare clic con il pulsante destro del mouse sul collegamento UDL nello strumento di accesso ai dati e scegliere Visualizza stringa di connessione.
La stringa di connessione è simile alla seguente (i line break servono per la leggibilità):
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;La maggior parte delle opzioni nella stringa è specifica per il server DB2 che stai configurando, ma dovresti sempre impostare le
Process Binary as Characteropzioni eDerive ParameterssuFalse. Devi fornire un valore per l'opzioneInitial Catalogdi identificare il database degli abbonamenti. Inserisci la stringa di connessione nella Guida Nuovo Abbonamento quando crei l'abbonamento.Creare uno snapshot o una pubblicazione transazionale, abilitarlo per i Sottoscrittori non SQL Server, quindi creare una sottoscrizione push per il Sottoscrittore. Per altre informazioni, vedere Creazione di una sottoscrizione per un Sottoscrittore non SQL Server.
Se necessario, specificare uno script di creazione personalizzato per uno o più articoli. Quando viene pubblicata una tabella, viene creato uno script
CREATE TABLEper la tabella. Per gli abbonati non SQL Server, crei lo script nel dialetto Transact-SQL, e il agente di distribuzione lo traduce in un dialetto SQL più generico prima di applicarlo all'abbonato. Per specificare uno script di creazione personalizzato, modificare lo script di Transact-SQL esistente oppure creare uno script completo che utilizzi il dialetto SQL di DB2. Se crei uno script DB2, usa la direttiva bypass_translation così che il agente di distribuzione applichi lo script all'Abbonato senza traduzione.Puoi modificare script per diversi motivi, ma il motivo più comune è modificare le mappature dei tipi di dati. Per ulteriori informazioni, consulta la sezione "Considerazioni sulla mappatura dei tipi di dati" in questo articolo. Se modifichi lo script Transact-SQL, limita le modifiche al mapping dei tipi di dati e non includere commenti. Se hai bisogno di cambiamenti più sostanziali, crea uno script DB2.
Per modificare lo script di un articolo e fornirlo come script di creazione personalizzato
Dopo che lo snapshot è stato generato per la pubblicazione, vai nella cartella snapshot della pubblicazione.
Individuare il file
.schcon lo stesso nome dell'articolo, ad esempioMyArticle.sch.Apri questo file usando Notepad o un altro editor di testo.
Modificare il file e salvarlo in una directory diversa.
Eseguire
sp_changearticle, specificando il percorso e il nome del file per la proprietà creation_script . Per altre informazioni, vedere sp_changearticle (Transact-SQL).
Per creare lo script di un articolo e fornirlo come script di creazione personalizzato
Crea uno script per articoli usando il dialetto SQL Db2. Verificare che la prima riga del file sia bypass_translatione non contenga altro.
Eseguire sp_changearticle specificando il percorso e il nome del file per la proprietà creation_script.
Considerazioni per i sottoscrittori IBM Db2
Oltre alle considerazioni trattate nell'articolo Non-SQL Server Subscribers, considera le seguenti questioni quando si replica su Db2 Subscribers:
I dati e gli indici per ogni tabella replicata sono assegnati a uno spazio di tabella Db2. La dimensione della pagina di un tablespace Db2 determina il numero massimo di colonne e la dimensione massima di riga delle tabelle che appartengono al tablespace. Verificare che lo spazio tabella associato alle tabelle replicate sia appropriato al numero di colonne replicate e alla dimensione massima delle righe delle tabelle.
Non pubblicare tabelle agli abbonati Db2 usando la replica transazionale se una o più colonne chiave primarie della tabella sono di tipo dati DECIMAL(32-38, 0-38) o NUMERIC(32-38, 0-38). La replica transazionale identifica le righe utilizzando la chiave primaria. Questo metodo può causare guasti perché questi tipi di dati sono mappati su VARCHAR(41) presso l'abbonato. Puoi pubblicare tabelle con chiavi primarie che utilizzano questi tipi di dati usando la replicazione snapshot.
Se vuoi creare tabelle presso l'abbonato, invece di farle creare dalla replica, usa l'opzione solo supporto alla replica. Per altre informazioni, vedere Inizializzazione di una sottoscrizione transazionale senza uno snapshot.
SQL Server consente nomi di tabelle e colonne più lunghi rispetto a Db2:
Se il database di pubblicazione include tabelle con nomi più lunghi di quelli supportati nella versione di Db2 del Sottoscrittore, specificare un nome alternativo per la proprietà dell'articolo destination_table. Per altre informazioni sull'impostazione delle proprietà durante la creazione di una pubblicazione, vedere Creare una pubblicazione e Definire un articolo.
Non puoi specificare nomi alternativi di colonne. Assicurati che le tabelle pubblicate non includano nomi di colonna più lunghi di quelli supportati nella versione di Db2 in uso presso il Sottoscrittore.
Mappatura dei tipi di dati da SQL Server a IBM Db2
Nella tabella seguente vengono illustrati i mapping dei tipi di dati utilizzati quando si esegue la replica dei dati in un sottoscrittore in cui è in esecuzione IBM Db2.
| Tipo di dati di SQL Server | Tipo di dati IBM Db2 |
|---|---|
| bigint | DECIMAL(19,0) |
| binary(1-254) | CHAR(1-254) PER I DATI BIT |
| binary(255-8000) | VARCHAR(255-8000) PER DATI BINARI |
| 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) | DOPPIO |
| float | FLOAT |
| geography | IMMAGINE |
| geometry | IMMAGINE |
| hierarchyid | IMMAGINE |
| Immagine | VARCHAR(0) PER DATI DI BIT* |
| into | INT |
| money | DECIMAL(19,4) |
| nchar(1-4000) | VARCHAR(1-4000) |
| ntext | VARCHAR(0)* |
| numerico(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)* |
| real | REAL |
| smalldatetime | TIMESTAMP |
| smallint | SMALLINT |
| smallmoney | DECIMAL(10,4) |
| sql_variant | N/D |
| sysname | VARCHAR(128) |
| testo | VARCHAR(0)* |
| time(0-7) | VARCHAR(16) |
| timestamp | CHAR(8) PER DATI BINARI |
| tinyint | SMALLINT |
| uniqueidentifier | CHAR(38) |
| varbinary(1-8000) | VARCHAR(1-8000) PER DATI BINARI |
| varchar(1-8000) | VARCHAR(1-8000) |
| varbinary(max) | VARCHAR(0) PER DATI DI BIT* |
| varchar(max) | VARCHAR(0)* |
| xml | VARCHAR(0)* |
- Consultare la sezione successiva per ulteriori informazioni sulle mappature a VARCHAR(0).
Considerazioni sulla mappatura dei tipi di dati
Quando si esegue la replica nei Sottoscrittori DB2, considerare gli aspetti seguenti relativi ai mapping dei tipi di dati:
Quando i tipi SQL Server char, varchar, binary e varbinary vengono mappati rispettivamente ai tipi Db2 CHAR, VARCHAR, CHAR FOR BIT DATA e VARCHAR FOR BIT DATA, la replica imposta la lunghezza del tipo di dati Db2 in modo che sia uguale a quella del tipo SQL Server.
Questo approccio consente di creare con successo la tabella generata dall'Abbonato, purché il vincolo di dimensione della pagina DB2 sia sufficientemente grande da contenere la dimensione massima della riga. Assicurati che il login che usi per accedere al database Db2 abbia permessi per accedere a spazi di tabelle di dimensioni sufficienti per le tabelle da replicare su Db2.
DB2 supporta colonne VARCHAR fino a 32 kilobyte (KB); pertanto, alcune colonne oggetto grandi di SQL Server possono essere correttamente mappate su colonne VARCHAR DB2. Tuttavia, il provider OLE DB utilizzato dalla replica per DB2 non supporta la mappatura di oggetti grandi di SQL Server su oggetti grandi di DB2. Per questo motivo, le colonne di testo SQL Server, varchar(max),ntext e nvarchar(max) sono mappate su VARCHAR(0) negli script create generati. Devi cambiare il valore di lunghezza di 0 in un valore appropriato prima di applicare lo script all'Abbonato. Se non cambi la lunghezza del tipo di dato, DB2 genera l'errore 604 quando si tenta di creare la tabella presso l'abbonato DB2 (l'errore 604 indica che l'attributo precisione o lunghezza di un tipo di dato non è valido).
In base alla tua conoscenza della tabella sorgente che stai replicando, determina se è appropriato mappare un grande oggetto di SQL Server a un elemento DB2 di lunghezza variabile e specifica una lunghezza massima appropriata in uno script di creazione personalizzato. Per informazioni sulla specifica di uno script di creazione personalizzato, vedi il passo 5 nella sezione "Configurare un abbonato IBM Db2" in questo articolo.
Nota
La lunghezza specificata per il tipo DB2, combinata con altre lunghezze di colonna, non può superare la dimensione massima della riga basata sullo spazio della tabella DB2 a cui sono assegnati i dati della tabella.
Se non c'è una mappatura appropriata per una colonna oggetto di grande dimensione, considera di usare il filtraggio a colonne nell'articolo in modo che la colonna non venga replicata. Per altre informazioni, vedere Filtrare i dati pubblicati.
Quando si replicano SQL Server nchar e nvarchar su DB2 CHAR e VARCHAR, la replica utilizza lo stesso specificatore di lunghezza per il tipo DB2 come per il tipo SQL Server. Tuttavia, la lunghezza del tipo di dato potrebbe essere troppo piccola per la tabella DB2 generata.
In alcuni ambienti DB2, un elemento di dati di SQL Server non è limitato a caratteri di un singolo byte; la lunghezza di un elemento CHAR o VARCHAR deve tenere conto di questa condizione. Devi anche tenere conto dei caratteri shift in e shift out, se necessari. Se stai replicando tabelle con colonne nchar e nvarchar , potresti dover specificare una lunghezza massima maggiore per il tipo di dato in uno script di creazione personalizzato. Per informazioni sulla specifica di uno script di creazione personalizzato, vedi il passo 5 nella sezione "Configurare un abbonato IBM Db2" in questo articolo.