sp_repladdcolumn (Transact-SQL)

Aggiunge una colonna a un articolo di tabella esistente che è stato pubblicato. È possibile aggiungere la nuova colonna in tutti i server di pubblicazione che pubblicano la tabella specificata oppure solo in una pubblicazione specifica della tabella. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione.

ms189464.note(it-it,SQL.90).gifImportante:
Questa stored procedure è osboleta e viene supportata solo per motivi di compatibilità con le versioni precedenti. È consigliabile utilizzarla solo con server di pubblicazione Microsoft SQL Server 2000 e Sottoscrittori di ripubblicazione SQL Server 2000.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

sp_repladdcolumn [ @source_object = ] 'source_object', [ @column = ] 'column' ]
    [ , [ @typetext = ] 'typetext' ]
    [ , [ @publication_to_add = ] 'publication_to_add' ]
    [ , [ @from_agent = ] from_agent ]
    [ , [ @schema_change_script = ] 'schema_change_script' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]

Argomenti

  • [ @source_object=] 'source_object'
    Nome dell'articolo di tabella che contiene la colonna da aggiungere. source_object è di tipo nvarchar(358) e non prevede alcun valore predefinito.
  • [ @column=] 'column'
    Nome della colonna della tabella da aggiungere per la replica. column è di tipo sysname e non prevede alcun valore predefinito.
  • [ @typetext=] 'typetext'
    Definizione della colonna da aggiungere. typetext è di tipo nvarchar(3000) e non prevede alcun valore predefinito. Se ad esempio si desidera aggiungere la colonna order_filled che è un campo a carattere singolo (non NULL) il cui valore predefinito è N, order_filled verrà utilizzato come parametro column e la definizione della colonna, ovvero char(1) NOT NULL CONSTRAINT constraint_name DEFAULT 'N', verrà utilizzata come valore del parametro typetext.
  • [ @publication_to_add=] 'publication_to_add'
    Nome della pubblicazione in cui si desidera aggiungere la nuova colonna. publication_to_add è di tipo nvarchar(4000) e il valore predefinito è ALL. Se è ALL, la colonna viene aggiunta in tutte le pubblicazioni contenenti la tabella. Se viene specificato publication_to_add, la colonna viene aggiunta solo nella pubblicazione specificata.
  • [ @from_agent= ] from_agent
    Specifica se la stored procedure viene eseguita da un agente di replica. from_agent è di tipo int e il valore predefinito è 0. Il valore 1 viene utilizzato quando la stored procedure viene eseguita da un agente di replica. In tutti gli altri casi è consigliabile utilizzare il valore predefinito 0.
  • [ @schema_change_script=] 'schema_change_script'
    Specifica il nome e il percorso di uno script di SQL Server utilizzato per modificare le stored procedure personalizzate generate dal sistema. schema_change_script è di tipo nvarchar(4000) e il valore predefinito è NULL. La replica consente di sostituire una o più procedure predefinite utilizzate per la replica transazionale con stored procedure personalizzate definite dall'utente. schema_change_script viene eseguito dopo una modifica dello schema in un articolo di tabella replicato tramite sp_repladdcolumn e consente di eseguire una delle operazioni seguenti:

    • Se le stored procedure personalizzate vengono rigenerate automaticamente, è possibile utilizzare schema_change_script per eliminare le stored procedure personalizzate e sostituirle con stored procedure personalizzate definite dall'utente che supportano il nuovo schema.
    • Se le stored procedure personalizzate non vengono rigenerate automaticamente, è possibile utilizzare schema_change_scriptper rigenerarle o per creare stored procedure personalizzate definite dall'utente.
  • [ @force_invalidate_snapshot = ] force_invalidate_snapshot
    Attiva o disattiva la possibilità di invalidare lo snapshot. force_invalidate_snapshot è di tipo bit e il valore predefinito è 1.

    1 specifica che le modifiche all'articolo possono invalidare lo snapshot. In tal caso, il valore 1 consente l'esecuzione del nuovo snapshot.

    0 specifica che le modifiche apportate all'articolo non invalideranno lo snapshot.

  • [ @force_reinit_subscription = ] force_reinit_subscription
    Attiva o disattiva la possibilità di reinizializzare la sottoscrizione. force_reinit_subscription è di tipo bit e il valore predefinito è 0.

    0 specifica che le modifiche apportate all'articolo non causano la reinizializzazione della sottoscrizione.

    1 specifica che le modifiche apportate all'articolo possono causare la reinizializzazione della sottoscrizione. In tal caso, il valore 1 consente la reinizializzazione della sottoscrizione.

Osservazioni

La stored procedure sp_repladdcolumn è obsoleta ed è disponibile solo per compatibilità con le versioni precedenti. Per aggiungere una colonna a un articolo di tabella replicato è consigliabile eseguire i comandi DDL (Data Definition Language) sulla tabella pubblicata. Se la replica DDL è attivata, i comandi DDL vengono replicati automaticamente durante la replica. Per ulteriori informazioni, vedere Modifiche allo schema nei database di pubblicazione.

sp_repladdcolumn è ancora necessaria durante la propagazione delle modifiche DDL dai Sottoscrittori di ripubblicazione in esecuzione in una versione precedente dei Sottoscrittori SQL Server 2000.

sp_repladdcolumn viene utilizzata per tutti i tipi di replica.

Quando si utilizza sp_repladdcolumn e si apporta una modifica allo schema di un articolo che appartiene a una pubblicazione che utilizza un pacchetto Data Transformation Services (DTS), tale modifica non viene propagata al Sottoscrittore e le procedure personalizzate per INSERT/UPDATE/DELETE non vengono rigenerate nei Sottoscrittori. È quindi necessario rigenerare il pacchetto DTS manualmente e apportare la modifica di schema corrispondente nei Sottoscrittori. Se non si esegue l'aggiornamento dello schema, l'agente di distribuzione potrebbe non applicare le modifiche successive. Prima di modificare uno schema, verificare che non esista alcuna transazione in sospeso da recapitare.

Quando al parametro typetext viene assegnato un valore predefinito che è una funzione non deterministica, ad esempio 'datetime not null default getdate()', l'aggiunta della nuova colonna può impedire la convergenza perché richiede l'esecuzione della funzione nel Sottoscrittore per il caricamento di un valore predefinito nella colonna.

Si noti che alle colonne timestamp e calcolate viene applicato un filtro per escludere le pubblicazioni in modalità carattere. Se si aggiunge una colonna timestamp o calcolata tramite sp_repladdcolumn, la nuova colonna non viene inviata alle sottoscrizioni di tali pubblicazioni.

ms189464.note(it-it,SQL.90).gifImportante:
Dopo l'esecuzione di sp_repladdcolumn, è necessario eseguire un backup del database di pubblicazione. Se non si esegue questa operazione, dopo il ripristino del database di pubblicazione può verificarsi un errore del processo di merge.

Autorizzazioni

Solo i membri del ruolo predefinito del server sysadmin e del ruolo predefinito del database db_owner possono eseguire sp_repladdcolumn.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Vedere anche

Riferimento

Stored procedure di sistema (Transact-SQL)

Altre risorse

Funzionalità obsolete nella replica di SQL Server 2005

Guida in linea e informazioni

Assistenza su SQL Server 2005