Modificare lo schema di una tabella temporale con controllo delle versioni di sistema
Si applica a: SQL Server 2016 (13.x) e alle sue versioni successive Database SQL di Azure Istanza gestita di SQL di Azure
Usare l'istruzione ALTER TABLE
per aggiungere, modificare o rimuovere una colonna.
Esempi
Di seguito sono riportati alcuni esempi in cui viene modificato lo schema della tabella temporale.
ALTER TABLE dbo.Department
ALTER COLUMN DeptName varchar(100);
ALTER TABLE dbo.Department
ADD WebAddress nvarchar(255) NOT NULL
CONSTRAINT DF_WebAddress DEFAULT 'www.mycompany.com';
ALTER TABLE dbo.Department
ADD TempColumn INT;
GO
ALTER TABLE dbo.Department
DROP COLUMN TempColumn;
/* Setting IsHidden property for period columns.
Use ALTER COLUMN <period_column> DROP HIDDEN to clear IsHidden flag */
ALTER TABLE dbo.Department
ALTER COLUMN ValidFrom ADD HIDDEN;
ALTER TABLE dbo.Department
ALTER COLUMN ValidTo ADD HIDDEN;
Note importanti
L'autorizzazioneCONTROL nelle tabelle correnti e di cronologia è necessaria per modificare lo schema della tabella temporale.
Durante un'operazione
ALTER TABLE
, il sistema mantiene un blocco dello schema su entrambe le tabelle.La modifica dello schema specificata viene propagata alla tabella di cronologia in modo appropriato (a seconda del tipo di modifica).
L'aggiunta di varchar(max), nvarchar(max), varbinary(max) o colonne XML con i valori predefiniti sarà un'operazione di aggiornamento dati in tutte le edizioni di SQL Server.
Se le dimensioni della riga dopo l'aggiunta delle colonne superano il limite di dimensioni della riga, non è possibile aggiungere nuove colonne online.
Dopo aver esteso una tabella con una nuova colonna NON NULL, eliminare il vincolo predefinito nella tabella di cronologia in quanto tutte le colonne della tabella vengono popolate automaticamente dal sistema.
L'operazione online (
WITH (ONLINE = ON
) non influisce suALTER TABLE ALTER COLUMN
in caso di una tabella temporale con controllo delle versioni di sistema. La colonna ALTER non viene eseguita come online indipendentemente dal valore che è stato specificato per l'opzione ONLINE.È possibile usare
ALTER COLUMN
per modificare la proprietàIsHidden
per le colonne periodo.Non è possibile usare
ALTER
direttamente per le seguenti modifiche dello schema. Per questi tipi di modifiche, impostareSYSTEM_VERSIONING = OFF
.- Aggiunta di una colonna calcolata
- Aggiunta di una colonna IDENTITY
- Aggiunta di una colonna SPARSE o modifica della colonna esistente in SPARSEquando la tabella di cronologia è impostata su
DATA_COMPRESSION = PAGE
oDATA_COMPRESSION = ROW
, ovvero il valore predefinito per la tabella di cronologia. - Aggiunta di COLUMN_SET
- Aggiunta di una colonna ROWGUIDCOL o modifica della colonna esistente in ROWGUIDCOL
- Modifica di una colonna NULL in NOT NULL se la colonna contiene valori Null nella tabella corrente o nella cronologia
L'esempio seguente mostra la modifica dello schema in cui l'impostazione SYSTEM_VERSIONING = OFF
è comunque necessaria (aggiunta della colonna IDENTITY). Questo esempio disabilita la verifica di coerenza dei dati. Questa verifica non è necessaria quando viene effettuata la modifica dello schema all'interno di una transazione in quanto non possono verificarsi modifiche simultanee dei dati.
BEGIN TRANSACTION
ALTER TABLE [dbo].[CompanyLocation] SET (SYSTEM_VERSIONING = OFF);
ALTER TABLE [CompanyLocation] ADD Cntr INT IDENTITY (1, 1);
ALTER TABLE [dbo].[CompanyLocationHistory] ADD Cntr INT NOT NULL
CONSTRAINT DF_Cntr DEFAULT 0;
ALTER TABLE [dbo].[CompanyLocation] SET
(
SYSTEM_VERSIONING = ON
(HISTORY_TABLE = [dbo].[CompanyLocationHistory])
);
COMMIT;
Passaggi successivi
- Tabelle temporali
- Introduzione alle tabelle temporali con controllo delle versioni di sistema
- Gestire la conservazione dei dati cronologici nelle tabelle temporali con controllo delle versioni di sistema
- Tabelle temporali con controllo delle versioni di sistema con tabelle con ottimizzazione per la memoria
- ALTER TABLE (Transact-SQL)
- Creazione di una tabella temporale con controllo delle versioni di sistema
- Modifica dei dati in una tabella temporale con controllo delle versioni di sistema
- Query sui dati in una tabella temporale con controllo delle versioni di sistema
- Arresto del controllo delle versioni di sistema in una tabella temporale con controllo delle versioni di sistema
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per