Gestione delle colonne IdentityManage Identity Columns

In questo argomento viene descritto come gestire le colonne Identity in SQL Server 2017SQL Server 2017 tramite SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.This topic describes how to manage identity columns in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-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.When Subscriber inserts are replicated back to the Publisher, identity columns must be managed to avoid assignment of the same identity value at both the Subscriber and Publisher. È possibile gestire automaticamente intervalli di valori Identity tramite la replica oppure scegliere di gestirli manualmente.Replication can manage identity ranges automatically or you can choose to manually handle identity range management. Per informazioni sulle opzioni di gestione degli intervalli di valori Identity fornite dalla replica, vedere Replicare colonne Identity.For information about the identity range management options provided by replication, see Replicate Identity Columns.

Contenuto dell'argomentoIn This Topic

Prima di iniziare Before You Begin

Indicazioni Recommendations

  • 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.When publishing a table in more than one publication, you must specify the same identity range management options for both publications. Per altre informazioni, vedere "Pubblicazione di tabelle in più di una pubblicazione" in Pubblicare dati e oggetti di database.For more information, see "Publishing Tables in More Than One Publication" in Publish Data and Database Objects.

  • 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.To create an automatically incrementing number that can be used in multiple tables or that can be called from applications without referencing any table, see Sequence Numbers.

Utilizzo di SQL Server Management Studio Using 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.Specify an identity column management option on the Properties tab of the Article Properties -<Article> dialog box of the New Publication Wizard. Per altre informazioni sull'uso di questa procedura guidata, vedere Creare una pubblicazione.For more information about using this wizard, see Create a Publication. Nella Creazione guidata nuova pubblicazione:In the New Publication Wizard:

  • 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.If you select Merge publication or Transactional publication with updating subscriptions on the Publication Type page, select automatic or manual identity range management (automatic, the default, is recommended). Dopo la pubblicazione della tabella la proprietà non può più essere modificata, mentre è possibile modificare altre proprietà correlate.After the table is published, the property cannot be modified, but other related properties can be modified.

  • Se si selezionano altri tipi di pubblicazioni, è necessario impostare la gestione degli intervalli di valori Identity su manuale.If you select other publication types, identity range management should be set to manual.

    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>.Modify identity ranges and thresholds on the Properties tab of the Article Properties -<Article>, which is available in the Publication Properties - <Publication> dialog box. Per ulteriori informazioni sull'accesso a questa finestra di dialogo, vedere View and Modify Publication Properties.For more information about accessing this dialog box, see View and Modify Publication Properties.

