Gestire le colonne Identity
Si applica a: SQL Server e Istanza gestita di SQL di Azure
Questo argomento descrive come gestire colonne di identità in SQL Server usando SQL Server Management Studio o Transact-SQL. Quando gli inserimenti del Sottoscrittore vengono replicati nel server di pubblicazione, è necessario gestire le colonne Identity in modo da evitare l'assegnazione dello stesso valore Identity sia al Sottoscrittore che al server di pubblicazione. È possibile gestire automaticamente intervalli di valori Identity tramite la replica oppure scegliere di gestirli manualmente. Per informazioni sulle opzioni di gestione degli intervalli di valori Identity fornite dalla replica, vedere Replicare colonne Identity.
Contenuto dell'articolo
Prima di iniziare:
Per gestire le colonne Identity, utilizzando:
Prima di iniziare
Consigli
Quando si pubblica una tabella in più di una pubblicazione, è necessario specificare le stesse opzioni di gestione degli intervalli di valori Identity per entrambi le pubblicazioni. Per altre informazioni, vedere "Pubblicazione di tabelle in più di una pubblicazione" in Pubblicare dati e oggetti di database.
Per creare un numero a incremento automatico da usare in più tabelle o da chiamare dalle applicazioni senza fare riferimento ad alcuna tabella, vedere Numeri di sequenza.
Utilizzo di SQL Server Management Studio
Specificare un'opzione per la gestione delle colonne Identity nella scheda Proprietà della finestra di dialogo Proprietà articolo -<Articolo> della Creazione guidata nuova pubblicazione. Per altre informazioni sull'uso di questa procedura guidata, vedere Creare una pubblicazione. Nella Creazione guidata nuova pubblicazione:
Se si seleziona Pubblicazione di tipo merge o Pubblicazione transazionale con sottoscrizioni aggiornabili nella pagina Tipo di pubblicazione , specificare se si desidera utilizzare la gestione automatica o manuale di intervalli di valori Identity. È consigliabile la gestione automatica, che è l'opzione predefinita. Dopo la pubblicazione della tabella la proprietà non può più essere modificata, mentre è possibile modificare altre proprietà correlate.
Se si selezionano altri tipi di pubblicazioni, è necessario impostare la gestione degli intervalli di valori Identity su manuale.
Modificare le soglie e gli intervalli di valori Identity nella scheda Proprietà della finestra di dialogo Proprietà articolo -<Articolo>, disponibile nella finestra di dialogo Proprietà pubblicazione - <Pubblicazione>. Per ulteriori informazioni sull'accesso a questa finestra di dialogo, vedere View and Modify Publication Properties.
Per specificare un'opzione per la gestione di colonne Identity
Se nel server di pubblicazione è in esecuzione una versione di SQL Server precedente a SQL Server 2005 (9.x), nella pagina Tipo di pubblicazione della Creazione guidata nuova pubblicazione selezionare Pubblicazione di tipo merge o Pubblicazione transazionale con sottoscrizioni aggiornabili.
Nella pagina Articoli selezionare una tabella con una colonna Identity.
Fare clic su Proprietà articoloe quindi su Imposta proprietà dell'articolo di tabella evidenziato.
Nella scheda Proprietà della finestra di dialogo Proprietà articolo - <Articolo>, nella sezione Gestione intervalli di valori Identity, impostare la proprietà Gestisci automaticamente gli intervalli di valori Identity su Automatico o Manuale (per i server di pubblicazione che eseguono SQL Server 2005 (9.x) o versione successiva) oppure su True o False (per i server di pubblicazione che eseguono una versione di SQL Server precedente a SQL Server 2005 (9.x)).
Se nel passaggio 4 è stato selezionato Automatico o True , immettere i valori per le opzioni nella tabella che segue. Per altre informazioni su come usare queste impostazioni, vedere la sezione "Assegnazione degli intervalli di valori Identity" di Replicare colonne Identity.
Opzione valore Descrizione Dimensioni intervallo server di pubblicazione Valore intero per le dimensioni dell'intervallo, ad esempio 20000. Vedere la sezione "Assegnazione degli intervalli di valori Identity" di Replicare colonne Identity. Dimensioni intervallo Sottoscrittore Valore intero per le dimensioni dell'intervallo, ad esempio 10000. Vedere la sezione "Assegnazione degli intervalli di valori Identity" di Replicare colonne Identity. Percentuale soglia intervallo Valore intero percentuale per la soglia dell'intervallo, ad esempio 90 è equivalente a 90%. Percentuale dei valori Identity totali utilizzati in corrispondenza di un nodo prima dell'assegnazione di un nuovo intervallo di valori Identity.
Nota: questo valore deve essere specificato, ma viene usato solo dai Sottoscrittori che usano sottoscrizioni ad aggiornamento in coda e dai Sottoscrittori per pubblicazioni di tipo merge che eseguono SQL Server Compact o una versione precedente di altre edizioni di SQL Server. Per altre informazioni, vedere la sezione "Assegnazione degli intervalli di valori Identity" di Replicare colonne Identity.Valore iniziale intervallo successivo Valore intero. Sola lettura. Il valore in corrispondenza del quale inizierà l'intervallo successivo. Ad esempio, se l'intervallo corrente è 5001-6000, questo valore sarà 6001. Valore Identity massimo Valore intero. Sola lettura. Il valore maggiore per la colonna Identity. Determinato dal tipo di dati di base della colonna. Incremento valore Identity Valore intero. Sola lettura. La quantità in base alla quale il numero nella colonna Identity deve aumentare o diminuire per ciascun inserimento: in genere è impostata su 1. Seleziona OK.
Per modificare le soglie e gli intervalli di valori Identity dopo la pubblicazione di una tabella
Nella pagina Articoli della finestra di dialogo Proprietà pubblicazione - <Pubblicazione> selezionare una tabella con una colonna Identity.
Fare clic su Proprietà articoloe quindi su Imposta proprietà dell'articolo di tabella evidenziato.
Nella scheda Proprietà della finestra di dialogo Proprietà articoli - <Articolo>, nella sezione Gestione intervalli di valori Identity, immettere i valori per una o più delle proprietà seguenti: Dimensioni intervallo server di pubblicazione, Dimensioni intervallo Sottoscrittore e Percentuale soglia intervallo.
Seleziona OK.
Fare clic su OK nella finestra di dialogo Proprietà pubblicazione - <Pubblicazione>.
Utilizzo di Transact-SQL
È possibile utilizzare stored procedure di replica per specificare le opzioni di gestione degli intervalli di valori Identity durante la creazione di un articolo.
Per abilitare la gestione automatica degli intervalli di valori Identity durante la definizione di articoli per una pubblicazione transazionale
Nel database di pubblicazione del server di pubblicazione eseguire sp_addarticle. Se la tabella di origine da pubblicare include una colonna Identity, specificare il valore auto per @identityrangemanagementoption, l'intervallo di valori Identity assegnati al server di pubblicazione per @pub_identity_range, l'intervallo di valori Identity assegnato a ciascun Sottoscrittore per @identity_rangee la percentuale dei valori Identity totali utilizzata prima dell'assegnazione di un nuovo intervallo di valori Identity per @threshold. Per altre informazioni sulla definizione degli articoli, vedere Definire un articolo.
Nota
Assicurarsi che il tipo di dati della colonna Identity sia sufficiente per supportare l'intervallo totale di valori Identity da assegnare a tutti i Sottoscrittori.
Per disabilitare la gestione automatica degli intervalli di valori Identity durante la definizione di articoli per una pubblicazione transazionale
Nel database di pubblicazione del server di pubblicazione eseguire sp_addarticle. Specificare il valore manual per @identityrangemanagementoption. Per altre informazioni sulla definizione degli articoli, vedere Definire un articolo.
Assegnare intervalli a colonne Identity dell'articolo nel Sottoscrittore per evitare di generare conflitti durante l'aggiornamento dei Sottoscrittori. Per altre informazioni, vedere la sezione relativa all'assegnazione di intervalli per la gestione manuale degli intervalli di valori Identity nell'argomento Replicare colonne Identity.
Per attivare la gestione automatica degli intervalli di valori Identity durante la definizione di articoli per una pubblicazione di tipo merge
Nel database di pubblicazione del server di pubblicazione eseguire sp_addmergearticle. Se la tabella di origine da pubblicare include una colonna Identity, specificare il valore auto per @identityrangemanagementoption, l'intervallo di valori Identity assegnati a una sottoscrizione server per @pub_identity_range, l'intervallo di valori Identity assegnato al server di pubblicazione e a ogni sottoscrizione client per @identity_rangee la percentuale dei valori Identity totali utilizzata prima dell'assegnazione di un nuovo intervallo di valori Identity per @threshold. Per altre informazioni sull'assegnazione di nuovi intervalli di valori Identity, vedere "Assegnazione degli intervalli di valori Identity" nell'argomento Replicare colonne Identity. Per altre informazioni sulla definizione degli articoli, vedere Definire un articolo.
Nota
Assicurarsi che il tipo di dati della colonna Identity sia sufficiente per supportare l'intervallo totale di valori Identity da assegnare a tutti i Sottoscrittori, in particolare ai Sottoscrittori con sottoscrizioni server.
Per disabilitare la gestione automatica degli intervalli di valori Identity durante la definizione di articoli per una pubblicazione di tipo merge
Nel database di pubblicazione del server di pubblicazione eseguire sp_addmergearticle. Specificare uno dei valori seguenti per @identityrangemanagementoption:
manual : per aggiornare i Sottoscrittori, gli intervalli di valori Identity devono essere assegnati manualmente.
none : le colonne Identity del server di pubblicazione non verranno definite come tali nel Sottoscrittore.
Per altre informazioni sulla definizione degli articoli, vedere Definire un articolo.
Assegnare intervalli a colonne Identity dell'articolo nel Sottoscrittore per evitare di generare conflitti durante l'aggiornamento dei Sottoscrittori.
Per modificare le impostazioni relative alla gestione automatica degli intervalli di valori Identity per un articolo esistente di una pubblicazione snapshot o transazionale
Nel database di pubblicazione del server di pubblicazione eseguire sp_helparticle e notare il valore di identityrangemanagementoption nel set di risultati. Se questo valore è 0, la gestione automatica degli intervalli di valori Identity non è attivata.
Se il valore di identityrangemanagementoption nel set di risultati è 1, modificare le impostazioni nel modo seguente:
Per modificare gli intervalli di valori Identity assegnati, eseguire sp_changearticle nel database di pubblicazione del server di pubblicazione. Specificare il valore identity_range o pub_identity_range per @property e il nuovo valore dell'intervallo per @value.
Per modificare la soglia di assegnazione di nuovi intervalli, eseguire sp_changearticle nel database di pubblicazione del server di pubblicazione. Specificare il valore threshold per @property e il nuovo valore soglia per @value.
Per modificare le impostazioni relative alla gestione automatica degli intervalli di valori Identity per un articolo esistente di una pubblicazione di tipo merge
Nel database di pubblicazione del server di pubblicazione eseguire sp_helpmergearticle e notare il valore di identity_support nel set di risultati. Se questo valore è 0, la gestione automatica degli intervalli di valori Identity non è attivata.
Se il valore di identity_support nel set di risultati è 1, modificare le impostazioni nel modo seguente:
Per modificare gli intervalli di valori Identity assegnati, eseguire sp_changemergearticle nel database di pubblicazione del server di pubblicazione. Specificare il valore identity_range o pub_identity_range per @property e il nuovo valore dell'intervallo per @value.
Per modificare la soglia di assegnazione di nuovi intervalli, eseguire sp_changemergearticle nel database di pubblicazione del server di pubblicazione. Specificare il valore threshold per @property e il nuovo valore soglia per @value. Per altre informazioni sull'assegnazione di nuovi intervalli di valori Identity, vedere "Assegnazione degli intervalli di valori Identity" nell'argomento Replicare colonne Identity.
Per disabilitare la gestione automatica degli intervalli di valori Identity, eseguire sp_changemergearticle nel database di pubblicazione del server di pubblicazione. Specificare il valore identityrangemanagementoption per @property e manual o none per @value.