Utilizzo di più versioni di SQL Server in una topologia di replica
La replica consente di replicare i dati tra versioni diverse di SQL Server. In questo argomento vengono fornite informazioni sui seguenti aspetti:
Versioni di SQL Server supportate
Mapping dei tipi di dati di SQL Server 2008 per le versioni precedenti
Ripristino di un database replicato da una versione precedente
Livello di compatibilità per le pubblicazioni di tipo merge
Per informazioni sulle modalità di replica dei dati in SQL Server Express e SQL Server Compact 3.5 SP1, vedere Replica di dati in SQL Server Express e Replica di dati in SQL Server Compact. Per informazioni sulle funzionalità supportate da ogni versione di SQL Server, vedere Funzionalità supportate dalle edizioni di SQL Server 2008.
Versioni di SQL Server supportate
Sia SQL Server 2000 che SQL Server 2005 possono partecipare alle topologie di replica con SQL Server 2008. Per SQL Server 2000 la versione minima è Service Pack 3 (SP3), mentre per SQL Server 2005 la versione minima è Service Pack 2 (SP2).
Quando si esegue la replica tra versioni diverse di SQL Server, le funzionalità disponibili sono in genere limitate a quelle supportate dalla versione meno recente utilizzata. Se, ad esempio, si aggiorna un server di distribuzione a un'istanza di SQL Server 2008, ma sono presenti un server di pubblicazione che esegue un'istanza di SQL Server 2005 e un Sottoscrittore che esegue un'istanza di SQL Server 2000, si disporrà delle funzionalità generali e di replica di SQL Server 2000.
[!NOTA]
Poiché in SQL Server il formato di archiviazione su disco è lo stesso negli ambienti a 64 bit e a 32 bit, in una topologia di replica possono essere presenti istanze del server eseguite in un ambiente a 32 bit e istanze del server eseguite in un ambiente a 64 bit.
Per tutti i tipi di replica, la versione del server di distribuzione non deve essere precedente a quella del server di pubblicazione. In molti casi l'istanza del server di distribuzione è la stessa di quella del server di pubblicazione.
In caso di replica transazionale, la versione di un Sottoscrittore di una pubblicazione transazionale è limitata a un intervallo di due versioni in base alla versione del server di pubblicazione. Un server di pubblicazione SQL Server 2000, ad esempio, può disporre di Sottoscrittori SQL Server 2008 e un server di pubblicazione SQL Server 2008 può disporre di Sottoscrittori SQL Server 2000.
In caso di replica di tipe merge, è possibile utilizzare qualsiasi versione del Sottoscrittore di una pubblicazione di tipo merge purché non sia successiva a quella del server di pubblicazione. Per ulteriori informazioni sulla compatibilità per le versioni precedenti, vedere la sezione "Livello di compatibilità per le pubblicazioni di tipo merge" di seguito in questo argomento. Per ulteriori informazioni sulle funzionalità di replica supportate nelle diverse versioni di SQL Server, vedere Funzionalità supportate dalle edizioni di SQL Server 2008.
Utilizzo di un server di distribuzione SQL Server 2005 o SQL Server 2008 con un server di pubblicazione che esegue SQL Server 2000
Sia SQL Server 2005 che SQL Server 2008 possono essere utilizzati come server di distribuzione remoto per server di pubblicazione che eseguono SQL Server 2000. In questo scenario, per modificare le proprietà degli agenti, eseguire nel server di distribuzione le stored procedure seguenti, le quali consentono di modificare proprietà introdotte in SQL Server 2005:
Se si dispone di un server di pubblicazione e di un server di distribuzione che eseguono SQL Server 2000, è possibile modificare le credenziali utilizzate dagli agenti per eseguire le connessioni utilizzando sp_changedistpublisher e sp_changesubscriber. Tuttavia, se si aggiorna il server di distribuzione a SQL Server 2008, non sarà possibile utilizzare queste procedure per modificare le credenziali utilizzate nei processi esistenti degli agenti. Le procedure influiscono sui processi degli agenti creati dopo che la procedura è stata chiamata. Per modificare le credenziali dei processi esistenti degli agenti, chiamare una delle quattro procedure elencate in precedenza.
Mapping dei nuovi tipi di dati per le versioni precedenti
In SQL Server 2008 e SQL Server 2005 sono supportati numerosi nuovi tipi di dati. Come illustrato nella tabella seguente, questi nuovi tipi di dati vengono mappati a tipi di dati compatibili nel Sottoscrittore se vengono utilizzate sottoscrizioni push da un server di distribuzione SQL Server 2005 o SQL Server 2008. Se i nuovi tipi di dati vengono replicati in Sottoscrittori che eseguono versioni precedenti di SQL Server, è necessario verificare che il mapping dei tipi di dati venga eseguito in modo corretto:
Il mapping viene eseguito per impostazione predefinita per gli articoli nelle pubblicazioni di tipo merge, ma non per articoli in snapshot o pubblicazioni transazionali. Per le pubblicazioni di tipo merge, il modo in cui i tipi sono mappati è determinato dal livello di compatibilità della pubblicazione. Se ad esempio una colonna è di tipo geography e il livello di compatibilità è 90RTM, il tipo viene mappato a varbinary(max). Se il livello di compatibilità è 80RTM, il tipo viene mappato a image.
Il comportamento del mapping è determinato dal parametro @schema\_option parameter di sp_addarticle e sp_addmergearticle.
Per ulteriori informazioni sull'impostazione delle opzioni di schema, vedere Procedura: Impostazione delle opzioni dello schema (SQL Server Management Studio) e Procedura: Impostazione delle opzioni dello schema (programmazione Transact-SQL della replica).
Tipo di dati di SQL Server 2008 |
Tipo di dati di SQL Server 2005 |
Tipo di dati di SQL Server 2000 |
---|---|---|
Tipo CLR (Common Language Runtime) definito dall'utente (UDT): uguale o inferiore a 8000 byte |
UDT |
image |
UDT: maggiore di 8000 byte1 |
varbinary(max) |
image |
date2, 3 |
nvarchar(10) |
nvarchar(10) |
datetime22, 3 |
nvarchar(27) |
nvarchar(27) |
datetimeoffset2, 3 |
nvarchar(34) |
nvarchar(34) |
Attributo FILESTREAM1, 4 |
varbinary(max) |
Non supportato |
geography e geometry1, 3 |
varbinary(max) |
image |
hierarchyid1, 5 |
varbinary(max) |
image |
nvarchar(max) |
nvarchar(max) |
ntext |
time2, 3 |
nvarchar(16) |
nvarchar(16) |
varchar(max) |
varchar(max) |
text |
varbinary(max) |
varbinary(max) |
image |
xml |
xml |
ntext |
1 I mapping per i tipi UDT, FILESTREAM, geography, geometry e hierarchyid non sono supportati per le pubblicazioni transazionali con le sottoscrizioni aggiornabili. Includere questi tipi solo se tutti i Sottoscrittori dell'aggiornamento eseguono SQL Server 2008 o una versione successiva.
2 La replica non controlla il formato dei dati inseriti nel Sottoscrittore. Di conseguenza l'applicazione deve verificare che i dati inseriti siano del formato corretto per le colonne di tipo date, datetime2, datetimeoffset e time. Questa operazione viene eseguita in genere mediante un vincolo. Se i dati non sono del formato corretto, non sarà possibile eseguire un inserimento nel server di pubblicazione.
3 I Sottoscrittori di SQL Server Compact 3.5 convertono questi tipi dopo che vengono replicati al Sottoscrittore. Per ulteriori informazioni sui mapping dei tipi di dati per SQL Server Compact 3.5, vedere la documentazione di SQL Server Compact 3.5.
Se si esegue il mapping di colonne di tipo geography o geometry a varbinary(max) o image, non è possibile replicare vincoli predefiniti per queste colonne. Le conseguenze sono le seguenti:
Se è già presente un vincolo predefinito nel server di pubblicazione, eliminare il vincolo o specificare che non deve essere replicato. Per specificare che non deve essere replicato, utilizzare l'opzione dello schema dell'articolo per i vincoli predefiniti:
Selezionare il valore False per l'opzione Copia specifiche valori predefiniti. Per ulteriori informazioni, vedere Procedura: Impostazione delle opzioni dello schema (SQL Server Management Studio).
Disabilitare l'opzione dello schema 0x800. Per ulteriori informazioni, vedere Procedura: Impostazione delle opzioni dello schema (programmazione Transact-SQL della replica).
Se si desidera aggiungere un vincolo predefinito nel server di pubblicazione, specificare prima che le modifiche dello schema non devono essere replicate. Per ulteriori informazioni, vedere Procedura: Replica delle modifiche dello schema (SQL Server Management Studio) e Procedura: Replica delle modifiche dello schema (programmazione Transact-SQL della replica).
4 FILESTREAM è un attributo in una colonna varbinary(max). Per informazioni sull'utilizzo di colonne FILESTREAM in tabelle replicate, vedere la sezione "Replica" in Utilizzo di FILESTREAM con altre funzionalità di SQL Server. Le colonne per cui è presente un attributo FILESTREAM non devono essere incluse in pubblicazioni che utilizzano uno snapshot in modalità carattere.
5 Il supporto per colonne di tipo hierarchyid dipende dal tipo di replica e dalle versioni di SQL Server utilizzate. Per ulteriori informazioni, vedere la sezione "Utilizzo di colonne hierarchyid nelle tabelle replicate" in hierarchyid (Transact-SQL). Per la replica di tipo merge, il tipo hierarchyid viene mappato a image quando il livello di compatibilità della pubblicazione è 100RTM e viene utilizzato uno snapshot in modalità carattere.
Replica di tipi di dati XML
Quando si replicano tipi di dati XML in SQL Server Compact 3.5 SP1, la replica di tipo merge ne esegue il mapping in Ntext. I dati XML in SQL Server 2008 includono byte di prefisso per la codifica UTF-16. Questi byte vengono mantenuti quando si esegue la replica di tipo merge da SQL Server a SQL Server Compact 3.5 SP1. I byte di prefisso non vengono riconosciuti da SQL Server Management Studio quando si visualizza la colonna Ntext del database SQL Server Compact 3.5 SP1. Pertanto, vengono visualizzati come caratteri corrotti.
La raccolta di schemi XML di SQL Server 2008 è stata aggiornata. Ciò ha effetto quando si esegue la replica delle colonne XML associate a schemi XML da SQL Server 2008 a SQL Server 2005.
I fusi orari non sono obbligatori per i valori date, time e datetime degli schemi XML in SQL Server 2008. Pertanto, se nella colonna XML del server di pubblicazione di SQL Server 2008 non è specificato alcun fuso orario, la modifica non verrà applicata ai Sottoscrittori di SQL Server 2005, perché SQL Server 2005 richiede la specifica di un fuso orario.
Le informazioni del fuso orario relative ai valori di tipo date, time e datetime degli schemi XML del server di pubblicazione di SQL Server 2008 verranno convertite nel fuso orario UTC-0 in SQL Server 2005, rappresentato dall'indicatore Z.
I tipi date, time e datetime dello schema XML di SQL Server 2008 supportano una maggiore precisione. Pertanto, vengono arrotondati quando si esegue la replica in SQL Server 2005.
Quando si esegue la replica dei valori date o datetime degli schemi XML da SQL Server 2005 a SQL Server 2008, i valori con un anno negativo non verranno applicati in SQL Server 2008 perché non sono supportati in SQL Server 2008.
In queste situazioni, sp_table_validation e i metodi Validate negli agenti di replica possono avere esito negativo. Per ulteriori informazioni, vedere la sezione "Aggiornamento di dati XML tipizzati da SQL Server 2005 a SQL Server 2008" in Dati XML tipizzati confrontati con dati XML non tipizzati.
Pubblicazione di dati compressi
SQL Server 2008 supporta la compressione di riga e di pagina per tabelle e indici. Per informazioni sul supporto della replica per dati compressi, vedere la sezione "Impatto della compressione sulla replica" in Creazione di tabelle e di indici compressi.
Ripristino di un database replicato da una versione precedente
Quando si ripristina un backup di un database replicato da una versione precedente, è possibile mantenere le impostazioni di replica. Se si esegue il ripristino in un server e in un database i cui nomi corrispondono a quelli del server e del database in cui è stato eseguito il backup o se si specifica l'opzione KEEP_REPLICATION, le impostazioni di replica vengono mantenute. Per ulteriori informazioni, vedere RESTORE (Transact-SQL). Dopo il ripristino del database, eseguire sp_vupgrade_replication per aggiornare i dati dello schema e di sistema per il supporto della replica a livello del prodotto corrente.
Sebbene sia possibile mantenere le impostazioni di replica dopo il ripristino da un backup eseguito da una versione precedente, questa operazione viene utilizzata raramente come opzione di aggiornamento. È più comune aggiornare il database replicato nell'ambito di un aggiornamento del prodotto oppure ricreare il database e la configurazione di replica da un set di script.
Livello di compatibilità per le pubblicazioni di tipo merge
Nella replica di tipo merge il livello di compatibilità consente di determinare quali funzionalità possono essere utilizzate dalle pubblicazioni in un determinato database. I valori sono contenuti in un intervallo compreso tra 80RTM (SQL Server 2000 senza Service Pack installati) e 100RTM per SQL Server 2008. Il livello di compatibilità viene specificato in base a uno dei metodi seguenti:
Tramite il parametro @publication\_compatibility\_level di sp_addmergepublication. Per ulteriori informazioni, vedere Procedura: Impostazione del livello di compatibilità per le pubblicazioni di tipo merge (programmazione Transact-SQL della replica).
Nella pagina Tipi di Sottoscrittore di Creazione guidata nuova pubblicazione. Per ulteriori informazioni sulle modalità di esecuzione di questa procedura guidata, vedere Procedura: Creazione di una pubblicazione e definizione di articoli (SQL Server Management Studio).
Nella pagina Generale della finestra di dialogo Proprietà pubblicazione - <Publication>. Per ulteriori informazioni, vedere Procedura: Impostazione del livello di compatibilità per le pubblicazioni di tipo merge (SQL Server Management Studio).
Per le funzionalità seguenti è necessario un livello di compatibilità di 90RTM o superiore:
Record logici. Per ulteriori informazioni, vedere Raggruppamento di modifiche alla righe correlate con record logici.
Opzioni di caricamento nei Sottoscrittori. Per ulteriori informazioni, vedere Ottimizzazione delle prestazioni della replica di tipo merge con gli articoli di solo download.
Partizioni non sovrapposte. Per ulteriori informazioni, vedere Filtri di riga con parametri.
Gestori della logica di business. Per ulteriori informazioni, vedere Esecuzione di logiche di business durante la sincronizzazione di tipo merge.
Modifiche allo schema mediante le istruzioni ALTER <OBJECT>. Per ulteriori informazioni, vedere Modifiche allo schema nei database di pubblicazione.
Sebbene le funzionalità seguenti non dipendano dal livello di compatibilità, per utilizzarle è tuttavia necessario l'agente di merge disponibile in SQL Server 2005 e versioni successive. I Sottoscrittori che eseguono versioni precedenti di SQL Server possono essere utilizzati come se la funzionalità non fosse abilitata.
Partizioni pre-calcolate. Per ulteriori informazioni, vedere Ottimizzazione delle prestazioni dei filtri con parametri con le partizioni pre-calcolate.
Sincronizzazione tramite il Web. Per ulteriori informazioni, vedere Sincronizzazione Web per la replica di tipo merge.
Agenti a fasi parallele (specificando -ParallelUploadDownload per l'agente di merge). Per ulteriori informazioni, vedere Agente merge repliche.
Funzionalità di snapshot per pubblicazioni che utilizzano filtri con parametri. Queste funzionalità consentono di effettuare le seguenti operazioni:
Per un Sottoscrittore richiesta di uno snapshot nel caso in cui non ve ne sia uno disponibile per la relativa partizione.
Per un amministratore pregenerazione e pianificazione della generazione di snapshot.
Recapito di snapshot con parametri tramite FTP.
Per ulteriori informazioni, vedere Snapshot per pubblicazioni di tipo merge con filtri con parametri e Trasferimento di snapshot tramite FTP.
Registrazione di informazioni di cronologia e statistiche a livello di articolo migliorate in Monitoraggio replica. Per ulteriori informazioni, vedere Procedura: Visualizzazione di informazioni ed esecuzione di attività per una sottoscrizione (Monitoraggio replica).
Funzionamento del livello di compatibilità delle pubblicazioni in SQL Server 2008
Di seguito vengono riportati alcuni importanti aspetti relativi al comportamento del livello di compatibilità delle pubblicazioni di cui è consigliabile tenere conto:
Il livello di compatibilità delle pubblicazioni non è collegato al livello di compatibilità dei database.
Se si crea una pubblicazione utilizzando sp_addmergepublication o mediante oggetti RMO (Replication Management Objects), per impostazione predefinita il livello di compatibilità della pubblicazione è impostato su 80RTM. Se si crea una pubblicazione con Creazione guidata nuova pubblicazione, il livello di compatibilità della pubblicazione viene determinato in base alle opzioni selezionate nella pagina Tipi di Sottoscrittore della procedura guidata.
Nelle versioni di SQL Server precedenti a SQL Server 2005 il livello di compatibilità della pubblicazione viene aumentato automaticamente se si abilita una funzionalità per cui è necessario un livello superiore. A partire da SQL Server 2005, è necessario impostare manualmente il livello di compatibilità della pubblicazione su 90RTM o su un valore superiore prima di abilitare funzionalità per cui è necessario tale livello di compatibilità.
È possibile diminuire il livello di compatibilità delle pubblicazioni solo se l'agente snapshot non è stato avviato e se non esistono sottoscrizioni della pubblicazione.
Tutte le pubblicazioni di un database devono avere lo stesso livello di compatibilità. Questo requisito comporta le conseguenze indicate di seguito:
Se un database contiene una pubblicazione con un livello di compatibilità inferiore (ad esempio 80RTM) e si desidera aggiungere allo stesso database un'altra pubblicazione di livello 90RTM o superiore, è necessario aumentare manualmente il livello della prima pubblicazione prima di aggiungere la nuova pubblicazione.
Se un database contiene due o più pubblicazioni con livelli di compatibilità inferiori e si desidera aggiungere allo stesso database un'altra pubblicazione di livello 90RTM o superiore, è necessario eliminare tutte le pubblicazioni esistenti ad eccezione di una, aumentare il livello della pubblicazione rimanente fino a 90RTM o valore superiore, ricreare le pubblicazioni eliminate con il livello 90RTM o superiore e creare la nuova pubblicazione con il livello 90RTM o superiore.
Componenti e livelli di compatibilità necessari per la sincronizzazione Web
In SQL Server 2008 è supportata la sincronizzazione Web per Sottoscrittori che eseguono SQL Server 2005, SQL Server 2008 e SQL Server Compact 3.5 versioni 3.0, 3.1 e 3.5. Nella tabella seguente vengono elencati i livelli di compatibilità della pubblicazione e i componenti server necessari per ogni tipo di Sottoscrittore.
Versione del server di pubblicazione |
Versione del Sottoscrittore |
Livello di compatibilità della pubblicazione necessario |
Componenti necessari sul server IIS |
---|---|---|---|
SQL Server 2008 |
SQL Server 2008 |
100RTM |
Componenti IIS per SQL Server 2008 |
SQL Server 2008 |
SQL Server Compact 3.5 3.0, 3.1 e 3.5 |
90RTM |
Componenti di IIS per SQL Server Compact 3.5 SP1 e per SQL Server 2008 |
SQL Server 2008 |
SQL Server 2005 |
90RTM |
Componenti di IIS per SQL Server 2008 |
SQL Server 2005 |
SQL Server 2005 |
90RTM |
Componenti di IIS per SQL Server 2005 |
SQL Server 2005 |
SQL Server Compact 3.5 3.0, 3.1 e 3.5 |
90RTM |
Componenti IIS per SQL Server Compact 3.5 SP1 e per SQL Server 2005 |
SQL Server 2005 |
SQL Server 2008 |
Non applicabile1 |
Non applicabile1 |
1 Questa configurazione non è supportata poiché la versione del server di pubblicazione deve essere uguale o superiore rispetto alla versione del Sottoscrittore.