Per specificare un'opzione per la gestione di colonne IdentityTo specify an identity column management option

  1. Se nel server di pubblicazione è in esecuzione una versione di SQL ServerSQL Server precedente a SQL Server 2005SQL Server 2005, nella pagina Tipo di pubblicazione della Creazione guidata nuova pubblicazione selezionare Pubblicazione di tipo merge o Pubblicazione transazionale con sottoscrizioni aggiornabili.If the Publisher is running a version of SQL ServerSQL Server prior to SQL Server 2005SQL Server 2005, on the Publication Type page of the New Publication Wizard, select Merge publication or Transactional publication with updating subscriptions.

  2. Nella pagina Articoli selezionare una tabella con una colonna Identity.On the Articles page, select a table with an identity column.

  3. Fare clic su Proprietà articoloe quindi su Imposta proprietà dell'articolo di tabella evidenziato.Click Article Properties, and then click Set Properties of Highlighted Table Article.

  4. 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 2005SQL Server 2005 o versione successiva) oppure su True o False (per i server di pubblicazione che eseguono una versione di SQL ServerSQL Server precedente a SQL Server 2005SQL Server 2005).On the Properties tab of the Article Properties - <Article> dialog box, in the Identity Range Management section, set the Automatically manage identity ranges property to Automatic or Manual (for Publishers running SQL Server 2005SQL Server 2005 or later), or True or False (for Publishers running a version of SQL ServerSQL Server prior to SQL Server 2005SQL Server 2005).

  5. Se nel passaggio 4 è stato selezionato Automatico o True , immettere i valori per le opzioni nella tabella che segue.If you selected Automatic or True in step 4, enter values for the options in the following table. Per altre informazioni su come usare queste impostazioni, vedere la sezione "Assegnazione degli intervalli di valori Identity" di Replicare colonne Identity.For more information on how these settings are used, see the "Assigning Identity Ranges" section of Replicate Identity Columns.

    OpzioneOption ValoreValue DescrizioneDescription
    Dimensioni intervallo server di pubblicazionePublisher range size Valore intero per le dimensioni dell'intervallo, ad esempio 20000.Integer value for range size (for example, 20000). Vedere la sezione "Assegnazione degli intervalli di valori Identity" di Replicare colonne Identity.See the "Assigning Identity Ranges" section of Replicate Identity Columns.
    Dimensioni intervallo SottoscrittoreSubscriber range size Valore intero per le dimensioni dell'intervallo, ad esempio 10000.Integer value for range size (for example, 10000). Vedere la sezione "Assegnazione degli intervalli di valori Identity" di Replicare colonne Identity.See the "Assigning Identity Ranges" section of Replicate Identity Columns.
    Percentuale soglia intervalloRange threshold percentage Valore intero percentuale per la soglia dell'intervallo, ad esempio 90 è equivalente a 90%.Integer value for percent threshold (for example, 90 is equivalent to 90 percent). Percentuale dei valori Identity totali utilizzati in corrispondenza di un nodo prima dell'assegnazione di un nuovo intervallo di valori Identity.Percent of total identity values used at a node before a new identity range is assigned.



    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 CompactSQL Server Compact o una versione precedente di altre edizioni di SQL Server.Note: This value must be specified, but it is only used by: Subscribers using queued updating subscriptions; and Subscribers to merge publications running SQL Server CompactSQL Server Compact or previous versions of other SQL Server editions. Per altre informazioni, vedere la sezione "Assegnazione degli intervalli di valori Identity" di Replicare colonne Identity.For more information, see the "Assigning Identity Ranges" section of Replicate Identity Columns.
    Valore iniziale intervallo successivoNext range starting value Valore intero.Integer value. Di sola lettura.Read-only. Il valore in corrispondenza del quale inizierà l'intervallo successivo.The value at which the next range will start. Ad esempio, se l'intervallo corrente è 5001-6000, questo valore sarà 6001.For example, if the current range is 5001-6000, this value will be 6001.
    Valore Identity massimoMaximum identity value Valore intero.Integer value. Di sola lettura.Read-only. Il valore maggiore per la colonna Identity.The largest value for the identity column. Determinato dal tipo di dati di base della colonna.Determined by the base data type of the column.
    Incremento valore IdentityIncrement Valore intero.Integer value. Di sola lettura.Read-only. La quantità in base alla quale il numero nella colonna Identity deve aumentare o diminuire per ciascun inserimento: in genere è impostata su 1.The amount by which the number in the identity column should increase or decrease for each insert: typically set to 1.
  6. Fare clic su OK.Click OK.

Per modificare le soglie e gli intervalli di valori Identity dopo la pubblicazione di una tabellaTo modify identity ranges and thresholds after a table is published

  1. Nella pagina Articoli della finestra di dialogo Proprietà pubblicazione - <Pubblicazione> selezionare una tabella con una colonna Identity.On the Articles page of the Publication Properties - <Publication> dialog box, select a table with an identity column.

  2. Fare clic su Proprietà articoloe quindi su Imposta proprietà dell'articolo di tabella evidenziato.Click Article Properties, and then click Set Properties of Highlighted Table Article.

  3. 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.On the Properties tab of the Article Properties - <Article> dialog box, in the Identity Range Management section, enter values for one or more of the following properties: Publisher range size, Subscriber range size, and Range threshold percentage.

  4. Fare clic su OK.Click OK.

  5. Fare clic su OK nella finestra di dialogo Proprietà pubblicazione - <Pubblicazione>.Click OK on the Publication Properties - <Publication> dialog box.

