시스템 버전 임시 테이블의 스키마 변경Changing the Schema of a System-Versioned Temporal Table

이 항목은 다음에 적용됩니다. 예SQL Server(2016부터)예Azure SQL Database아니요Azure SQL Data Warehouse아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

ALTER TABLE 문을 사용하여 열을 추가, 변경 또는 제거합니다.Use the ALTER TABLE statement to add, alter or remove a column.

Examples

다음은 임시 테이블의 스키마를 변경하는 몇 가지 예입니다.Here are some examples that change the schema of temporal table.

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 SysStartTime ADD HIDDEN;   

ALTER TABLE dbo.Department   
   ALTER COLUMN SysEndTime ADD HIDDEN;  

중요한 주의 사항Important remarks

  • 임시 테이블의 스키마를 변경하려면 현재 및 기록 테이블에 대한CONTROL 권한이 필요합니다.CONTROL permission on current and history tables is required to change schema of temporal table.

  • ALTER TABLE 작업 중 시스템은 두 테이블에 스키마 잠금을 유지합니다.During an ALTER TABLE operation, the system holds a schema lock on both tables.

  • 지정된 스키마 변경은 적절한 방식으로 기록 테이블에 전파됩니다(변경 유형에 따라).Specified schema change is propagated to history table in appropriate way (depending on type of change)

  • Null을 허용하지 않는 열을 추가하거나 Null을 허용하지 않게 되도록 기존 열을 변경하는 경우 기존 행에 대한 기본값을 지정해야 합니다.If you add a non-nullable column or alter existing column to become non-nullable, you must specify the default value for existing rows. 시스템은 동일한 값으로 추가 기본값을 생성하고 기록 테이블에 적용합니다.The system will generate an additional default with the same value and apply it to the history table. DEFAULT 를 비어 있지 않은 테이블에 추가하는 것은 SQL ServerSQL Server Enterprise Edition 이외의 모든 버전에서 데이터 작업의 크기입니다(메타데이터 작업임).Adding DEFAULT to a non-empty table is a size of data operation on all editions other than SQL ServerSQL Server Enterprise Edition (on which it is a metadata operation).

  • 기본값으로 varchar(max), nvarchar(max), varbinary(max) 또는 XML 열을 추가하는 것은 모든 버전의 SQL ServerSQL Server에서 업데이트 데이터 작업이 됩니다.Adding varchar(max), nvarchar(max), varbinary(max) or XML columns with defaults will be an update data operation on all editions of SQL ServerSQL Server.

  • 열 추가 후 행 크기가 행 크기 제한을 초과하는 경우 새 열을 온라인에 추가할 수 없습니다.If row size after column addition exceeds the row size limit, new columns cannot be added online.

  • 새 NOT NULL 열로 테이블을 확장한 후 해당 테이블의 모든 열은 시스템에서 자동으로 채워지므로 기록 테이블에 기본 제약 조건을 삭제하는 것이 좋습니다.Once you extend a table with a new NOT NULL column, consider dropping default constraint on the history table as all columns in that table are automatically populated by the system.

  • 시스템 버전 관리 임시 테이블에서는 Online 옵션 (WITH (ONLINE = ON)이 ALTER TABLE ALTER COLUMN 에 영향을 주지 않습니다.Online option (WITH (ONLINE = ON) has no effect on ALTER TABLE ALTER COLUMN in case of system-versioned temporal table. ONLINE 옵션에 지정된 값과 관계없이 열 변경은 온라인으로 수행되지 않습니다.ALTER column is not performed as online regardless of which value was specified for ONLINE option.

  • ALTER COLUMN 을(를) 사용하여 기간 열에 대한 IsHidden 속성을 변경할 수 있습니다.You can use ALTER COLUMN to change IsHidden property for period columns.

  • 다음 스키마 변경에 ALTER 을(를) 직접 사용할 수 없습니다.You cannot use direct ALTER for the following schema changes. 이러한 종류의 변경은 SYSTEM_VERSIONING = OFF를 설정합니다.For these types of changes, set SYSTEM_VERSIONING = OFF.

    • 계산 열 추가Adding a computed column

    • IDENTITY 열 추가Adding an IDENTITY column

    • 기록 테이블이 DATA_COMPRESSION = PAGE 또는 DATA_COMPRESSION = ROW로 설정된 경우 SPARSE 열 추가 또는 SPARSE가 되도록 기존 열 변경은 기록 테이블에 대한 기본값입니다.Adding a SPARSE column or changing existing column to be SPARSEwhen the history table is set to DATA_COMPRESSION = PAGE or DATA_COMPRESSION = ROW, which is the default for the history table.

    • COLUMN_SET추가Adding a COLUMN_SET

    • ROWGUIDCOL 열 추가 또는 ROWGUIDCOL이(가) 되도록 기존 열 변경Adding a ROWGUIDCOL column or changing existing column to be ROWGUIDCOL

      다음 예제에서는 설정 SYSTEM_VERSIONING = OFF 가 여전히 필요한 스키마 변경을 보여 줍니다( IDENTITY 열 추가).The following example demonstrates changing the schema where setting SYSTEM_VERSIONING = OFF is still required (adding IDENTITY column).
      이 예제는 데이터 일관성 검사를 비활성화합니다.Notice that this example disables the data consistency check. 동시 데이터 변경이 발생할 수 없으므로 트랜잭션 내에서 스키마 변경을 수행하는 경우 이 검사는 필요하지 않습니다.This check is unnecessary when the schema change is made within a transaction as no concurrent data changes can occur.

      BEGIN TRAN   
      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 DEFAULT 0;   
      ALTER TABLE [dbo].[CompanyLocation]    
      SET    
      (   
      SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[CompanyLocationHistory])   
      );   
      COMMIT ;  
      

이 문서가 도움이 되었나요?Did this Article Help You? 여러분의 의견을 환영합니다.We’re Listening

어떤 정보를 찾고 계세요? 정보를 찾으셨나요?What information are you looking for, and did you find it? 여러분의 의견은 문서의 내용을 개선하는 데 많은 도움이 됩니다.We’re listening to your feedback to improve the content. 의견이 있으면 sqlfeedback@microsoft.comPlease submit your comments to sqlfeedback@microsoft.com

참고 항목See Also

임시 테이블 Temporal Tables
시스템 버전 관리 임시 테이블 시작 Getting Started with System-Versioned Temporal Tables
시스템 버전 관리된 임시 테이블에서 기록 데이터의 보존 관리 Manage Retention of Historical Data in System-Versioned Temporal Tables
메모리 액세스에 최적화된 테이블을 포함한 시스템 버전 임시 테이블 System-Versioned Temporal Tables with Memory-Optimized Tables
ALTER TABLE(Transact-SQL) ALTER TABLE (Transact-SQL)
시스템 버전 임시 테이블 만들기 Creating a System-Versioned Temporal Table
시스템 버전 임시 테이블의 데이터 수정 Modifying Data in a System-Versioned Temporal Table
시스템 버전 임시 테이블의 데이터 쿼리 Querying Data in a System-Versioned Temporal Table
시스템 버전 임시 테이블에서 시스템 버전 관리 중지 Stopping System-Versioning on a System-Versioned Temporal Table