Utilizzo di Transact-SQL Using 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.You can use replication stored procedures to specify identity range management options when an article is created.

Per abilitare la gestione automatica degli intervalli di valori Identity durante la definizione di articoli per una pubblicazione transazionaleTo enable automatic identity range management when defining articles for a transactional publication

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_addarticle.At the Publisher on the publication database, execute 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.If the source table being published has an identity column, specify a value of auto for @identityrangemanagementoption, the range of identity values assigned to the Publisher for @pub_identity_range, the range of identity values assigned to each Subscribers for @identity_range, and the percent of total identity values used before a new identity range is assigned for @threshold. Per altre informazioni sulla definizione degli articoli, vedere Definire un articolo.For more information about defining articles, see Define an Article.

    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.Ensure that the data type of the identity column is large enough to support the total range of identities being assigned to all Subscribers.

Per disabilitare la gestione automatica degli intervalli di valori Identity durante la definizione di articoli per una pubblicazione transazionaleTo disable automatic identity range management when defining articles for a transactional publication

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_addarticle.At the Publisher on the publication database, execute sp_addarticle. Specificare il valore manual per @identityrangemanagementoption.Specify a value of manual for @identityrangemanagementoption. Per altre informazioni sulla definizione degli articoli, vedere Definire un articolo.For more information about defining articles, see Define an Article.

  2. Assegnare intervalli a colonne Identity dell'articolo nel Sottoscrittore per evitare di generare conflitti durante l'aggiornamento dei Sottoscrittori.Assign ranges to identity article columns at the Subscriber to avoid generating conflicts for updating Subscribers. 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.For more information, see the section on assigning ranges for manual identity range management in the topic Replicate Identity Columns.

Per attivare la gestione automatica degli intervalli di valori Identity durante la definizione di articoli per una pubblicazione di tipo mergeTo enable automatic identity range management when defining articles for a merge publication

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_addmergearticle.At the Publisher on the publication database, execute 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.If the source table being published has an identity column, specify a value of auto for @identityrangemanagementoption, the range of identity values assigned to a server subscription for @pub_identity_range, the range of identity values assigned to the Publisher and each client subscription for @identity_range, and the percent of total identity values used before a new identity range is assigned for @threshold. Per altre informazioni sull'assegnazione di nuovi intervalli di valori Identity, vedere "Assegnazione degli intervalli di valori Identity" nell'argomento Replicare colonne Identity.For more information on when new identity ranges are assigned, see Assigning Identity Ranges in the topic Replicate Identity Columns. Per altre informazioni sulla definizione degli articoli, vedere Definire un articolo.For more information about defining articles, see Define an Article.

    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.Ensure that the data type of the identity column is large enough to support the total range of identities being assigned to all Subscribers, particularly for Subscribers with server subscriptions.

Per disabilitare la gestione automatica degli intervalli di valori Identity durante la definizione di articoli per una pubblicazione di tipo mergeTo disable automatic identity range management when defining articles for a merge publication

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_addmergearticle.At the Publisher on the publication database, execute sp_addmergearticle. Specificare uno dei valori seguenti per @identityrangemanagementoption:Specify one of the following values for @identityrangemanagementoption:

    • manual : per aggiornare i Sottoscrittori, gli intervalli di valori Identity devono essere assegnati manualmente.manual - Identity ranges must be assigned manually for updating Subscribers.

    • none : le colonne Identity del server di pubblicazione non verranno definite come tali nel Sottoscrittore.none - Identity columns at the Publisher will not be defined as identity columns at the Subscriber.

      Per altre informazioni sulla definizione degli articoli, vedere Definire un articolo.For more information about defining articles, see Define an Article.

  2. Assegnare intervalli a colonne Identity dell'articolo nel Sottoscrittore per evitare di generare conflitti durante l'aggiornamento dei Sottoscrittori.Assign ranges to identity article columns at the Subscriber to avoid generating conflicts for updating Subscribers.

Per modificare le impostazioni relative alla gestione automatica degli intervalli di valori Identity per un articolo esistente di una pubblicazione snapshot o transazionaleTo change automatic identity range management settings for an existing article in a snapshot or transactional publication

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_helparticle e notare il valore di identityrangemanagementoption nel set di risultati.At the Publisher on the publication database, execute sp_helparticle and note the value of identityrangemanagementoption in the result set. Se questo valore è 0, la gestione automatica degli intervalli di valori Identity non è attivata.If this value is 0, automatic identity range management is not enabled.

  2. Se il valore di identityrangemanagementoption nel set di risultati è 1, modificare le impostazioni nel modo seguente:If the value of identityrangemanagementoption in the result set is 1, change the settings as follows:

    • Per modificare gli intervalli di valori Identity assegnati, eseguire sp_changearticle nel database di pubblicazione del server di pubblicazione.To change the assigned identity ranges, execute sp_changearticle at the Publisher on the publication database. Specificare il valore identity_range o pub_identity_range per @property e il nuovo valore dell'intervallo per @value.Specify a value of identity_range or pub_identity_range for @property and the new range value for @value.

    • Per modificare la soglia di assegnazione di nuovi intervalli, eseguire sp_changearticle nel database di pubblicazione del server di pubblicazione.To change the threshold at which new ranges are assigned, execute sp_changearticle at the Publisher on the publication database. Specificare il valore threshold per @property e il nuovo valore soglia per @value.Specify a value of threshold for @property and the new threshold value for @value.

Per modificare le impostazioni relative alla gestione automatica degli intervalli di valori Identity per un articolo esistente di una pubblicazione di tipo mergeTo change automatic identity range management settings for an existing article in a merge publication

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_helpmergearticle e notare il valore di identity_support nel set di risultati.At the Publisher on the publication database, execute sp_helpmergearticle and note the value of identity_support in the result set. Se questo valore è 0, la gestione automatica degli intervalli di valori Identity non è attivata.If this value is 0, automatic identity range management is not enabled.

  2. Se il valore di identity_support nel set di risultati è 1, modificare le impostazioni nel modo seguente:If the value of identity_support in the result set is 1, change the settings as follows:

    • Per modificare gli intervalli di valori Identity assegnati, eseguire sp_changemergearticle nel database di pubblicazione del server di pubblicazione.To change the assigned identity ranges, execute sp_changemergearticle at the Publisher on the publication database. Specificare il valore identity_range o pub_identity_range per @property e il nuovo valore dell'intervallo per @value.Specify a value of identity_range or pub_identity_range for @property and the new range value for @value.

    • Per modificare la soglia di assegnazione di nuovi intervalli, eseguire sp_changemergearticle nel database di pubblicazione del server di pubblicazione.To change the threshold at which new ranges are assigned, execute sp_changemergearticle at the Publisher on the publication database. Specificare il valore threshold per @property e il nuovo valore soglia per @value.Specify a value of threshold for @property and the new threshold value for @value. Per altre informazioni sull'assegnazione di nuovi intervalli di valori Identity, vedere "Assegnazione degli intervalli di valori Identity" nell'argomento Replicare colonne Identity.For more information on when new identity ranges are assigned, see Assigning Identity Ranges in the topic Replicate Identity Columns.

    • Per disabilitare la gestione automatica degli intervalli di valori Identity, eseguire sp_changemergearticle nel database di pubblicazione del server di pubblicazione.To disable automatic identity range management, execute sp_changemergearticle at the Publisher on the publication database. Specificare il valore identityrangemanagementoption per @property e manual o none per @value.Specify a value of identityrangemanagementoption for @property and either manual or none for @value.

Vedere ancheSee Also

Replica transazionale peer-to-peer Peer-to-Peer Transactional Replication
Replication System Stored Procedures Concepts Replication System Stored Procedures Concepts
Replicare colonne Identity Replicate Identity Columns