CREATE TABLE(Transact-SQL)CREATE TABLE (Transact-SQL)

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

새 테이블을 만들고 SQL ServerSQL ServerAzure SQL 데이터베이스Azure SQL Database합니다.Creates a new table in SQL ServerSQL Server and Azure SQL 데이터베이스Azure SQL Database.

참고

에 대 한 SQL 데이터 웨어하우스SQL Data Warehouse 구문 참조 CREATE TABLE (Azure SQL 데이터 웨어하우스)합니다.For SQL 데이터 웨어하우스SQL Data Warehouse syntax, see CREATE TABLE (Azure SQL Data Warehouse).

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax

--Simple CREATE TABLE Syntax (common if not using options)  
CREATE TABLE   
    [ database_name . [ schema_name ] . | schema_name . ] table_name   
    ( { <column_definition> } [ ,...n ] )   
[ ; ]  

구문Syntax

--Disk-Based CREATE TABLE Syntax  
CREATE TABLE   
    [ database_name . [ schema_name ] . | schema_name . ] table_name   
    [ AS FileTable ]  
    ( {   <column_definition>   
        | <computed_column_definition>    
        | <column_set_definition>   
        | [ <table_constraint> ]   
        | [ <table_index> ] }  
          [ ,...n ]    
          [ PERIOD FOR SYSTEM_TIME ( system_start_time_column_name   
             , system_end_time_column_name ) ]  
      )  
    [ ON { partition_scheme_name ( partition_column_name )   
           | filegroup   
           | "default" } ]   
    [ TEXTIMAGE_ON { filegroup | "default" } ]   
    [ FILESTREAM_ON { partition_scheme_name   
           | filegroup   
           | "default" } ]  
    [ WITH ( <table_option> [ ,...n ] ) ]  
[ ; ]  

<column_definition> ::=  
column_name <data_type>  
    [ FILESTREAM ]  
    [ COLLATE collation_name ]   
    [ SPARSE ]  
    [ MASKED WITH ( FUNCTION = ' mask_function ') ]  
    [ CONSTRAINT constraint_name [ DEFAULT constant_expression ] ]   
    [ IDENTITY [ ( seed,increment ) ]  
    [ NOT FOR REPLICATION ]   
    [ GENERATED ALWAYS AS ROW { START | END } [ HIDDEN ] ]   
    [ NULL | NOT NULL ]  
    [ ROWGUIDCOL ]  
    [ ENCRYPTED WITH   
        ( COLUMN_ENCRYPTION_KEY = key_name ,  
          ENCRYPTION_TYPE = { DETERMINISTIC | RANDOMIZED } ,   
          ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256'  
        ) ]  
    [ <column_constraint> [ ...n ] ]   
    [ <column_index> ]  

<data type> ::=   
[ type_schema_name . ] type_name   
    [ ( precision [ , scale ] | max |   
        [ { CONTENT | DOCUMENT } ] xml_schema_collection ) ]   

<column_constraint> ::=   
[ CONSTRAINT constraint_name ]   
{     { PRIMARY KEY | UNIQUE }   
        [ CLUSTERED | NONCLUSTERED ]   
        [   
            WITH FILLFACTOR = fillfactor    
          | WITH ( < index_option > [ , ...n ] )   
        ]   
        [ ON { partition_scheme_name ( partition_column_name )   
            | filegroup | "default" } ]  

  | [ FOREIGN KEY ]   
        REFERENCES [ schema_name . ] referenced_table_name [ ( ref_column ) ]   
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]   
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]   
        [ NOT FOR REPLICATION ]   

  | CHECK [ NOT FOR REPLICATION ] ( logical_expression )   
}   

<column_index> ::=   
 INDEX index_name [ CLUSTERED | NONCLUSTERED ]  
    [ WITH ( <index_option> [ ,... n ] ) ]  
    [ ON { partition_scheme_name (column_name )   
         | filegroup_name  
         | default   
         }  
    ]   
    [ FILESTREAM_ON { filestream_filegroup_name | partition_scheme_name | "NULL" } ]  

<computed_column_definition> ::=  
column_name AS computed_column_expression   
[ PERSISTED [ NOT NULL ] ]  
[   
    [ CONSTRAINT constraint_name ]  
    { PRIMARY KEY | UNIQUE }  
        [ CLUSTERED | NONCLUSTERED ]  
        [   
            WITH FILLFACTOR = fillfactor   
          | WITH ( <index_option> [ , ...n ] )  
        ]  
        [ ON { partition_scheme_name ( partition_column_name )   
        | filegroup | "default" } ]  

    | [ FOREIGN KEY ]   
        REFERENCES referenced_table_name [ ( ref_column ) ]   
        [ ON DELETE { NO ACTION | CASCADE } ]   
        [ ON UPDATE { NO ACTION } ]   
        [ NOT FOR REPLICATION ]   

    | CHECK [ NOT FOR REPLICATION ] ( logical_expression )   
]   

<column_set_definition> ::=  
column_set_name XML COLUMN_SET FOR ALL_SPARSE_COLUMNS  

< table_constraint > ::=  
[ CONSTRAINT constraint_name ]   
{   
    { PRIMARY KEY | UNIQUE }   
        [ CLUSTERED | NONCLUSTERED ]   
        (column [ ASC | DESC ] [ ,...n ] )   
        [   
            WITH FILLFACTOR = fillfactor   
           |WITH ( <index_option> [ , ...n ] )   
        ]  
        [ ON { partition_scheme_name (partition_column_name)  
            | filegroup | "default" } ]   
    | FOREIGN KEY   
        ( column [ ,...n ] )   
        REFERENCES referenced_table_name [ ( ref_column [ ,...n ] ) ]   
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]   
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]   
        [ NOT FOR REPLICATION ]   
    | CHECK [ NOT FOR REPLICATION ] ( logical_expression )  



< table_index > ::=   
{  
    {  
      INDEX index_name [ CLUSTERED | NONCLUSTERED ]   
         (column_name [ ASC | DESC ] [ ,... n ] )   
    | INDEX index_name CLUSTERED COLUMNSTORE  
    | INDEX index_name [ NONCLUSTERED ] COLUMNSTORE (column_name [ ,... n ] )  
    }  
    [ WITH ( <index_option> [ ,... n ] ) ]   
    [ ON { partition_scheme_name (column_name )   
         | filegroup_name  
         | default   
         }  
    ]   
    [ FILESTREAM_ON { filestream_filegroup_name | partition_scheme_name | "NULL" } ]  

}   


<table_option> ::=  
{  
    [DATA_COMPRESSION = { NONE | ROW | PAGE }  
      [ ON PARTITIONS ( { <partition_number_expression> | <range> }   
      [ , ...n ] ) ]]  
    [ FILETABLE_DIRECTORY = <directory_name> ]   
    [ FILETABLE_COLLATE_FILENAME = { <collation_name> | database_default } ]  
    [ FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME = <constraint_name> ]  
    [ FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME = <constraint_name> ]  
    [ FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME = <constraint_name> ]  
    [ SYSTEM_VERSIONING = ON [ ( HISTORY_TABLE = schema_name . history_table_name  
        [, DATA_CONSISTENCY_CHECK = { ON | OFF } ] ) ] ]  
    [ REMOTE_DATA_ARCHIVE =   
      {   
          ON [ ( <table_stretch_options> [,...n] ) ]  
        | OFF ( MIGRATION_STATE = PAUSED )   
      }   
    ]  
}  

<table_stretch_options> ::=  
{  
     [ FILTER_PREDICATE = { null | table_predicate_function } , ]  
       MIGRATION_STATE = { OUTBOUND | INBOUND | PAUSED }  
 }  

<index_option> ::=  
{   
    PAD_INDEX = { ON | OFF }   
  | FILLFACTOR = fillfactor   
  | IGNORE_DUP_KEY = { ON | OFF }   
  | STATISTICS_NORECOMPUTE = { ON | OFF }   
  | ALLOW_ROW_LOCKS = { ON | OFF}   
  | ALLOW_PAGE_LOCKS ={ ON | OFF}   
  | COMPRESSION_DELAY= {0 | delay [Minutes]}  
  | DATA_COMPRESSION = { NONE | ROW | PAGE | COLUMNSTORE | COLUMNSTORE_ARCHIVE }  
       [ ON PARTITIONS ( { <partition_number_expression> | <range> }   
       [ , ...n ] ) ]  
}  
<range> ::=   
<partition_number_expression> TO <partition_number_expression>  

      --Memory optimized CREATE TABLE Syntax  
CREATE TABLE  
    [database_name . [schema_name ] . | schema_name . ] table_name  
    ( { <column_definition>  
    | [ <table_constraint> ] [ ,... n ]  
    | [ <table_index> ]  
      [ ,... n ] }   
      [ PERIOD FOR SYSTEM_TIME ( system_start_time_column_name   
        , system_end_time_column_name ) ]  
)  
    [ WITH ( <table_option> [ ,... n ] ) ]  
 [ ; ]  

<column_definition> ::=  
column_name <data_type>  
    [ COLLATE collation_name ]  
    [ GENERATED ALWAYS AS ROW { START | END } [ HIDDEN ] ]   
    [ NULL | NOT NULL ]  
[  
    [ CONSTRAINT constraint_name ] DEFAULT memory_optimized_constant_expression ]  
    | [ IDENTITY [ ( 1, 1 ) ]  
]  
    [ <column_constraint> ]  
    [ <column_index> ]  

<data type> ::=  
 [type_schema_name . ] type_name [ (precision [ , scale ]) ]  

<column_constraint> ::=  
 [ CONSTRAINT constraint_name ]  
{   
  { PRIMARY KEY | UNIQUE }    
      {   NONCLUSTERED   
        | NONCLUSTERED HASH WITH (BUCKET_COUNT = bucket_count)   
      }   
  | [ FOREIGN KEY ]   
        REFERENCES [ schema_name . ] referenced_table_name [ ( ref_column ) ]   
  | CHECK ( logical_expression )   
}  

< table_constraint > ::=  
 [ CONSTRAINT constraint_name ]  
{    
   { PRIMARY KEY | UNIQUE }  
     {   
       NONCLUSTERED (column [ ASC | DESC ] [ ,... n ])  
       | NONCLUSTERED HASH (column [ ,... n ] ) WITH ( BUCKET_COUNT = bucket_count )   
                    }   
    | FOREIGN KEY   
        ( column [ ,...n ] )   
        REFERENCES referenced_table_name [ ( ref_column [ ,...n ] ) ]   
    | CHECK ( logical_expression )   
}  

<column_index> ::=  
  INDEX index_name  
{ [ NONCLUSTERED ] | [ NONCLUSTERED ] HASH WITH (BUCKET_COUNT = bucket_count)  }  

<table_index> ::=  
  INDEX index_name  
{   [ NONCLUSTERED ] HASH (column [ ,... n ] ) WITH (BUCKET_COUNT = bucket_count)   
  | [ NONCLUSTERED ] (column [ ASC | DESC ] [ ,... n ] )   
      [ ON filegroup_name | default ]  
  | CLUSTERED COLUMNSTORE [WITH ( COMPRESSION_DELAY = {0 | delay [Minutes]})]  
      [ ON filegroup_name | default ]  

}  

<table_option> ::=  
{  
    MEMORY_OPTIMIZED = ON   
  | DURABILITY = {SCHEMA_ONLY | SCHEMA_AND_DATA}  
  | SYSTEM_VERSIONING = ON [ ( HISTORY_TABLE = schema_name . history_table_name  
        [, DATA_CONSISTENCY_CHECK = { ON | OFF } ] ) ]   

}  

인수Arguments

database_namedatabase_name
테이블이 생성된 데이터베이스의 이름입니다.Is the name of the database in which the table is created. a s e _ 기존 데이터베이스의 이름을 지정 해야 합니다.database_name must specify the name of an existing database. 지정 하지 않으면 database_name 현재 데이터베이스에 대 한 기본값입니다.If not specified, database_name defaults to the current database. 현재 연결에 대 한 로그인에 지정 된 데이터베이스의 기존 사용자 ID와 연결 되어 있어야 database_name, 되며 해당 사용자 ID는 CREATE TABLE 권한을 갖고 있어야 합니다.The login for the current connection must be associated with an existing user ID in the database specified by database_name, and that user ID must have CREATE TABLE permissions.

schema_nameschema_name
새 테이블이 속한 스키마의 이름입니다.Is the name of the schema to which the new table belongs.

table_nametable_name
새 테이블의 이름입니다.Is the name of the new table. 테이블 이름에 대 한 규칙을 따라야 식별자합니다.Table names must follow the rules for identifiers. table_name 최대 로컬 임시 테이블 이름 제외 하 고 128 자가 될 수 있습니다 (단일 숫자 기호를 접두사로 붙은 이름이 (#))는 116 자를 초과할 수 없습니다.table_name can be a maximum of 128 characters, except for local temporary table names (names prefixed with a single number sign (#)) that cannot exceed 116 characters.

AS FileTableAS FileTable

적용 대상: SQL Server 2012SQL Server 2012 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

새 테이블을 FileTable로 만듭니다.Creates the new table as a FileTable. FileTable에는 고정 스키마가 있으므로 열을 지정하지 않아도 됩니다.You do not specify columns because a FileTable has a fixed schema. Filetable에 대 한 자세한 내용은 참조 Filetable ( SQL Server ) .For more information about FileTables, see FileTables (SQL Server).

column_namecolumn_name
computed_column_expressioncomputed_column_expression
계산 열의 값을 정의하는 식입니다.Is an expression that defines the value of a computed column. 계산 열은 해당 열에 PERSISTED 표시가 없는 한 테이블에 물리적으로 저장되지 않는 가상의 열입니다.A computed column is a virtual column that is not physically stored in the table, unless the column is marked PERSISTED. 이 열은 같은 테이블의 다른 열을 사용하는 식에서 계산됩니다.The column is computed from an expression that uses other columns in the same table. 예를 들어 계산된 열 정의 가질 수 있습니다: 비용 AS 가격 * qty합니다. 식은 계산되지 않은 열 이름, 상수, 함수, 변수 및 이러한 요소를 하나 이상의 연산자로 연결한 조합이 될 수 있습니다.For example, a computed column can have the definition: cost AS price * qty. The expression can be a noncomputed column name, constant, function, variable, and any combination of these connected by one or more operators. 식은 하위 쿼리가 되거나 별칭 데이터 형식을 포함할 수 없습니다.The expression cannot be a subquery or contain alias data types.

계산 열은 SELECT 목록, WHERE 절, ORDER BY 절 또는 정규식을 사용할 수 있는 다른 위치에서 사용할 수 있습니다. 단, 다음과 같은 경우는 예외입니다.Computed columns can be used in select lists, WHERE clauses, ORDER BY clauses, or any other locations in which regular expressions can be used, with the following exceptions:

  • FOREIGN KEY 또는 CHECK 제약 조건에 참여하려면 계산 열이 PERSISTED로 표시되어야 합니다.Computed columns must be marked PERSISTED to participate in a FOREIGN KEY or CHECK constraint.

  • 계산 열 값이 결정적 식에 의해 정의되고 결과의 데이터 형식이 인덱스 열에 허용되는 경우에는 계산 열을 인덱스의 키 열이나 PRIMARY KEY 또는 UNIQUE 제약 조건의 일부로 사용할 수 있습니다.A computed column can be used as a key column in an index or as part of any PRIMARY KEY or UNIQUE constraint, if the computed column value is defined by a deterministic expression and the data type of the result is allowed in index columns.

    예를 들어 테이블에 열이 정수 b, 계산된 열 a + b 인덱싱될 수 있지만 계산된 열 a + DATEPART (dd, GETDATE()) 다음 호출에서 값이 변경 될 수 있으므로 인덱싱할 수 없습니다.For example, if the table has integer columns a and b, the computed column a+b may be indexed, but computed column a+DATEPART(dd, GETDATE()) cannot be indexed because the value may change in subsequent invocations.

  • 계산 열은 INSERT 또는 UPDATE 문의 대상이 될 수 없습니다.A computed column cannot be the target of an INSERT or UPDATE statement.

참고

테이블의 각 행은 계산 열과 연관된 열에 대해 다른 값을 가질 수 있습니다. 따라서 계산 열은 각 행에 대해 동일한 값을 갖지 않습니다.Each row in a table can have different values for columns that are involved in a computed column; therefore, the computed column may not have the same value for each row.

계산 열의 Null 허용 여부는 사용되는 식을 바탕으로 데이터베이스 엔진Database Engine에서 자동으로 결정합니다.Based on the expressions that are used, the nullability of computed columns is determined automatically by the 데이터베이스 엔진Database Engine. 대부분 식의 결과는 언더플로 또는 오버플로에 의한 Null 결과를 생성할 수 있으므로 Null이 허용되지 않는 열만 사용하더라도 결국 식은 Null을 허용하는 것으로 간주됩니다.The result of most expressions is considered nullable even if only nonnullable columns are present, because possible underflows or overflows also produce NULL results. COLUMNPROPERTY 함수를 사용 하 여는 AllowsNull 속성을 테이블에 있는 계산 열의 null 허용 여부를 조사 합니다.Use the COLUMNPROPERTY function with the AllowsNull property to investigate the nullability of any computed column in a table. Null을 허용 하는 식 ISNULL을 지정 하 여 nonnullable 스테레오로 변환할 수 있습니다는 check_expression 상수, 상수는 null이 아닌 값이 NULL 결과를 대체 합니다.An expression that is nullable can be turned into a nonnullable one by specifying ISNULL with the check_expression constant, where the constant is a nonnull value substituted for any NULL result. CLR(공용 언어 런타임) 사용자 정의 형식의 식을 바탕으로 한 계산 열에는 해당 형식에 대한 REFERENCES 권한이 필요합니다.REFERENCES permission on the type is required for computed columns based on common language runtime (CLR) user-defined type expressions.

PERSISTEDPERSISTED
SQL Server 데이터베이스 엔진SQL Server Database Engine이 계산된 값을 테이블에 물리적으로 저장하고 계산 열이 종속된 다른 열이 업데이트되면 해당 값을 업데이트하도록 지정합니다.Specifies that the SQL Server 데이터베이스 엔진SQL Server Database Engine will physically store the computed values in the table, and update the values when any other columns on which the computed column depends are updated. 계산 열을 PERSISTED로 표시하면 결정적이지만 정확하지는 않은 계산 열에 인덱스를 만들 수 있습니다.Marking a computed column as PERSISTED lets you create an index on a computed column that is deterministic, but not precise. 자세한 내용은 Indexes on Computed Columns을 참조하세요.For more information, see Indexes on Computed Columns. 분할된 테이블의 분할 열로 사용되는 계산 열은 명시적으로 PERSISTED로 표시해야 합니다.Any computed columns that are used as partitioning columns of a partitioned table must be explicitly marked PERSISTED. computed_column_expression PERSISTED를 지정할 때 결정적 이어야 합니다.computed_column_expression must be deterministic when PERSISTED is specified.

ON { partition_scheme | 파일 그룹 | "기본" }ON { partition_scheme | filegroup | "default" }

테이블이 저장된 파티션 구성표 또는 파일 그룹을 지정합니다.Specifies the partition scheme or filegroup on which the table is stored. 경우 partition_scheme 지정는에 지정 된 많은 파일 그룹 또는 파티션을 집합이 하나에 저장 된 분할된 된 테이블 수는 테이블이 partition_scheme합니다.If partition_scheme is specified, the table is to be a partitioned table whose partitions are stored on a set of one or more filegroups specified in partition_scheme. 경우 파일 그룹 를 지정 된 테이블은 명명된 된 파일 그룹에 저장 합니다.If filegroup is specified, the table is stored in the named filegroup. 파일 그룹은 데이터베이스 내에 있어야 합니다.The filegroup must exist within the database. 경우 "기본" 를 지정 하거나 ON을 전혀 지정 하지 않으면, 테이블의 기본 파일 그룹에 저장 됩니다.If "default" is specified, or if ON is not specified at all, the table is stored on the default filegroup. CREATE TABLE에 지정된 테이블의 저장 메커니즘은 곧이어 변경할 수 없습니다.The storage mechanism of a table as specified in CREATE TABLE cannot be subsequently altered.

ON {partition_scheme | 파일 그룹 | "기본"} 기본 키에 지정 될 수도 있습니다 또는 UNIQUE 제약 조건을 지정 합니다.ON {partition_scheme | filegroup | "default"} can also be specified in a PRIMARY KEY or UNIQUE constraint. 이러한 제약 조건은 인덱스를 만듭니다.These constraints create indexes. 경우 파일 그룹 를 지정 된 인덱스는 명명된 된 파일 그룹에 저장 됩니다.If filegroup is specified, the index is stored in the named filegroup. 경우 "기본" 를 지정 하거나 ON 전혀 지정 하지 않으면 인덱스는 테이블과 동일한 파일 그룹에 저장 됩니다.If "default" is specified, or if ON is not specified at all, the index is stored in the same filegroup as the table. PRIMARY KEY 또는 UNIQUE 제약 조건이 클러스터형 인덱스를 만드는 경우에는 테이블에 대한 데이터 페이지가 인덱스와 동일한 파일 그룹에 저장됩니다.If the PRIMARY KEY or UNIQUE constraint creates a clustered index, the data pages for the table are stored in the same filegroup as the index. CLUSTERED를 지정 하거나 아니면 제약 조건이 클러스터형된 인덱스를 만드는 경우 partition_scheme 은 지정 된 partition_scheme 또는 파일그룹 테이블 정의 또는 그 반대로의 제약 조건 정의 유지 하 고 다른 무시 됩니다.If CLUSTERED is specified or the constraint otherwise creates a clustered index, and a partition_scheme is specified that differs from the partition_scheme or filegroup of the table definition, or vice-versa, only the constraint definition will be honored, and the other will be ignored.

참고

이 컨텍스트에서 default는 키워드가 아니라In this context, default is not a keyword. 기본 파일 그룹에 대 한 식별자 이며 ON 같이 구분 되어야 합니다 "기본" 또는 ON [기본]합니다.It is an identifier for the default filegroup and must be delimited, as in ON "default" or ON [default]. 경우 "기본" 지정, QUOTED_IDENTIFIER 옵션은 현재 세션에 대 한 ON 이어야 합니다.If "default" is specified, the QUOTED_IDENTIFIER option must be ON for the current session. 이 값은 기본 설정입니다.This is the default setting. 자세한 내용은 SET QUOTED_IDENTIFIER(Transact-SQL)를 참조하세요.For more information, see SET QUOTED_IDENTIFIER (Transact-SQL).

참고

분할된 테이블을 만든 후에는 테이블의 LOCK_ESCALATION 옵션을 AUTO로 설정하십시오.After you create a partitioned table, consider setting the LOCK_ESCALATION option for the table to AUTO. 이렇게 하면 테이블 수준이 아닌 파티션(HoBT) 수준으로 잠금이 에스컬레이션되도록 하여 동시성을 향상시킬 수 있습니다.This can improve concurrency by enabling locks to escalate to partition (HoBT) level instead of the table. 자세한 내용은 ALTER TABLE(Transact-SQL)을 참조하세요.For more information, see ALTER TABLE (Transact-SQL).

TEXTIMAGE_ON { 파일 그룹| "기본" }TEXTIMAGE_ON { filegroup| "default" }
나타냅니다는 텍스트, ntext, 이미지, xml, varchar (max), nvarchar (max), varbinary (max), 및 CLR 사용자 정의 형식 열 (기 하 도형 및 지리 포함)는 지정된 된 파일 그룹에 저장 됩니다.Indicates that the text, ntext, image, xml, varchar(max), nvarchar(max), varbinary(max), and CLR user-defined type columns (including geometry and geography) are stored on the specified filegroup.

테이블에 큰 값 열이 없는 경우에는 TEXTIMAGE_ON이 허용되지 않습니다.TEXTIMAGE_ON is not allowed if there are no large value columns in the table. 경우에 TEXTIMAGE_ON를 지정할 수 없습니다 partition_scheme 지정 됩니다.TEXTIMAGE_ON cannot be specified if partition_scheme is specified. 경우 "기본" 를 지정 하거나 TEXTIMAGE_ON을 전혀 지정 하지 않으면, 큰 값 열은 기본 파일 그룹에 저장 합니다.If "default" is specified, or if TEXTIMAGE_ON is not specified at all, the large value columns are stored in the default filegroup. CREATE TABLE에 지정된 큰 값 열 데이터를 저장한 후에는 곧이어 변경할 수 없습니다.The storage of any large value column data specified in CREATE TABLE cannot be subsequently altered.

참고

Varchar (max), nvarchar (max), varbinary (max), xml 및 큰 UDT 값 데이터 행에 직접 저장 됩니다, 그리고 한 최대 8000 바이트 값을 최대 레코드 들어갈 수 있습니다.Varchar(max), nvarchar(max), varbinary(max), xml and large UDT values are stored directly in the data row, up to a limit of 8000 bytes and as long as the value can fit the record. 포인터 값이 레코드에 맞지 않는 경우 정렬에 행과 나머지 행 외부 LOB 저장 공간에 저장 됩니다.If the value does not fit in the record, a pointer is sorted in-row and the rest is stored out of row in the LOB storage space. 0의 기본값입니다.0 is the default value. TEXTIMAGE_ON "LOB 저장소 공간"의 위치 변경, 데이터를 행에 저장된 하는 경우에이 영향을 주지 않습니다.TEXTIMAGE_ON only changes the location of the "LOB storage space", it does not affect when data is stored in-row. Out of row 옵션 sp_tableoption의 큰 값 형식을 사용 하 여를 행 외부 전체 LOB 값을 저장 합니다.Use large value types out of row option of sp_tableoption to store the entire LOB value out of the row.

참고

이 컨텍스트에서 default는 키워드가 아니라In this context, default is not a keyword. 기본 파일 그룹에 대 한 식별자 이며 TEXTIMAGE_ON 같이 구분 되어야 합니다 "기본" 또는 TEXTIMAGE_ON [기본].It is an identifier for the default filegroup and must be delimited, as in TEXTIMAGE_ON "default" or TEXTIMAGE_ON [default]. 경우 "기본" 지정, QUOTED_IDENTIFIER 옵션은 현재 세션에 대 한 ON 이어야 합니다.If "default" is specified, the QUOTED_IDENTIFIER option must be ON for the current session. 이 값은 기본 설정입니다.This is the default setting. 자세한 내용은 SET QUOTED_IDENTIFIER(Transact-SQL)를 참조하세요.For more information, see SET QUOTED_IDENTIFIER (Transact-SQL).

FILESTREAM_ON { partition_scheme_name | 파일 그룹 | "기본" } 적용할: SQL ServerSQL Server합니다.FILESTREAM_ON { partition_scheme_name | filegroup | "default" } Applies to: SQL ServerSQL Server.

FILESTREAM 데이터의 파일 그룹을 지정합니다.Specifies the filegroup for FILESTREAM data.

테이블에 FILESTREAM 데이터가 포함되어 있고 테이블이 분할된 경우에는 FILESTREAM_ON 절을 포함해야 하며 이 절에서 FILESTREAM 파일 그룹의 파티션 구성표를 지정해야 합니다.If the table contains FILESTREAM data and the table is partitioned, the FILESTREAM_ON clause must be included and must specify a partition scheme of FILESTREAM filegroups. 이 파티션 구성표는 테이블의 파티션 구성표와 동일한 파티션 함수 및 파티션 열을 사용해야 합니다. 그렇지 않으면 오류가 발생합니다.This partition scheme must use the same partition function and partition columns as the partition scheme for the table; otherwise, an error is raised.

테이블이 분할되지 않은 경우에는 FILESTREAM 열을 분할할 수 없습니다.If the table is not partitioned, the FILESTREAM column cannot be partitioned. 테이블의 FILESTREAM 데이터는 단일 파일 그룹에 저장되어야 합니다.FILESTREAM data for the table must be stored in a single filegroup. 이 파일 그룹은 FILESTREAM_ON 절에 지정됩니다.This filegroup is specified in the FILESTREAM_ON clause.

테이블이 분할되지 않고 FILESTREAM_ON 절이 지정되지 않은 경우에는 DEFAULT 속성이 설정된 FILESTREAM 파일 그룹이 사용됩니다.If the table is not partitioned and the FILESTREAM_ON clause is not specified, the FILESTREAM filegroup that has the DEFAULT property set is used. FILESTREAM 파일 그룹이 없으면 오류가 발생합니다.If there is no FILESTREAM filegroup, an error is raised.

  • ON 및 TEXTIMAGE_ON과 마찬가지로 FILESTREAM_ON에 대해 CREATE TABLE을 사용하여 설정한 값은 다음과 같은 경우를 제외하고 변경할 수 없습니다.As with ON and TEXTIMAGE_ON, the value set by using CREATE TABLE for FILESTREAM_ON cannot be changed, except in the following cases:

  • A CREATE INDEX 문이 클러스터형 인덱스로 힙 변환 합니다.A CREATE INDEX statement converts a heap into a clustered index. 이 경우 다른 FILESTREAM 파일 그룹, 파티션 구성표 또는 NULL을 지정할 수 있습니다.In this case, a different FILESTREAM filegroup, partition scheme, or NULL can be specified.

  • A DROP INDEX 문에 클러스터형된 인덱스를 힙으로 변환 합니다.A DROP INDEX statement converts a clustered index into a heap. 이 경우, 다른 FILESTREAM 파일 그룹, 파티션 구성표 또는 "기본" 지정할 수 있습니다.In this case, a different FILESTREAM filegroup, partition scheme, or "default" can be specified.

    파일 그룹은 FILESTREAM_ON <filegroup> 절 또는 파티션 구성표에 명명 되어 있는 각 FILESTREAM 파일 그룹에는 파일 그룹에 대해 정의 된 파일이 하나 있어야 합니다.The filegroup in the FILESTREAM_ON <filegroup> clause, or each FILESTREAM filegroup that is named in the partition scheme, must have one file defined for the filegroup. 이 파일을 사용 하 여 정의 해야 합니다는 CREATE DATABASE 또는 ALTER DATABASE 문을; 그렇지 않으면 오류가 발생 합니다.This file must be defined by using a CREATE DATABASE or ALTER DATABASE statement; otherwise, an error is raised.

    관련된 FILESTREAM 항목을 참조 하세요. Binary Large Object ( Blob) 데이터 ( SQL Server ) .For related FILESTREAM topics, see Binary Large Object (Blob) Data (SQL Server).

    [ type_schema_name합니다.[ type_schema_name. ] type_name] type_name
    열의 데이터 형식과 열이 속한 스키마를 지정합니다.Specifies the data type of the column, and the schema to which it belongs. 디스크 기반 테이블의 데이터 형식은 다음 중 하나일 수 있습니다.For disk-based tables, the data type can be one of the following:

  • 시스템 데이터 형식입니다.A system data type.

  • SQL ServerSQL Server 시스템 데이터 형식을 기반으로 하는 별칭 형식.An alias type based on a SQL ServerSQL Server system data type. 별칭 데이터 형식은 CREATE TYPE 문으로 만들어진 다음 테이블 정의에 사용됩니다.Alias data types are created with the CREATE TYPE statement before they can be used in a table definition. 별칭 데이터 형식에 대한 NULL 또는 NOT NULL 할당은 CREATE TABLE 문 중에서 덮어쓸 수 있지만The NULL or NOT NULL assignment for an alias data type can be overridden during the CREATE TABLE statement. 길이 지정은 변경할 수 없습니다. 즉, CREATE TABLE 문에서 별칭 데이터 형식의 길이를 지정할 수 없습니다.However, the length specification cannot be changed; the length for an alias data type cannot be specified in a CREATE TABLE statement.

  • CLR 사용자 정의 형식.A CLR user-defined type. CLR 사용자 정의 데이터 형식은 CREATE TYPE 문으로 만들어진 다음 테이블 정의에서 사용됩니다.CLR user-defined types are created with the CREATE TYPE statement before they can be used in a table definition. CLR 사용자 정의 형식으로 열을 만들려면 해당 형식에 대한 REFERENCES 권한이 필요합니다.To create a column on CLR user-defined type, REFERENCES permission is required on the type.

    경우 type_schema_name 를 지정 하지 않으면는 SQL Server 데이터베이스 엔진SQL Server Database Engine 참조 type_name 다음과 같은 순서로:If type_schema_name is not specified, the SQL Server 데이터베이스 엔진SQL Server Database Engine references type_name in the following order:

  • SQL ServerSQL Server 시스템 데이터 형식The SQL ServerSQL Server system data type.

  • 현재 데이터베이스에 있는 현재 사용자의 기본 스키마The default schema of the current user in the current database.

  • 현재 데이터베이스의 dbo 스키마The dbo schema in the current database.

    메모리 액세스에 최적화 된 테이블에 대 한 참조 메모리 내 OLTP에 대 한 데이터 형식을 지원 지원 되는 시스템 형식의 목록에 대 한 합니다.For memory-optimized tables, see Supported Data Types for In-Memory OLTP for a list of supported system types.

    전체 자릿수precision
    지정된 데이터 형식의 전체 자릿수입니다.Is the precision for the specified data type. 유효한 전체 자릿수 값에 대 한 자세한 내용은 참조 전체 자릿수, 소수 자릿수 및 길이합니다.For more information about valid precision values, see Precision, Scale, and Length.

    소수 자릿수scale
    지정된 데이터 형식의 소수 자릿수입니다.Is the scale for the specified data type. 유효한 소수 자릿수 값에 대 한 자세한 내용은 참조 전체 자릿수, 소수 자릿수 및 길이합니다.For more information about valid scale values, see Precision, Scale, and Length.

    maxmax
    에 적용 됩니다는 varchar, nvarchar, 및 varbinary 2를 저장 하기 위한 데이터 형식 ^31 바이트의 문자 및 이진 데이터를 2 ^30 바이트의 유니코드 데이터입니다.Applies only to the varchar, nvarchar, and varbinary data types for storing 2^31 bytes of character and binary data, and 2^30 bytes of Unicode data.

    CONTENTCONTENT
    지정의 각 인스턴스는 xml 의 데이터 형식이 column_name 여러 개의 최상위 요소를 포함할 수 있습니다.Specifies that each instance of the xml data type in column_name can contain multiple top-level elements. 콘텐츠에만 적용 됩니다는 xml 데이터 입력 한 경우에 지정할 수 있습니다 xml_schema_collection 도 지정 합니다.CONTENT applies only to the xml data type and can be specified only if xml_schema_collection is also specified. 지정하지 않은 경우에는 CONTENT가 기본 동작입니다.If not specified, CONTENT is the default behavior.

    DOCUMENTDOCUMENT
    지정 하는 각 인스턴스에 xml 데이터 형식에 column_name 하나의 최상위 요소만 포함 될 수 있습니다.Specifies that each instance of the xml data type in column_name can contain only one top-level element. 문서에만 적용 됩니다는 xml 데이터 입력 한 경우에 지정할 수 있습니다 xml_schema_collection 도 지정 합니다.DOCUMENT applies only to the xml data type and can be specified only if xml_schema_collection is also specified.

    xml_schema_collectionxml_schema_collection
    에 적용 됩니다는 xml 형식과 XML 스키마 컬렉션을 연결 하기 위한 데이터 형식입니다.Applies only to the xml data type for associating an XML schema collection with the type. 입력 하기 전에 xml 스키마에 대 한 열에서 스키마 만들어야 데이터베이스에서 사용 하 여 CREATE XML SCHEMA COLLECTION합니다.Before typing an xml column to a schema, the schema must first be created in the database by using CREATE XML SCHEMA COLLECTION.

    DEFAULTDEFAULT
    삽입 중에 값이 명시적으로 지정되지 않은 경우에 열에 대해 제공되는 값을 지정합니다.Specifies the value provided for the column when a value is not explicitly supplied during an insert. DEFAULT 정의로 정의 된 제외한 모든 열에 적용할 수 있습니다 타임 스탬프, 또는 IDENTITY 속성이 있는 합니다.DEFAULT definitions can be applied to any columns except those defined as timestamp, or those with the IDENTITY property. 형식에서의 암시적 변환이 기본 값을 사용자 정의 형식 열에 대해 지정 하는 경우 지원 해야 constant_expression 사용자 정의 형식에 있습니다.If a default value is specified for a user-defined type column, the type should support an implicit conversion from constant_expression to the user-defined type. DEFAULT 정의는 테이블이 삭제될 때 제거됩니다.DEFAULT definitions are removed when the table is dropped. 문자열과 같은 상수 값, 스칼라 함수(시스템 함수, 사용자 정의 함수 또는 CLR 함수) 또는 NULL만 기본값으로 사용할 수 있습니다.Only a constant value, such as a character string; a scalar function (either a system, user-defined, or CLR function); or NULL can be used as a default. 이전 버전의 SQL ServerSQL Server와 호환성을 유지하기 위해 DEFAULT에 제약 조건 이름을 할당할 수 있습니다.To maintain compatibility with earlier versions of SQL ServerSQL Server, a constraint name can be assigned to a DEFAULT.

    constant_expressionconstant_expression
    열의 기본값으로 사용되는 상수, NULL 또는 시스템 함수입니다.Is a constant, NULL, or a system function that is used as the default value for the column.

    memory_optimized_constant_expressionmemory_optimized_constant_expression
    열의 기본값으로 사용되는 상수, NULL 또는 시스템 함수입니다.Is a constant, NULL, or a system function that is supported in used as the default value for the column. 고유하게 컴파일된 저장 프로시저에서 지원되어야 합니다.Must be supported in natively compiled stored procedures. 고유 하 게 컴파일된 저장된 프로시저의 기본 제공 함수에 대 한 자세한 내용은 참조 고유 하 게 컴파일된 T-SQL 모듈의 지원 되는 기능합니다.For more information about built-in functions in natively compiled stored procedures, see Supported Features for Natively Compiled T-SQL Modules.

    IDENTITYIDENTITY
    새 열이 ID 열임을 나타냅니다.Indicates that the new column is an identity column. 테이블에 새 행이 추가되면 데이터베이스 엔진Database Engine은 열에 대해 고유한 증가값을 제공합니다.When a new row is added to the table, the 데이터베이스 엔진Database Engine provides a unique, incremental value for the column. ID 열은 일반적으로 PRIMARY KEY 제약 조건과 함께 사용되어 테이블에 대한 고유한 행 식별자 역할을 합니다.Identity columns are typically used with PRIMARY KEY constraints to serve as the unique row identifier for the table. IDENTITY 속성에 지정할 수 tinyint, smallint, int, bigint, decimal(p,0), 또는 numeric(p,0) 열입니다.The IDENTITY property can be assigned to tinyint, smallint, int, bigint, decimal(p,0), or numeric(p,0) columns. ID 열은 테이블당 하나만 만들 수 있습니다.Only one identity column can be created per table. ID 열에는 바인딩된 기본값 및 DEFAULT 제약 조건을 사용할 수 없습니다.Bound defaults and DEFAULT constraints cannot be used with an identity column. 초기값과 증가값은 둘 다 지정하거나 또는 둘 다 지정하지 않아야 합니다.Both the seed and increment or neither must be specified. 둘 다 지정하지 않은 경우에는 기본값 (1,1)이 사용됩니다.If neither is specified, the default is (1,1).

    메모리 액세스에 최적화 된 테이블에 허용 되는 유일한 값 모두에 대 한 시드증분 은 1 이며, (1, 1)에 대 한 기본값이 시드증분합니다.In a memory-optimized table, the only allowed value for both seed and increment is 1; (1,1) is the default for seed and increment.

    시드seed
    테이블에 로드되는 첫 번째 행에 사용하는 값입니다.Is the value used for the very first row loaded into the table.

    증가값increment
    로드된 이전 행의 ID 값에 추가되는 증가값입니다.Is the incremental value added to the identity value of the previous row loaded.

    NOT FOR REPLICATIONNOT FOR REPLICATION
    CREATE TABLE 문에서 IDENTITY 속성, FOREIGN KEY 제약 조건 및 CHECK 제한 조건에 대해 NOT FOR REPLICATION 절을 지정할 수 있습니다.In the CREATE TABLE statement, the NOT FOR REPLICATION clause can be specified for the IDENTITY property, FOREIGN KEY constraints, and CHECK constraints. IDENTITY 속성에 이 절을 지정하면 복제 에이전트가 삽입 작업을 수행할 때 ID 열의 값이 증가하지 않습니다.If this clause is specified for the IDENTITY property, values are not incremented in identity columns when replication agents perform inserts. 제약 조건에 대해 이 절을 지정하면 복제 에이전트가 삽입, 업데이트 또는 삭제 작업을 수행할 때 해당 제약 조건이 강제로 적용되지 않습니다.If this clause is specified for a constraint, the constraint is not enforced when replication agents perform insert, update, or delete operations.

    생성 된 항상 AS 행 {시작 | [숨겨진]을 (를) 종료 [NOT NULL]GENERATED ALWAYS AS ROW { START | END } [ HIDDEN ] [ NOT NULL ]
    적용 대상: SQL Server 2016SQL Server 2016 통해 SQL Server 2017SQL Server 2017Azure SQL 데이터베이스Azure SQL Database합니다.Applies to: SQL Server 2016SQL Server 2016 through SQL Server 2017SQL Server 2017 and Azure SQL 데이터베이스Azure SQL Database.

    지정 된 datetime2 열 레코드가 유효 시작 시간 또는 레코드는 유효한 종료 시간을 기록 하는 시스템에서 사용될지를 지정 합니다.Specifies that a specified datetime2 column will be used by the system to record either the start time for which a record is valid or the end time for which a record is valid. 열을 정의 해야 NOT NULL로 합니다.The column must be defined as NOT NULL. NULL로 지정 하려고 하면 시스템에서 오류를 throw 합니다.If you attempt to specify them as NULL, the system will throw an error. 기간 열에 NOT NULL을 명시적으로 지정 하지 않으면 시스템은 기본적으로 열을 NOT NULL로 정의 합니다.If you do not explicitly specify NOT NULL for a period column, the system will define the column as NOT NULL by default. 이 인수를 사용 하 여 PERIOD FOR SYSTEM_TIME 및 SYSTEM_VERSIONING와 함께 = 테이블에 시스템 버전 관리를 사용 하도록 설정 하려면 인수에 대 한 합니다.Use this argument in conjunction with the PERIOD FOR SYSTEM_TIME and WITH SYSTEM_VERSIONING = ON arguments to enable system versioning on a table. 자세한 내용은 Temporal Tables을 참조하세요.For more information, see Temporal Tables.

    하나 또는 둘 다 기간 열을 표시할 수 있습니다 HIDDEN 암시적으로 이러한 열 숨기기 위한 플래그를 되도록 선택 * FROM <table> 하지 않습니다 이 열에 값을 반환 합니다.You can mark one or both period columns with HIDDEN flag to implicitly hide these columns such that SELECT * FROM<table> does not return a value for those columns. 기본적으로 기간 열 숨겨지지 않습니다.By default, period columns are not hidden. 를 사용 하려면 숨겨진된 열 임시 테이블을 직접 참조 하는 모든 쿼리에 명시적으로 포함 되어야 합니다.In order to be used, hidden columns must be explicitly included in all queries that directly reference the temporal table. 변경 하는 HIDDEN 기존 기간 열에 대 한 특성 기간 삭제 하 고 다른 숨겨진 플래그로 다시 생성 해야 합니다.To change the HIDDEN attribute for an existing period column, PERIOD must be dropped and recreated with a different hidden flag.

    INDEX *index_name* [ CLUSTERED | NONCLUSTERED ] (*column_name* [ ASC | DESC ] [ ,... *n* ] )

적용 대상: SQL Server 2014SQL Server 2014 통해 SQL Server 2017SQL Server 2017Azure SQL 데이터베이스Azure SQL Database합니다.Applies to: SQL Server 2014SQL Server 2014 through SQL Server 2017SQL Server 2017 and Azure SQL 데이터베이스Azure SQL Database.

테이블에 인덱스를 만들를 지정 합니다.Specifies to create an index on the table. 이 클러스터형 인덱스나 비클러스터형된 인덱스 수 있습니다.This can be a clustered index, or a nonclustered index. 인덱스 나열 된 열이 포함 되어 및 데이터를 오름차순 또는 내림차순 정렬 됩니다.The index will contain the columns listed, and will sort the data in either ascending or descending order.

인덱스 index_name CLUSTERED COLUMNSTOREINDEX index_name CLUSTERED COLUMNSTORE

적용 대상: SQL Server 2014SQL Server 2014 통해 SQL Server 2017SQL Server 2017Azure SQL 데이터베이스Azure SQL Database합니다.Applies to: SQL Server 2014SQL Server 2014 through SQL Server 2017SQL Server 2017 and Azure SQL 데이터베이스Azure SQL Database.

클러스터형된 columnstore 인덱스가 있는 열 형식에는 전체 테이블을 저장 하도록 지정 합니다.Specifies to store the entire table in columnar format with a clustered columnstore index. 이 항상 테이블의 모든 열을 포함 합니다.This always includes all columns in the table. 데이터가 행 columnstore 압축 향상을 구성 하는 이후 영문자 또는 숫자 순서로 정렬 되지 않은 합니다.The data is not sorted in alphabetical or numeric order since the rows are organized to gain columnstore compression benefits.

인덱스 index_name [NONCLUSTERED] COLUMNSTORE (column_name [,... n ] )INDEX index_name [ NONCLUSTERED ] COLUMNSTORE (column_name [ ,... n ] )

적용 대상: SQL Server 2014SQL Server 2014 통해 SQL Server 2017SQL Server 2017Azure SQL 데이터베이스Azure SQL Database합니다.Applies to: SQL Server 2014SQL Server 2014 through SQL Server 2017SQL Server 2017 and Azure SQL 데이터베이스Azure SQL Database.

테이블에 비클러스터형 columnstore 인덱스를 만들려면를 지정 합니다.Specifies to create a nonclustered columnstore index on the table. Rowstore 힙 또는 클러스터형된 인덱스를 사용 하는 테이블이 될 수 있습니다 또는 클러스터형된 columnstore 인덱스를 수 있습니다.The underlying table can be a rowstore heap or clustered index, or it can be a clustered columnstore index. 모든 경우에 테이블에 비클러스터형 columnstore 인덱스를 만들 인덱스의 열에 대 한 데이터의 두 번째 복사본을 저장 합니다.In all cases, creating a nonclustered columnstore index on a table stores a second copy of the data for the columns in the index.

비클러스터형 columnstore 인덱스가 저장 되 고 클러스터형된 columnstore 인덱스로 관리 합니다.The nonclustered columnstore index is stored and managed as a clustered columnstore index. 에 대 한 비클러스터형 columnstore 인덱스가 열 제한 될 수 있습니다에 보조 인덱스는 테이블에 존재 하기 때문에 호출 됩니다.It is called a nonclustered columnstore index to because the columns can be limited and it exists as a secondary index on a table.

ON partition_scheme_name(column_name)ON partition_scheme_name(column_name)
분할된 인덱스의 파티션이 매핑될 파일 그룹을 정의하는 파티션 구성표를 지정합니다.Specifies the partition scheme that defines the filegroups onto which the partitions of a partitioned index will be mapped. 실행 하 여 파티션 구성표는 데이터베이스 내에 있어야 CREATE PARTITION SCHEME 또는 ALTER PARTITION SCHEME합니다.The partition scheme must exist within the database by executing either CREATE PARTITION SCHEME or ALTER PARTITION SCHEME. column_name 된 분할 된 인덱스가 분할 될 열을 지정 합니다.column_name specifies the column against which a partitioned index will be partitioned. 이 열에는 데이터 형식, 길이, 일치 해야 하 고는 함수에 파티션의 전체 자릿수가 partition_scheme_name 사용 합니다.This column must match the data type, length, and precision of the argument of the partition function that partition_scheme_name is using. column_name 인덱스 정의의 열에 제한 되지 않습니다.column_name is not restricted to the columns in the index definition. 기본 테이블의 모든 열을 지정할 수는 경우 고유 인덱스를 분할 하는 제외 하 고 column_name 고유 키로 사용 되는 선택 해야 합니다.Any column in the base table can be specified, except when partitioning a UNIQUE index, column_name must be chosen from among those used as the unique key. 이 제한 사항으로 인해 데이터베이스 엔진Database Engine은 단일 파티션 내에서만 키 값의 고유성을 확인할 수 있습니다.This restriction allows the 데이터베이스 엔진Database Engine to verify uniqueness of key values within a single partition only.

참고

비고유 클러스터형 인덱스를 분할하는 경우 데이터베이스 엔진Database Engine은 기본적으로 지정되지 않은 분할 열을 클러스터형 인덱스 키 목록에 추가합니다.When you partition a non-unique, clustered index, the 데이터베이스 엔진Database Engine by default adds the partitioning column to the list of clustered index keys, if it is not already specified. 비고유 비클러스터형 인덱스를 분할하는 경우 데이터베이스 엔진Database Engine은 지정되지 않은 분할 열을 인덱스의 키가 아닌 포괄 열로 추가합니다.When partitioning a non-unique, nonclustered index, the 데이터베이스 엔진Database Engine adds the partitioning column as a non-key (included) column of the index, if it is not already specified.

경우 partition_scheme_name 또는 파일 그룹 지정 하지 않으면 테이블이 분할 된 하 고, 동일한 분할 열을 사용 하 여 기본 테이블과 동일한 파티션 구성표에 인덱스가 있습니다.If partition_scheme_name or filegroup is not specified and the table is partitioned, the index is placed in the same partition scheme, using the same partitioning column, as the underlying table.

참고

XML 인덱스에서 파티션 구성표를 지정할 수 없습니다.You cannot specify a partitioning scheme on an XML index. 기본 테이블이 분할되면 XML 인덱스는 테이블과 동일한 파티션 구성표를 사용합니다.If the base table is partitioned, the XML index uses the same partition scheme as the table.

인덱스를 분할 하는 방법에 대 한 자세한 내용은 Partitioned Tables and Indexes합니다.For more information about partitioning indexes, Partitioned Tables and Indexes.

ON filegroup_nameON filegroup_name
주어진 파일 그룹에 지정된 인덱스를 만듭니다.Creates the specified index on the specified filegroup. 지정된 위치가 없고 테이블 또는 뷰가 분할되지 않은 경우 인덱스는 동일한 파일 그룹을 기본 테이블 또는 뷰로 사용합니다.If no location is specified and the table or view is not partitioned, the index uses the same filegroup as the underlying table or view. 파일 그룹은 이미 존재해야 합니다.The filegroup must already exist.

ON "기본"ON "default"
기본 파일 그룹에 지정된 인덱스를 만듭니다.Creates the specified index on the default filegroup.

이 컨텍스트에서 default는 키워드가 아닙니다.The term default, in this context, is not a keyword. 기본 파일 그룹에 대 한 식별자 이며 ON 같이 구분 되어야 합니다 "기본" 또는 ON [기본]합니다.It is an identifier for the default filegroup and must be delimited, as in ON "default" or ON [default]. "default"를 지정하면 현재 세션의 QUOTED_IDENTIFIER 옵션이 ON이어야 합니다.If "default" is specified, the QUOTED_IDENTIFIER option must be ON for the current session. 이 값은 기본 설정입니다.This is the default setting. 자세한 내용은 SET QUOTED_IDENTIFIER(Transact-SQL)를 참조하세요.For more information, see SET QUOTED_IDENTIFIER (Transact-SQL).

[FILESTREAM_ON { filestream_filegroup_name | partition_scheme_name | "NULL"을 (를)][ FILESTREAM_ON { filestream_filegroup_name | partition_scheme_name | "NULL" } ]

적용 대상: SQL ServerSQL Server.Applies to: SQL ServerSQL Server.

클러스터형 인덱스를 만들 때 테이블에 대한 FILESTREAM 데이터의 위치를 지정합니다.Specifies the placement of FILESTREAM data for the table when a clustered index is created. FILESTREAM_ON 절에서 FILESTREAM 데이터를 다른 FILESTREAM 파일 그룹 또는 파티션 구성표로 이동할 수 있습니다.The FILESTREAM_ON clause allows FILESTREAM data to be moved to a different FILESTREAM filegroup or partition scheme.

filestream_filegroup_name FILESTREAM 파일 그룹의 이름입니다.filestream_filegroup_name is the name of a FILESTREAM filegroup. 파일 그룹에 사용 하 여 파일 그룹에 대해 정의 된 한 파일이 있어야 합니다.는 CREATE DATABASE 또는 ALTER DATABASE 문을; 그렇지 않으면 오류가 발생 합니다.The filegroup must have one file defined for the filegroup by using a CREATE DATABASE or ALTER DATABASE statement; otherwise, an error is raised.

테이블이 분할된 경우에는 FILESTREAM_ON 절이 포함되어야 하며 이 절에서 테이블의 파티션 구성표와 동일한 파티션 함수 및 파티션 열을 사용하는 FILESTREAM 파일 그룹의 파티션 구성표를 지정해야 합니다.If the table is partitioned, the FILESTREAM_ON clause must be included and must specify a partition scheme of FILESTREAM filegroups that uses the same partition function and partition columns as the partition scheme for the table. 그렇지 않으면 오류가 발생합니다.Otherwise, an error is raised.

테이블이 분할되지 않은 경우에는 FILESTREAM 열을 분할할 수 없습니다.If the table is not partitioned, the FILESTREAM column cannot be partitioned. 테이블의 FILESTREAM 데이터는 FILESTREAM_ON 절에 지정된 단일 파일 그룹에 저장되어야 합니다.FILESTREAM data for the table must be stored in a single filegroup that is specified in the FILESTREAM_ON clause.

클러스터형 인덱스가 생성되고 있고 테이블에 FILESTREAM 열이 포함되지 않은 경우 CREATE INDEX 문에 FILESTREAM_ON NULL을 지정할 수 있습니다.FILESTREAM_ON NULL can be specified in a CREATE INDEX statement if a clustered index is being created and the table does not contain a FILESTREAM column.

자세한 내용은 FILESTREAM(SQL Server)을 참조하세요.For more information, see FILESTREAM (SQL Server).

ROWGUIDCOLROWGUIDCOL
새 열이 행 GUID 열임을 나타냅니다.Indicates that the new column is a row GUID column. 하나의 uniqueidentifier 테이블당 열 ROWGUIDCOL 열으로 지정 될 수 있습니다.Only one uniqueidentifier column per table can be designated as the ROWGUIDCOL column. ROWGUIDCOL 속성을 적용하면 $ROWGUID를 사용하여 열을 참조할 수 있습니다.Applying the ROWGUIDCOL property enables the column to be referenced using $ROWGUID. ROWGUIDCOL 속성에만 할당할 수는 uniqueidentifier 열입니다.The ROWGUIDCOL property can be assigned only to a uniqueidentifier column. 사용자 정의 데이터 형식 열은 ROWGUIDCOL로 지정할 수 없습니다.User-defined data type columns cannot be designated with ROWGUIDCOL.

ROWGUIDCOL 속성은 열에 저장된 값이 고유하도록 강제 적용하지 않습니다.The ROWGUIDCOL property does not enforce uniqueness of the values stored in the column. 또한 테이블에 삽입된 새 행에 대한 값을 자동으로 생성하지도 않습니다.ROWGUIDCOL also does not automatically generate values for new rows inserted into the table. 각 열에 대해 고유한 값을 생성, 사용 하 여는 NEWID 또는 NEWSEQUENTIALID 작동 삽입 문에 대 한 기본값으로 이러한 함수를 사용 하거나는 열입니다.To generate unique values for each column, either use the NEWID or NEWSEQUENTIALID function on INSERT statements or use these functions as the default for the column.

사용 하 여 암호화ENCRYPTED WITH
암호화 열을 사용 하 여 지정 된 항상 암호화 기능입니다.Specifies encrypting columns by using the Always Encrypted feature.

COLUMN_ENCRYPTION_KEY = key_nameCOLUMN_ENCRYPTION_KEY = key_name
열 암호화 키를 지정합니다.Specifies the column encryption key. 자세한 내용은 참조 열 암호화 키 만들기 ( Transact SQL ) .For more information, see CREATE COLUMN ENCRYPTION KEY (Transact-SQL).

ENCRYPTION_TYPE = {결정적 | 임의}ENCRYPTION_TYPE = { DETERMINISTIC | RANDOMIZED }
결정적 암호화 는 지정된 일반 텍스트 값에 대해 항상 동일한 암호화된 값을 생성하는 방법을 사용합니다.Deterministic encryption uses a method which always generates the same encrypted value for any given plain text value. 결정적 암호화를 사용 하 여 같음 비교를 암호화 된 값을 기반으로 동등 조인을 사용 하 여 테이블 조인 및 그룹화를 사용 하 여 검색을 허용 하지만 패턴을 검사 하 여 암호화 된 값에 대 한 정보를 추측할 권한이 없는 사용자가 사용할 수 있습니다. 암호화 된 열입니다.Using deterministic encryption allows searching using equality comparison, grouping, and joining tables using equality joins based on encrypted values, but can also allow unauthorized users to guess information about encrypted values by examining patterns in the encrypted column. 명확 하 게 암호화 된 열에서 두 테이블을 조인는 두 열은 동일한 열 암호화 키를 사용 하 여 암호화 하는 경우에 가능 합니다.Joining two tables on columns encrypted deterministically is only possible if both columns are encrypted using the same column encryption key. 결정적 암호화에서는 문자 열에 대해 binary2 정렬 순서를 적용하는 열 데이터 정렬을 사용해야 합니다.Deterministic encryption must use a column collation with a binary2 sort order for character columns.

임의 암호화 는 예측하기 어려운 방식으로 데이터를 암호화하는 방법을 사용합니다.Randomized encryption uses a method that encrypts data in a less predictable manner. 임의 암호화는 더 안전 하지만 동등 검색, 그룹화 및 암호화 된 열에서 조인를 금지 합니다.Randomized encryption is more secure, but prevents equality searches, grouping, and joining on encrypted columns. 임의 암호화를 사용 하 여 열을 인덱싱할 수 없습니다.Columns using randomized encryption cannot be indexed.

한 열을 검색 매개 변수 또는 그룹화 매개 변수를 예: 정부 ID 번호에 대 한 결정적 암호화를 사용 합니다.Use deterministic encryption for columns that will be search parameters or grouping parameters, for example a government ID number. 임의 암호화를 사용 하 여, 신용 카드 번호 등 데이터용 하지 다른 레코드와 같은 그룹에 있거나, 테이블과 조인 하는 검색 되지 않습니다에 대 한 암호화 된 포함 된 행을 찾습니다 (예: transaction number) 다른 열을 사용 하는 데 사용 관심 있는 열입니다.Use randomized encryption, for data such as a credit card number, which is not grouped with other records, or used to join tables, and which is not searched for because you use other columns (such as a transaction number) to find the row which contains the encrypted column of interest.

조건에 맞는 데이터 형식의 열 이어야 합니다.Columns must be of a qualifying data type.

알고리즘ALGORITHM
해야 'AEAD_AES_256_CBC_HMAC_SHA_256'합니다.Must be 'AEAD_AES_256_CBC_HMAC_SHA_256'.

기능 제약 조건을 비롯 한 자세한 내용은 참조 하십시오. 상시 암호화 ( 데이터베이스 엔진 )합니다.For more information including feature constraints, see Always Encrypted (Database Engine).

적용 대상: SQL Server 2016SQL Server 2016 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2016SQL Server 2016 through SQL Server 2017SQL Server 2017.

SPARSESPARSE
열이 스파스 열임을 나타냅니다.Indicates that the column is a sparse column. 스파스 열의 저장소는 Null 값에 대해 최적화됩니다.The storage of sparse columns is optimized for null values. 스파스 열은 NOT NULL로 지정할 수 없습니다.Sparse columns cannot be designated as NOT NULL. 추가 제한 사항 및 스파스 열에 대 한 자세한 내용은 참조 스파스 열을 사용 하 여합니다.For additional restrictions and more information about sparse columns, see Use Sparse Columns.

마스크 된 (함수 = ' mask_function ')MASKED WITH ( FUNCTION = ' mask_function ')
적용 대상: SQL Server 2016SQL Server 2016 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2016SQL Server 2016 through SQL Server 2017SQL Server 2017.

동적 데이터 마스크를 지정합니다.Specifies a dynamic data mask. mask_function 적절 한 매개 변수를 사용 하 여 마스킹 함수 이름입니다.mask_function is the name of the masking function with the appropriate parameters. 세 개의 함수를 사용할 수 있습니다.Three functions are available:

적용 대상: SQL ServerSQL Server.Applies to: SQL ServerSQL Server.

에 대해서만 유효 varbinary (max) 열입니다.Valid only for varbinary(max) columns. 에 대 한 FILESTREAM 저장소를 지정 된 varbinary (max) BLOB 데이터입니다.Specifies FILESTREAM storage for the varbinary(max) BLOB data.

테이블의 열이 있어야도 uniqueidentifier ROWGUIDCOL 특성을 갖는 데이터 형식입니다.The table must also have a column of the uniqueidentifier data type that has the ROWGUIDCOL attribute. 이 열은 Null 값을 허용하지 않으며 UNIQUE 또는 PRIMARY KEY 단일 열 제약 조건을 가져야 합니다.This column must not allow null values and must have either a UNIQUE or PRIMARY KEY single-column constraint. 열의 GUID 값은 응용 프로그램에서 데이터를 삽입할 때 제공하거나 NEWID () 함수를 사용하는 DEFAULT 제약 조건을 통해 제공해야 합니다.The GUID value for the column must be supplied either by an application when inserting data, or by a DEFAULT constraint that uses the NEWID () function.

테이블에 대해 정의된 FILESTREAM 열이 있는 동안에는 ROWGUIDCOL 열을 삭제하고 관련 제약 조건을 변경할 수 없습니다.The ROWGUIDCOL column cannot be dropped and the related constraints cannot be changed while there is a FILESTREAM column defined for the table. ROWGUIDCOL 열은 마지막 FILESTREAM 열이 삭제된 이후에만 삭제될 수 있습니다.The ROWGUIDCOL column can be dropped only after the last FILESTREAM column is dropped.

열에 대해 FILESTREAM 저장소 특성이 지정된 경우 해당 열의 모든 값이 파일 시스템에 있는 FILESTREAM 데이터 컨테이너에 저장됩니다.When the FILESTREAM storage attribute is specified for a column, all values for that column are stored in a FILESTREAM data container on the file system.

COLLATE 데이터 정렬 이름COLLATE collation_name
열에 대한 데이터 정렬을 지정합니다.Specifies the collation for the column. 데이터 정렬 이름으로는 Windows 데이터 정렬 이름 또는 SQL 데이터 정렬 이름을 사용할 수 있습니다.Collation name can be either a Windows collation name or an SQL collation name. 데이터 정렬 이름 의 열에만 적용할 수는 char, varchar, 텍스트, nchar, nvarchar, 및 ntext 데이터 형식입니다.collation_name is applicable only for columns of the char, varchar, text, nchar, nvarchar, and ntext data types. 지정하지 않은 경우 열이 사용자 정의 데이터 형식이면 사용자 정의 데이터 형식의 데이터 정렬에 열이 할당되고 그렇지 않은 경우에는 데이터베이스의 기본 데이터 정렬에 할당됩니다.If not specified, the column is assigned either the collation of the user-defined data type, if the column is of a user-defined data type, or the default collation of the database.

Windows 및 SQL 데이터 정렬 이름에 대 한 자세한 내용은 참조 Windows 데이터 정렬 이름SQL 데이터 정렬 이름합니다.For more information about the Windows and SQL collation names, see Windows Collation Name and SQL Collation Name.

COLLATE 절에 대 한 자세한 내용은 참조 하십시오. collate( Transact SQL ) .For more information about the COLLATE clause, see COLLATE (Transact-SQL).

CONSTRAINTCONSTRAINT
PRIMARY KEY, NOT NULL, UNIQUE, FOREIGN KEY 또는 CHECK 제약 조건 정의의 시작을 표시하는 선택적인 키워드입니다.Is an optional keyword that indicates the start of the definition of a PRIMARY KEY, NOT NULL, UNIQUE, FOREIGN KEY, or CHECK constraint.

제약 조건 이름constraint_name
제약 조건의 이름입니다.Is the name of a constraint. 제약 조건 이름은 테이블이 속한 스키마 내에서 고유한 이름이어야 합니다.Constraint names must be unique within the schema to which the table belongs.

NULL | NOT NULLNULL | NOT NULL
열의 Null 값 허용 여부를 결정합니다.Determine whether null values are allowed in the column. NULL은 엄격하게 말해 제약 조건이 아니지만 NOT NULL처럼 지정할 수 있습니다.NULL is not strictly a constraint but can be specified just like NOT NULL. 계산 열에서는 PERSISTED를 지정한 경우에만 NOT NULL을 지정할 수 있습니다.NOT NULL can be specified for computed columns only if PERSISTED is also specified.

PRIMARY KEYPRIMARY KEY
지정한 열에 고유 인덱스를 통해 엔터티 무결성을 적용하는 제약 조건입니다.Is a constraint that enforces entity integrity for a specified column or columns through a unique index. PRIMARY KEY 제약 조건은 각 테이블마다 하나만 만들 수 있습니다.Only one PRIMARY KEY constraint can be created per table.

UNIQUEUNIQUE
지정한 열에 대해 고유 인덱스를 통해 엔터티 무결성을 적용하는 제약 조건입니다.Is a constraint that provides entity integrity for a specified column or columns through a unique index. 하나의 테이블이 여러 개의 UNIQUE 제약 조건을 가질 수 있습니다.A table can have multiple UNIQUE constraints.

CLUSTERED | NONCLUSTEREDCLUSTERED | NONCLUSTERED
PRIMARY KEY 또는 UNIQUE 제약 조건에 대해 클러스터형 또는 비클러스터형 인덱스를 만들도록 지정합니다.Indicate that a clustered or a nonclustered index is created for the PRIMARY KEY or UNIQUE constraint. PRIMARY KEY 제약 조건의 기본값은 CLUSTERED이며 UNIQUE 제약 조건의 기본값은 NONCLUSTERED입니다.PRIMARY KEY constraints default to CLUSTERED, and UNIQUE constraints default to NONCLUSTERED.

CREATE TABLE 문에서는 한 가지 제약 조건에만 CLUSTERED를 지정할 수 있습니다.In a CREATE TABLE statement, CLUSTERED can be specified for only one constraint. UNIQUE 제약 조건에 대해 CLUSTERED를 지정하고 PRIMARY KEY 제약 조건도 지정한 경우 PRIMARY KEY의 기본값은 NONCLUSTERED입니다.If CLUSTERED is specified for a UNIQUE constraint and a PRIMARY KEY constraint is also specified, the PRIMARY KEY defaults to NONCLUSTERED.

다음은 디스크 기반 테이블에 있는 비클러스터형을 사용하는 방법을 보여 줍니다.The following shows how to use NONCLUSTERED in a disk-based table:

CREATE TABLE t1 ( c1 int, INDEX ix_1 NONCLUSTERED (c1))   
CREATE TABLE t2( c1 int INDEX ix_1 NONCLUSTERED (c1))   
CREATE TABLE t3( c1 int, c2 int INDEX ix_1 NONCLUSTERED)   
CREATE TABLE t4( c1 int, c2 int, INDEX ix_1 NONCLUSTERED (c1,c2))  

FOREIGN KEY REFERENCESFOREIGN KEY REFERENCES
열에 있는 데이터에 대한 참조 무결성을 제공하는 제약 조건입니다.Is a constraint that provides referential integrity for the data in the column or columns. FOREIGN KEY 제약 조건을 지정하려면 열의 각 값이 참조된 테이블의 참조된 해당 열에 있어야 합니다.FOREIGN KEY constraints require that each value in the column exists in the corresponding referenced column or columns in the referenced table. FOREIGN KEY 제약 조건은 참조되는 테이블의 PRIMARY KEY 또는 UNIQUE 제약 조건 열이나 참조되는 테이블의 UNIQUE INDEX에서 참조되는 열만 참조할 수 있습니다.FOREIGN KEY constraints can reference only columns that are PRIMARY KEY or UNIQUE constraints in the referenced table or columns referenced in a UNIQUE INDEX on the referenced table. 계산 열의 외래 키 또한 PERSISTED로 표시되어야 합니다.Foreign keys on computed columns must also be marked PERSISTED.

[ schema_name.] referenced_table_name][ schema_name.] referenced_table_name]
FOREIGN KEY 제약 조건이 참조하는 테이블과 그 테이블이 속한 스키마의 이름입니다.Is the name of the table referenced by the FOREIGN KEY constraint, and the schema to which it belongs.

( ref_column [ ,... n ] )( ref_column [ ,... n ] )
FOREIGN KEY 제약 조건이 참조하는 테이블의 열 또는 열 목록입니다.Is a column, or list of columns, from the table referenced by the FOREIGN KEY constraint.

ON DELETE { 아무 작업도 | CASCADE | SET NULL | SET DEFAULT}ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT }
행이 참조 관계를 가지고 참조된 행이 부모 테이블에서 삭제될 경우에 테이블의 행에 수행될 동작을 지정합니다.Specifies what action happens to rows in the table created, if those rows have a referential relationship and the referenced row is deleted from the parent table. 기본값은 NO ACTION입니다.The default is NO ACTION.

NO ACTIONNO ACTION
데이터베이스 엔진Database Engine에서는 오류가 발생하며 부모 테이블의 행에 대한 삭제 동작이 롤백됩니다.The 데이터베이스 엔진Database Engine raises an error and the delete action on the row in the parent table is rolled back.

CASCADECASCADE
부모 테이블에서 행을 삭제한 경우 참조 테이블에서 해당 행이 삭제됩니다.Corresponding rows are deleted from the referencing table if that row is deleted from the parent table.

SET NULLSET NULL
부모 테이블에서 해당 행을 삭제하면 외래 키를 구성하는 모든 값이 NULL로 설정됩니다.All the values that make up the foreign key are set to NULL if the corresponding row in the parent table is deleted. 이 제약 조건을 실행하려면 외래 키 열이 Null을 허용해야 합니다.For this constraint to execute, the foreign key columns must be nullable.

SET DEFAULTSET DEFAULT
부모 테이블에서 해당 행을 삭제하면 외래 키를 구성하는 모든 값이 기본값으로 설정됩니다.All the values that make up the foreign key are set to their default values if the corresponding row in the parent table is deleted. 이 제약 조건을 실행하려면 모든 외래 키 열에 기본 정의가 있어야 합니다.For this constraint to execute, all foreign key columns must have default definitions. 열이 Null을 허용하고 명시적 기본값이 설정되어 있지 않은 경우 NULL은 해당 열의 암시적 기본값이 됩니다.If a column is nullable, and there is no explicit default value set, NULL becomes the implicit default value of the column.

논리적 레코드를 사용하는 병합 게시에 테이블이 포함되는 경우 CASCADE를 지정하지 마세요.Do not specify CASCADE if the table will be included in a merge publication that uses logical records. 논리적 레코드에 대한 자세한 내용은 논리적 레코드를 사용하여 관련된 행의 변경 내용 그룹화를 참조하세요.For more information about logical records, see Group Changes to Related Rows with Logical Records.

해당 테이블에 INSTEAD OF 트리거 ON DELETE가 이미 있으면 ON DELETE CASCADE를 정의할 수 없습니다.ON DELETE CASCADE cannot be defined if an INSTEAD OF trigger ON DELETE already exists on the table.

예를 들어는 AdventureWorks2012AdventureWorks2012 데이터베이스는 ProductVendor 테이블에 참조 관계를는 공급 업체 테이블입니다.For example, in the AdventureWorks2012AdventureWorks2012 database, the ProductVendor table has a referential relationship with the Vendor table. ProductVendor.BusinessEntityID 외래 키 참조는 Vendor.BusinessEntityID 기본 키입니다.The ProductVendor.BusinessEntityID foreign key references the Vendor.BusinessEntityID primary key.

행에 대해 DELETE 문을 실행 하는 경우는 공급 업체 테이블과 ON DELETE CASCADE 동작에 지정 된 ProductVendor.BusinessEntityID, 데이터베이스 엔진Database Engine 하나 이상의 종속을 확인 합니다. 행의 ProductVendor 테이블입니다.If a DELETE statement is executed on a row in the Vendor table, and an ON DELETE CASCADE action is specified for ProductVendor.BusinessEntityID, the 데이터베이스 엔진Database Engine checks for one or more dependent rows in the ProductVendor table. 에 종속 행이 있는 경우는 ProductVendor 테이블 삭제 되 고 해당 행에서 참조 되는 또한는 공급 업체 테이블입니다.If any exist, the dependent rows in the ProductVendor table are deleted, and also the row referenced in the Vendor table.

반대로 NO ACTION을 지정한 경우는 데이터베이스 엔진Database Engine 오류가 발생 하 고 삭제 동작이 롤백됩니다는 공급 업체 에 하나 이상의 행이 행의 ProductVendor 참조 하는 테이블입니다.Conversely, if NO ACTION is specified, the 데이터베이스 엔진Database Engine raises an error and rolls back the delete action on the Vendor row if there is at least one row in the ProductVendor table that references it.

업데이트 시 { 아무 작업도 | CASCADE | SET NULL | SET DEFAULT}ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT }
변경된 테이블의 행에 참조 관계가 있고 참조된 행이 부모 테이블에서 업데이트될 경우 해당 행에 대해 발생할 동작을 지정합니다.Specifies what action happens to rows in the table altered when those rows have a referential relationship and the referenced row is updated in the parent table. 기본값은 NO ACTION입니다.The default is NO ACTION.

NO ACTIONNO ACTION
데이터베이스 엔진Database Engine에서는 오류가 발생하며 부모 테이블의 행에 대한 업데이트 동작이 롤백됩니다.The 데이터베이스 엔진Database Engine raises an error, and the update action on the row in the parent table is rolled back.

CASCADECASCADE
부모 테이블에서 행이 업데이트될 때 참조 테이블에서도 해당 행이 업데이트됩니다.Corresponding rows are updated in the referencing table when that row is updated in the parent table.

SET NULLSET NULL
부모 테이블에서 행을 업데이트하면 해당 외래 키를 구성하는 모든 값이 NULL로 설정됩니다.All the values that make up the foreign key are set to NULL when the corresponding row in the parent table is updated. 이 제약 조건을 실행하려면 외래 키 열이 Null을 허용해야 합니다.For this constraint to execute, the foreign key columns must be nullable.

SET DEFAULTSET DEFAULT
부모 테이블에서 행을 업데이트하면 해당 외래 키를 구성하는 모든 값이 기본값으로 설정됩니다.All the values that make up the foreign key are set to their default values when the corresponding row in the parent table is updated. 이 제약 조건을 실행하려면 모든 외래 키 열에 기본 정의가 있어야 합니다.For this constraint to execute, all foreign key columns must have default definitions. 열이 Null을 허용하고 명시적 기본값이 설정되어 있지 않은 경우 NULL은 해당 열의 암시적 기본값이 됩니다.If a column is nullable, and there is no explicit default value set, NULL becomes the implicit default value of the column.

논리적 레코드를 사용하는 병합 게시에 테이블이 포함되는 경우 CASCADE를 지정하지 마세요.Do not specify CASCADE if the table will be included in a merge publication that uses logical records. 논리적 레코드에 대한 자세한 내용은 논리적 레코드를 사용하여 관련된 행의 변경 내용 그룹화를 참조하세요.For more information about logical records, see Group Changes to Related Rows with Logical Records.

변경할 테이블에 INSTEAD OF 트리거 ON UPDATE가 이미 존재하면 ON UPDATE CASCADE, SET NULL 또는 SET DEFAULT를 정의할 수 없습니다.ON UPDATE CASCADE, SET NULL, or SET DEFAULT cannot be defined if an INSTEAD OF trigger ON UPDATE already exists on the table that is being altered.

예를 들어,는 AdventureWorks2012AdventureWorks2012 데이터베이스는 ProductVendor 테이블 간의 관계가 참조는 공급 업체 테이블: ProductVendor.BusinessEntity 외래 키 참조는 Vendor.BusinessEntityID 기본 키입니다.For example, in the AdventureWorks2012AdventureWorks2012 database, the ProductVendor table has a referential relationship with the Vendor table: ProductVendor.BusinessEntity foreign key references the Vendor.BusinessEntityID primary key.

행에 대 한 UPDATE 문을 실행 하는 경우는 공급 업체 에 지정 된 테이블 및 ON UPDATE CASCADE 동작 ProductVendor.BusinessEntityID, 데이터베이스 엔진Database Engine 하나 이상의 종속을 확인 합니다. 행의 ProductVendor 테이블입니다.If an UPDATE statement is executed on a row in the Vendor table, and an ON UPDATE CASCADE action is specified for ProductVendor.BusinessEntityID, the 데이터베이스 엔진Database Engine checks for one or more dependent rows in the ProductVendor table. 에 종속 행이 있는 경우는 ProductVendor 테이블 업데이트 되 고, 행에서 참조 되는 또한는 공급 업체 테이블입니다.If any exist, the dependent rows in the ProductVendor table are updated, and also the row referenced in the Vendor table.

반대로 NO ACTION을 지정한 경우는 데이터베이스 엔진Database Engine 오류가 발생 하 고 업데이트 동작이 롤백됩니다는 공급 업체 에 하나 이상의 행이 행의 ProductVendor 참조 하는 테이블입니다.Conversely, if NO ACTION is specified, the 데이터베이스 엔진Database Engine raises an error and rolls back the update action on the Vendor row if there is at least one row in the ProductVendor table that references it.

CHECKCHECK
열에 입력 가능한 값을 제한하여 도메인 무결성을 적용하는 제약 조건입니다.Is a constraint that enforces domain integrity by limiting the possible values that can be entered into a column or columns. 계산 열의 CHECK 제약 조건 또한 PERSISTED로 표시되어야 합니다.CHECK constraints on computed columns must also be marked PERSISTED.

logical_expressionlogical_expression
TRUE 또는 FALSE를 반환하는 논리 식입니다.Is a logical expression that returns TRUE or FALSE. 별칭 데이터 형식은 식에 포함될 수 없습니다.Alias data types cannot be part of the expression.

column
제약 조건 정의에서 사용하는 열을 표시하기 위해 테이블 제약 조건에서 괄호로 묶어 사용하는 열 또는 열 목록입니다.Is a column or list of columns, in parentheses, used in table constraints to indicate the columns used in the constraint definition.

[ ASC | DESC][ ASC | DESC ]
테이블 제약 조건에 사용되는 열의 정렬 순서를 지정합니다.Specifies the order in which the column or columns participating in table constraints are sorted. 기본값은 ASC입니다.The default is ASC.

partition_scheme_namepartition_scheme_name
분할된 테이블의 파티션이 매핑될 파일 그룹을 정의하는 파티션 구성표의 이름입니다.Is the name of the partition scheme that defines the filegroups onto which the partitions of a partitioned table will be mapped. 파티션 구성표는 데이터베이스 내에 있어야 합니다.The partition scheme must exist within the database.

[ partition_column_name합니다.[ partition_column_name. ]]
분할된 테이블의 분할 기준 열을 지정합니다.Specifies the column against which a partitioned table will be partitioned. 파티션에 지정 된 열과 일치 해야 하는 함수에 partition_scheme_name 데이터 형식, 길이 및 전체 자릿수에서 사용 합니다.The column must match that specified in the partition function that partition_scheme_name is using in terms of data type, length, and precision. 파티션 함수에 참여하는 계산 열은 명시적으로 PERSISTED로 표시되어야 합니다.A computed columns that participates in a partition function must be explicitly marked PERSISTED.

중요

분할된 테이블 및 ALTER TABLE...SWITCH 작업의 원본이나 대상인 분할되지 않은 테이블의 분할 열에 NOT NULL을 지정하는 것이 좋습니다.We recommend that you specify NOT NULL on the partitioning column of partitioned tables, and also nonpartitioned tables that are sources or targets of ALTER TABLE...SWITCH operations. 이렇게 하면 분할 열의 CHECK 제약 조건에서 Null 값을 확인하지 않아도 됩니다.Doing this makes sure that any CHECK constraints on partitioning columns do not have to check for null values.

FILLFACTOR로 = fillfactorWITH FILLFACTOR =fillfactor
데이터베이스 엔진Database Engine이 인덱스 데이터를 저장하는 데 사용하는 각 인덱스 페이지를 채우는 정도를 지정합니다.Specifies how full the 데이터베이스 엔진Database Engine should make each index page that is used to store the index data. 사용자 지정 fillfactor 값은 1에서 100 사이일 수 있습니다.User-specified fillfactor values can be from 1 through 100. 값을 지정하지 않으면 기본값 0이 사용됩니다.If a value is not specified, the default is 0. 채우기 비율 값 0과 100은 모든 면에서 동일합니다.Fill factor values 0 and 100 are the same in all respects.

중요

현재 WITH FILLFACTOR = fillfactor 해제 PRIMARY KEY 또는 UNIQUE 제약 조건에 적용 되는 유일한 인덱스 옵션은 이전 버전과 호환성을 위해 유지 관리 하지만 나중에이 방식으로 설명 하지 것입니다.Documenting WITH FILLFACTOR = fillfactor as the only index option that applies to PRIMARY KEY or UNIQUE constraints is maintained for backward compatibility, but will not be documented in this manner in future releases.

column_set_name ALL_SPARSE_COLUMNS에 대 한 XML COLUMN_SETcolumn_set_name XML COLUMN_SET FOR ALL_SPARSE_COLUMNS
열 집합의 이름입니다.Is the name of the column set. 열 집합은 구조화된 출력으로 테이블의 모든 스파스 열을 결합하는 형식화되지 않은 XML 표현입니다.A column set is an untyped XML representation that combines all of the sparse columns of a table into a structured output. 열 집합에 대한 자세한 내용은 열 집합 사용을 참조하세요.For more information about column sets, see Use Column Sets.

PERIOD FOR SYSTEM_TIME (system_start_time_column_name , system_end_time_column_name )PERIOD FOR SYSTEM_TIME (system_start_time_column_name , system_end_time_column_name )

적용 대상: SQL Server 2016SQL Server 2016 통해 SQL Server 2017SQL Server 2017Azure SQL 데이터베이스Azure SQL Database합니다.Applies to: SQL Server 2016SQL Server 2016 through SQL Server 2017SQL Server 2017 and Azure SQL 데이터베이스Azure SQL Database.

시스템에서 사용 하는 레코드의 유효 기간을 기록 하는 열의 이름을 지정 합니다.Specifies the names of the columns that the system will use to record the period for which a record is valid. 이 인수는 생성 된 항상 AS 행과 함께에서 사용 하 여 {시작 | 최종} 테이블에 시스템 버전 관리를 사용 하도록 설정 하려면 인수에 대해 SYSTEM_VERSIONING = 및 합니다.Use this argument in conjunction with the GENERATED ALWAYS AS ROW { START | END } and WITH SYSTEM_VERSIONING = ON arguments to enable system versioning on a table. 자세한 내용은 Temporal Tables을 참조하세요.For more information, see Temporal Tables.

COMPRESSION_DELAYCOMPRESSION_DELAY

적용 대상: SQL Server 2016SQL Server 2016 통해 SQL Server 2017SQL Server 2017Azure SQL 데이터베이스Azure SQL Database합니다.Applies to: SQL Server 2016SQL Server 2016 through SQL Server 2017SQL Server 2017 and Azure SQL 데이터베이스Azure SQL Database.

메모리 액세스에 최적화에 대 한 지연 columnstore 인덱스에 압축에 적합 하기 전에 변경 되지 않은 테이블에 행이 유지 되어야 하는 시간 (분)의 최소 수를 지정 합니다.For a memory-optimized, delay specifies the minimum number of minutes a row must remain in the table, unchanged, before it is eligible for compression into the columnstore index. SQL Server는 마지막 업데이트 시간에 따라 압축 하려면 특정 행을 선택 합니다.SQL Server selects specific rows to compress according to their last update time. 예를 들어 행 2 시간 일정 기간 동안에 자주 변경 하는 경우 COMPRESSION_DELAY 설정할 수 = 업데이트 완료 된 후에 SQL Server는 행 압축 되도록 120 분입니다.For example, if rows are changing frequently during a two-hour period of time, you could set COMPRESSION_DELAY = 120 Minutes to ensure updates are completed before SQL Server compresses the row.

디스크 기반 테이블에 대 한 지연 SQL Server는 압축 된 행 그룹으로 압축할 수 전에 델타 행 그룹에 델타 행 그룹을 CLOSED 상태에서 유지 되어야 하는 시간 (분)의 최소 수를 지정 합니다.For a disk-based table, delay specifies the minimum number of minutes a delta rowgroup in the CLOSED state must remain in the delta rowgroup before SQL Server can compress it into the compressed rowgroup. 디스크 기반 테이블에서 insert를 관리 하 고 업데이트할 하지 이후 시간에 개별 행을 SQL Server에 적용 됩니다 지연 CLOSED 상태에서 델타 행 그룹입니다.Since disk-based tables don't track insert and update times on individual rows, SQL Server applies the delay to delta rowgroups in the CLOSED state.

기본값은 0 분입니다.The default is 0 minutes.

COMPRESSION_DELAY를 사용 하는 경우에 권장 사항을 참조 하십시오 실시간 운영 분석을 위한 Columnstore 시작For recommendations on when to use COMPRESSION_DELAY, please see Get started with Columnstore for real time operational analytics

<table_option >:: = 하나 이상의 테이블 옵션을 지정 합니다.< table_option> ::= Specifies one or more table options.

DATA_COMPRESSIONDATA_COMPRESSION
지정된 테이블, 파티션 번호 또는 파티션 범위에 대한 데이터 압축 옵션을 지정합니다.Specifies the data compression option for the specified table, partition number, or range of partitions. 다음과 같은 옵션이 있습니다.The options are as follows:

없음NONE
테이블 또는 지정된 파티션이 압축되지 않습니다.Table or specified partitions are not compressed.

ROWROW
테이블 또는 지정된 파티션이 행 압축을 사용하여 압축됩니다.Table or specified partitions are compressed by using row compression.

PAGEPAGE
테이블 또는 지정된 파티션이 페이지 압축을 사용하여 압축됩니다.Table or specified partitions are compressed by using page compression.

COLUMNSTORECOLUMNSTORE

적용 대상: SQL Server 2016SQL Server 2016 통해 SQL Server 2017SQL Server 2017Azure SQL 데이터베이스Azure SQL Database합니다.Applies to: SQL Server 2016SQL Server 2016 through SQL Server 2017SQL Server 2017 and Azure SQL 데이터베이스Azure SQL Database.

클러스터형 columnstore 인덱스 및 비클러스터형 columnstore 인덱스를 모두 포함하는 columnstore 인덱스에만 적용됩니다.Applies only to columnstore indexes, including both nonclustered columnstore and clustered columnstore indexes. COLUMNSTORE 대부분 고성능 columnstore 압축으로 압축 하도록 지정 합니다.COLUMNSTORE specifies to compress with the most performant columnstore compression. 이 일반적인 좋습니다.This is the typical choice.

COLUMNSTORE_ARCHIVECOLUMNSTORE_ARCHIVE

적용 대상: SQL Server 2016SQL Server 2016 통해 SQL Server 2017SQL Server 2017Azure SQL 데이터베이스Azure SQL Database합니다.Applies to: SQL Server 2016SQL Server 2016 through SQL Server 2017SQL Server 2017 and Azure SQL 데이터베이스Azure SQL Database.

클러스터형 columnstore 인덱스 및 비클러스터형 columnstore 인덱스를 모두 포함하는 columnstore 인덱스에만 적용됩니다.Applies only to columnstore indexes, including both nonclustered columnstore and clustered columnstore indexes. 테이블 또는 더 작은 크기로 파티션이 COLUMNSTORE_ARCHIVE 압축 추가 됩니다.COLUMNSTORE_ARCHIVE will further compress the table or partition to a smaller size. 보다 적은 저장소 크기가 필요한 기타 상황에서 보관하는 데 사용할 수 있으며 저장 및 검색에 더 많은 시간을 이용할 수 있습니다.This can be used for archival, or for other situations that require a smaller storage size and can afford more time for storage and retrieval.

압축에 대 한 자세한 내용은 참조 데이터 압축합니다.For more information about compression, see Data Compression.

ON PARTITIONS ( { <partition_number_expression> | [ ,... n ] )ON PARTITIONS ( { <partition_number_expression> | [ ,...n ] )
DATA_COMPRESSION 설정을 적용할 파티션을 지정합니다.Specifies the partitions to which the DATA_COMPRESSION setting applies. 테이블이 분할되지 않은 경우 ON PARTITIONS 인수를 사용하면 오류가 발생합니다.If the table is not partitioned, the ON PARTITIONS argument will generate an error. ON PARTITIONS 절을 지정하지 않으면 DATA_COMPRESSION 옵션이 분할된 테이블의 모든 파티션에 적용됩니다.If the ON PARTITIONS clause is not provided, the DATA_COMPRESSION option will apply to all partitions of a partitioned table.

partition_number_expression 다음과 같은 방법으로 지정할 수 있습니다.partition_number_expression can be specified in the following ways:

  • 파티션의 파티션 번호를 지정합니다(예: ON PARTITIONS (2)).Provide the partition number of a partition, for example: ON PARTITIONS (2).

  • 여러 개별 파티션의 파티션 번호를 쉼표로 구분하여 지정합니다(예: ON PARTITIONS (1,5)).Provide the partition numbers for several individual partitions separated by commas, for example: ON PARTITIONS (1, 5).

  • 범위와 개별 파티션을 모두 지정합니다(예: ON PARTITIONS (2,4,6 TO 8)).Provide both ranges and individual partitions, for example: ON PARTITIONS (2, 4, 6 TO 8)

    <range>예를 들어, TO로 구분 된 파티션 번호로 지정할 수 있습니다: ON PARTITIONS (6 TO 8)).<range> can be specified as partition numbers separated by the word TO, for example: ON PARTITIONS (6 TO 8).

    여러 파티션에 대해 서로 다른 데이터 압축 유형을 설정하려면 DATA_COMPRESSION 옵션을 두 번 이상 지정합니다. 예를 들면 다음과 같습니다.To set different types of data compression for different partitions, specify the DATA_COMPRESSION option more than once, for example:

WITH   
(  
DATA_COMPRESSION = NONE ON PARTITIONS (1),   
DATA_COMPRESSION = ROW ON PARTITIONS (2, 4, 6 TO 8),   
DATA_COMPRESSION = PAGE ON PARTITIONS (3, 5)  
)  

<index_option >:: =<index_option> ::=
하나 이상의 인덱스 옵션을 지정합니다.Specifies one or more index options. 이러한 옵션에 대 한 전체 설명은 참조 하세요. CREATE index( Transact SQL ) .For a complete description of these options, see CREATE INDEX (Transact-SQL).

PAD_INDEX = {ON | OFF }PAD_INDEX = { ON | OFF }
ON이면 FILLFACTOR로 지정한 사용 가능한 공간의 비율을 인덱스의 중간 수준 페이지에 적용합니다.When ON, the percentage of free space specified by FILLFACTOR is applied to the intermediate level pages of the index. OFF이거나 FILLFACTOR 값을 지정하지 않으면 중간 페이지의 키 집합을 고려하여 인덱스가 가질 수 있는 최대 크기의 행을 최소한 하나만큼 저장할 공간을 남기고 용량 한계에 가깝게 중간 수준 페이지를 채웁니다.When OFF or a FILLFACTOR value it not specified, the intermediate level pages are filled to near capacity leaving enough space for at least one row of the maximum size the index can have, considering the set of keys on the intermediate pages. 기본값은 OFF입니다.The default is OFF.

FILLFACTOR = fillfactorFILLFACTOR =fillfactor
인덱스를 만들거나 변경할 때 데이터베이스 엔진Database Engine이 각 인덱스 페이지의 리프 수준을 채우는 비율을 지정합니다.Specifies a percentage that indicates how full the 데이터베이스 엔진Database Engine should make the leaf level of each index page during index creation or alteration. fillfactor 100 1 까지의 정수 값 이어야 합니다.fillfactor must be an integer value from 1 to 100. 기본값은 0입니다.The default is 0. 채우기 비율 값 0과 100은 모든 면에서 동일합니다.Fill factor values 0 and 100 are the same in all respects.

IGNORE_DUP_KEY = {ON | OFF }IGNORE_DUP_KEY = { ON | OFF }
삽입 작업에서 고유 인덱스에 중복된 키 값을 삽입하려는 경우에 대한 오류 응답을 지정합니다.Specifies the error response when an insert operation attempts to insert duplicate key values into a unique index. IGNORE_DUP_KEY 옵션은 인덱스를 만들거나 다시 작성한 후의 삽입 작업에만 적용됩니다.The IGNORE_DUP_KEY option applies only to insert operations after the index is created or rebuilt. 실행할 때이 옵션에 영향을 주지 않습니다 CREATE INDEX, ALTER INDEX, 또는 업데이트합니다.The option has no effect when executing CREATE INDEX, ALTER INDEX, or UPDATE. 기본값은 OFF입니다.The default is OFF.

ONON
중복된 키 값이 고유 인덱스에 삽입되는 경우 경고 메시지가 나타나고A warning message will occur when duplicate key values are inserted into a unique index. 고유성 제약 조건을 위반하는 행만 실패합니다.Only the rows violating the uniqueness constraint will fail.

OFFOFF
중복된 키 값이 고유 인덱스에 삽입되는 경우 오류 메시지가 나타나고An error message will occur when duplicate key values are inserted into a unique index. 전체 INSERT 작업이 롤백됩니다.The entire INSERT operation will be rolled back.

뷰, 비고유 인덱스, XML 인덱스, 공간 인덱스 및 필터링된 인덱스에 생성된 인덱스의 경우 IGNORE_DUP_KEY를 ON으로 설정할 수 없습니다.IGNORE_DUP_KEY cannot be set to ON for indexes created on a view, non-unique indexes, XML indexes, spatial indexes, and filtered indexes.

IGNORE_DUP_KEY를 보려면 사용 하 여 sys.indexes합니다.To view IGNORE_DUP_KEY, use sys.indexes.

이전 버전과 호환되는 구문에서 WITH IGNORE_DUP_KEY는 WITH IGNORE_DUP_KEY = ON과 같습니다.In backward compatible syntax, WITH IGNORE_DUP_KEY is equivalent to WITH IGNORE_DUP_KEY = ON.

STATISTICS_NORECOMPUTE = {ON | OFF }STATISTICS_NORECOMPUTE = { ON | OFF }
ON이면 오래된 인덱스 통계를 자동으로 다시 계산하지 않습니다.When ON, out-of-date index statistics are not automatically recomputed. OFF이면 자동 통계 업데이트를 활성화합니다.When OFF, automatic statistics updating are enabled. 기본값은 OFF입니다.The default is OFF.

ALLOW_ROW_LOCKS = { ON | OFF}ALLOW_ROW_LOCKS = { ON | OFF }
ON이면 인덱스에 액세스할 때 행 잠금이 허용됩니다.When ON, row locks are allowed when you access the index. 행 잠금을 사용하는 시점은 데이터베이스 엔진Database Engine이 결정합니다.The 데이터베이스 엔진Database Engine determines when row locks are used. OFF이면 행 잠금을 사용하지 않습니다.When OFF, row locks are not used. 기본값은 ON입니다.The default is ON.

ALLOW_PAGE_LOCKS = { ON | OFF}ALLOW_PAGE_LOCKS = { ON | OFF }
ON이면 인덱스에 액세스할 때 페이지 잠금이 허용됩니다.When ON, page locks are allowed when you access the index. 페이지 잠금을 사용하는 시점은 데이터베이스 엔진Database Engine이 결정합니다.The 데이터베이스 엔진Database Engine determines when page locks are used. OFF이면 페이지 잠금을 사용하지 않습니다.When OFF, page locks are not used. 기본값은 ON입니다.The default is ON.

FILETABLE_DIRECTORY = directory_nameFILETABLE_DIRECTORY = directory_name

적용 대상: SQL Server 2012SQL Server 2012 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

Windows 호환 FileTable 디렉터리 이름을 지정합니다.Specifies the windows-compatible FileTable directory name. 이 이름은 데이터베이스의 모든 FileTable 디렉터리 이름 중에서 고유해야 합니다.This name should be unique among all the FileTable directory names in the database. 고유성을 비교할 때는 데이터 정렬 설정과 관계없이 대/소문자가 구분되지 않습니다.Uniqueness comparison is case-insensitive, regardless of collation settings. 이 값을 지정하지 않으면 Filetable의 이름이 사용됩니다.If this value is not specified, the name of the filetable is used.

FILETABLE_COLLATE_FILENAME = { 데이터 정렬 이름 | database_default}FILETABLE_COLLATE_FILENAME = { collation_name | database_default }

적용 대상: SQL Server 2012SQL Server 2012 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

FileTable의 Name 열에 적용할 데이터 정렬의 이름을 지정합니다.Specifies the name of the collation to be applied to the Name column in the FileTable. 데이터 정렬은 Windows 파일 명명 의미 체계를 따르도록 대/소문자를 구분하지 않아야 합니다.The collation must be case-insensitive to comply with Windows file naming semantics. 이 값을 지정하지 않으면 데이터베이스 기본 데이터 정렬이 사용됩니다.If this value is not specified, the database default collation is used. 데이터베이스 기본 데이터 정렬이 대/소문자를 구분하면 오류가 발생하고 CREATE TABLE 작업이 실패합니다.If the database default collation is case-sensitive, an error is raised and the CREATE TABLE operation fails.

데이터 정렬 이름collation_name
대/소문자를 구분하지 않는 데이터 정렬의 이름입니다.The name of a case-insensitive collation.

database_defaultdatabase_default
데이터베이스의 기본 데이터 정렬을 사용하도록 지정합니다.Specifies that the default collation for the database should be used. 이 데이터 정렬은 대/소문자를 구분하지 않아야 합니다.This collation must be case-insensitive.

FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME = 제약 조건 이름FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME = constraint_name

적용 대상: SQL Server 2012SQL Server 2012 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

FileTable에 자동으로 만들어지는 기본 키 제약 조건에 사용할 이름을 지정합니다.Specifies the name to be used for the primary key constraint that is automatically created on the FileTable. 이 값을 지정하지 않으면 시스템에서 제약 조건 이름을 생성합니다.If this value is not specified, the system generates a name for the constraint.

FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME = 제약 조건 이름FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME = constraint_name

적용 대상: SQL Server 2012SQL Server 2012 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

자동으로 만들어지는 unique 제약 조건에 사용할 이름을 지정는 stream_id FileTable의 열입니다.Specifies the name to be used for the unique constraint that is automatically created on the stream_id column in the FileTable. 이 값을 지정하지 않으면 시스템에서 제약 조건 이름을 생성합니다.If this value is not specified, the system generates a name for the constraint.

FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME = 제약 조건 이름FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME = constraint_name

적용 대상: SQL Server 2012SQL Server 2012 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

자동으로 만들어지는 unique 제약 조건에 사용할 이름을 지정는 parent_path_locator이름 FileTable의 열입니다.Specifies the name to be used for the unique constraint that is automatically created on the parent_path_locator and name columns in the FileTable. 이 값을 지정하지 않으면 시스템에서 제약 조건 이름을 생성합니다.If this value is not specified, the system generates a name for the constraint.

SYSTEM_VERSIONING = ON [(HISTORY_TABLE = schema_name 합니다.SYSTEM_VERSIONING = ON [ ( HISTORY_TABLE = schema_name . history_table_name [, DATA_CONSISTENCY_CHECK = { ON | OFF}])]history_table_name [, DATA_CONSISTENCY_CHECK = { ON | OFF } ] ) ]

적용 대상: SQL Server 2016SQL Server 2016 통해 SQL Server 2017SQL Server 2017Azure SQL 데이터베이스Azure SQL Database합니다.Applies to: SQL Server 2016SQL Server 2016 through SQL Server 2017SQL Server 2017 and Azure SQL 데이터베이스Azure SQL Database.

시스템 버전 관리 테이블의 데이터 형식, null 허용 제약 조건 및 primary key 제약 조건 요구 사항을 충족 하도록 합니다.Enables system versioning of the table if the datatype, nullability constraint, and primary key constraint requirements are met. 경우는 HISTORY_TABLE 인수가 사용 되지 않으면, 시스템 일치 하는 두 테이블 간에 링크를 만들 현재 테이블과 동일한 파일 그룹에 현재 테이블의 스키마를 사용 하는 새 기록 테이블을 생성 하 고로 인해 시스템 기록 테이블에서 현재 테이블의 각 레코드의 기록을 기록 합니다.If the HISTORY_TABLE argument is not used, the system generates a new history table matching the schema of the current table in the same filegroup as the current table, creating a link between the two tables and enables the system to record the history of each record in the current table in the history table. 이 기록 테이블의 이름은 됩니다 MSSQL_TemporalHistoryFor<primary_table_object_id>합니다.The name of this history table will be MSSQL_TemporalHistoryFor<primary_table_object_id>. 기본적으로 기록 테이블은 PAGE (으)로 압축됩니다.By default, the history table is PAGE compressed. 에 대 한 링크를 만들고 기존 기록 테이블을 사용 하 여 HISTORY_TABLE 인수를 사용 하는 경우 현재 테이블과 지정된 된 테이블 간에 링크가 만들어집니다.If the HISTORY_TABLE argument is used to create a link to and use an existing history table, the link is created between the current table and the specified table. 구성 분할은 현재 테이블에서 기록 테이블로 자동 복제를 수행하지 않기 때문에 현재 테이블이 분할된 경우 기록 테이블은 기본 파일 그룹에 생성됩니다.If current table is partitioned, the history table is created on default file group because partitioning configuration is not replicated automatically from the current table to the history table. 기록 테이블 생성 도중 기록 테이블의 이름을 지정하는 경우 스키마와 테이블 이름을 지정해야 합니다.If the name of a history table is specified during history table creation, you must specify the schema and table name. 기존 기록 테이블에 대한 링크를 만드는 경우 데이터 일관성 검사를 수행하도록 선택할 수 있습니다.When creating a link to an existing history table, you can choose to perform a data consistency check. 이 데이터 일관성 검사는 기존 레코드가 겹치지 않고 확인 합니다.This data consistency check ensures that existing records do not overlap. 기본값은 데이터 일관성 검사를 수행하는 것입니다.Performing the data consistency check is the default. 이 인수를 사용 하 여 PERIOD FOR SYSTEM_TIME 및 생성 된 항상 AS 행 함께 {시작 | 테이블에 시스템 버전 관리를 사용 하도록 설정 하려면 인수 끝}입니다.Use this argument in conjunction with the PERIOD FOR SYSTEM_TIME and GENERATED ALWAYS AS ROW { START | END } arguments to enable system versioning on a table. 자세한 내용은 Temporal Tables을 참조하세요.For more information, see Temporal Tables.

REMOTE_DATA_ARCHIVE = {ON [( table_stretch_options [, … n])] | OFF (MIGRATION_STATE = 일시 중지)을 (를)REMOTE_DATA_ARCHIVE = { ON [ ( table_stretch_options [,...n] ) ] | OFF ( MIGRATION_STATE = PAUSED ) }

적용 대상: SQL Server 2016SQL Server 2016 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2016SQL Server 2016 through SQL Server 2017SQL Server 2017.

스트레치 데이터베이스 활성화 또는 비활성화를 새 테이블을 만듭니다.Creates the new table with Stretch Database enabled or disabled. 자세한 내용은 Stretch Database를 참조하십시오.For more info, see Stretch Database.

테이블에 대 한 스트레치 데이터베이스를 활성화합니다.Enabling Stretch Database for a table

지정 하 여 테이블에 대 한 확대를 사용 하는 경우 ON, 선택적으로 지정할 수 MIGRATION_STATE = OUTBOUND 하려면 즉시 데이터 마이그레이션 또는 MIGRATION_STATE = PAUSED 데이터 마이그레이션을 연기 하 합니다.When you enable Stretch for a table by specifying ON, you can optionally specify MIGRATION_STATE = OUTBOUND to begin migrating data immediately, or MIGRATION_STATE = PAUSED to postpone data migration. 기본값은 MIGRATION_STATE = OUTBOUND합니다.The default value is MIGRATION_STATE = OUTBOUND. 테이블에 스트레치를 사용 하는 방법에 대 한 자세한 내용은 참조 하십시오. 테이블에서 스트레치 데이터베이스 활성화합니다.For more info about enabling Stretch for a table, see Enable Stretch Database for a table.

필수 구성 요소.Prerequisites. 테이블에 대해 스트레치를 사용 하기 전에 서버에서를 데이터베이스에서 스트레치를 사용 하도록 설정 해야 합니다.Before you enable Stretch for a table, you have to enable Stretch on the server and on the database. 자세한 내용은 Enable Stretch Database for a database를 참조하십시오.For more info, see Enable Stretch Database for a database.

사용 권한.Permissions. 데이터베이스 또는 테이블에 스트레치를 사용 하려면 db_owner 권한이 필요 합니다.Enabling Stretch for a database or a table requires db_owner permissions. 테이블에 대해 스트레치를 사용 하도록 설정 하면 테이블에 대 한 ALTER 권한이 있어야 합니다.Enabling Stretch for a table also requires ALTER permissions on the table.

[FILTER_PREDICATE = {null | 조건자 }][ FILTER_PREDICATE = { null | predicate } ]

적용 대상: SQL Server 2016SQL Server 2016 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2016SQL Server 2016 through SQL Server 2017SQL Server 2017.

필요에 따라 기록 및 현재 데이터가 포함 된 테이블에서 마이그레이션할 행을 선택 하는 필터 조건자를 지정 합니다.Optionally specifies a filter predicate to select rows to migrate from a table that contains both historical and current data. 조건자는 결정적 인라인 테이블 반환 함수를 호출 해야 합니다.The predicate must call a deterministic inline table-valued function. 자세한 내용은 참조 하십시오. 테이블에서 스트레치 데이터베이스 활성화필터 함수를 사용 하 여 마이그레이션할 행을 선택합니다.For more info, see Enable Stretch Database for a table and Select rows to migrate by using a filter function.

중요

제대로 수행되지 않는 필터 조건자를 제공하면 데이터 마이그레이션 성능도 저하됩니다.If you provide a filter predicate that performs poorly, data migration also performs poorly. 스트레치 데이터베이스는 CROSS APPLY 연산자를 사용하여 테이블에 필터 조건자를 적용합니다.Stretch Database applies the filter predicate to the table by using the CROSS APPLY operator.

필터 조건자를 지정하지 않으면 전체 테이블이 마이그레이션됩니다.If you don't specify a filter predicate, the entire table is migrated.

도 지정 해야 필터 조건자를 지정 하면 MIGRATION_STATE합니다.When you specify a filter predicate, you also have to specify MIGRATION_STATE.

MIGRATION_STATE = {아웃 바운드 | 인바운드 | (를) 일시 중지MIGRATION_STATE = { OUTBOUND | INBOUND | PAUSED }

적용 대상: SQL Server 2016SQL Server 2016 통해 SQL Server 2017SQL Server 2017, 및 Azure SQL 합니다.Applies to: SQL Server 2016SQL Server 2016 through SQL Server 2017SQL Server 2017, and Azure SQL .

적용 대상: SQL Server 2014SQL Server 2014 통해 SQL Server 2017SQL Server 2017Azure SQL 데이터베이스Azure SQL Database합니다.Applies to: SQL Server 2014SQL Server 2014 through SQL Server 2017SQL Server 2017 and Azure SQL 데이터베이스Azure SQL Database.

값 ON 테이블이 메모리 액세스에 최적화 임을 나타냅니다.The value ON indicates that the table is memory optimized. 메모리 액세스에 최적화 된 테이블은 트랜잭션 처리의 성능을 최적화 하는 데 사용 되는 메모리 내 OLTP 기능을 일부입니다.Memory-optimized tables are part of the In-Memory OLTP feature, which is used to optimized the performance of transaction processing. 메모리 내 OLTP를 시작 하려면 참조 빠른 시작 1: 더 빠르게 TRANSACT-SQL 성능을 위한 메모리 내 OLTP 기술합니다.To get started with In-Memory OLTP see Quick Start 1: In-Memory OLTP Technologies for Faster Transact-SQL Performance. 메모리 액세스에 최적화 된 테이블에 대 한 자세한 내용은 참조 하십시오. 메모리 최적화 된 테이블합니다.For more in-depth information about memory-optimized tables see Memory-Optimized Tables.

기본값은 OFF 디스크 기반 테이블 임을 나타냅니다.The default value OFF indicates that the table is disk-based.

DURABILITYDURABILITY

적용 대상: SQL Server 2014SQL Server 2014 통해 SQL Server 2017SQL Server 2017Azure SQL 데이터베이스Azure SQL Database합니다.Applies to: SQL Server 2014SQL Server 2014 through SQL Server 2017SQL Server 2017 and Azure SQL 데이터베이스Azure SQL Database.

SCHEMA_AND_DATA 값 즉 변경 내용을 디스크에 유지 되 고 다시 시작 또는 장애 조치 이후에 내구성이 있는 테이블이 임을 나타냅니다.The value of SCHEMA_AND_DATA indicates that the table is durable, meaning that changes are persisted on disk and survive restart or failover. SCHEMA_AND_DATA는 기본값입니다.SCHEMA_AND_DATA is the default value.

SCHEMA_ONLY 값은 테이블이 비영구적임을 나타냅니다.The value of SCHEMA_ONLY indicates that the table is non-durable. 테이블 스키마는 저장 되지만 데이터 업데이트를 다시 시작 또는 데이터베이스의 장애 조치 시 유지 되지 않습니다.The table schema is persisted but any data updates are not persisted upon a restart or failover of the database. DURABILITY = SCHEMA_ONLY는 MEMORY_OPTIMIZED만 사용할 수 = ON입니다.DURABILITY=SCHEMA_ONLY is only allowed with MEMORY_OPTIMIZED=ON.

경고

와 테이블을 만들면 DURABILITY = SCHEMA_ONLY, 및 READ_COMMITTED_SNAPSHOT 를 사용 하 여 변경 이후에 ALTER DATABASE, 테이블의 데이터는 손실 됩니다.When a table is created with DURABILITY = SCHEMA_ONLY, and READ_COMMITTED_SNAPSHOT is subsequently changed using ALTER DATABASE, data in the table will be lost.

BUCKET_COUNTBUCKET_COUNT

적용 대상: SQL Server 2014SQL Server 2014 통해 SQL Server 2017SQL Server 2017Azure SQL 데이터베이스Azure SQL Database합니다.Applies to: SQL Server 2014SQL Server 2014 through SQL Server 2017SQL Server 2017 and Azure SQL 데이터베이스Azure SQL Database.

해시 인덱스에서 만들어야 하는 버킷 수를 나타냅니다.Indicates the number of buckets that should be created in the hash index. 해시 인덱스에서 BUCKET_COUNT의 최대값은 1,073,741,824입니다.The maximum value for BUCKET_COUNT in hash indexes is 1,073,741,824. 버킷 수에 대 한 자세한 내용은 참조 메모리 최적화 된 테이블에 대 한 인덱스합니다.For more information about bucket counts, see Indexes for Memory-Optimized Tables.

Bucket_count는 필수 인수입니다.Bucket_count is a required argument.

INDEXINDEX

적용 대상: SQL Server 2014SQL Server 2014 통해 SQL Server 2017SQL Server 2017Azure SQL 데이터베이스Azure SQL Database합니다.Applies to: SQL Server 2014SQL Server 2014 through SQL Server 2017SQL Server 2017 and Azure SQL 데이터베이스Azure SQL Database.

CREATE TABLE 문의 일부로 열 및 테이블 인덱스를 지정할 수 있습니다.Column and table indexes can be specified as part of the CREATE TABLE statement. 추가 하 고 메모리 액세스에 최적화 된 테이블에 인덱스를 제거 하는 방법에 대 한 내용은 참조 하십시오: 에 최적화 된 테이블For details about adding and removing indexes on memory-optimized tables see: Altering Memory-Optimized Tables

HASHHASH

적용 대상: SQL Server 2014SQL Server 2014 통해 SQL Server 2017SQL Server 2017Azure SQL 데이터베이스Azure SQL Database합니다.Applies to: SQL Server 2014SQL Server 2014 through SQL Server 2017SQL Server 2017 and Azure SQL 데이터베이스Azure SQL Database.

HASH 인덱스가 만들어졌음을 나타냅니다.Indicates that a HASH index is created.

해시 인덱스는 메모리 액세스에 최적화된 테이블에서만 지원됩니다.Hash indexes are supported only on memory-optimized tables.

주의Remarks

허용 되는 테이블, 열, 제약 조건 및 인덱스 수에 대 한 정보를 참조 하십시오. Maximum Capacity Specifications for SQL Server합니다.For information about the number of allowed tables, columns, constraints and indexes, see Maximum Capacity Specifications for SQL Server.

테이블 및 인덱스에 대한 공간 할당은 일반적으로 한 번에 한 익스텐트씩 이루어집니다.Space is generally allocated to tables and indexes in increments of one extent at a time. ALTER DATABASE의 설정 MIXED_PAGE_ALLOCATION 옵션이로 설정 된 경우 TRUE, 또는 항상 이전에 SQL Server 2016SQL Server 2016는 테이블이 나 인덱스를 만들 때 충분 한 페이지를 균일 익스텐트를 채울 때까지 혼합 익스텐트에서 페이지 할당 됩니다.When the SET MIXED_PAGE_ALLOCATION option of ALTER DATABASE is set to TRUE, or always prior to SQL Server 2016SQL Server 2016, when a table or index is created, it is allocated pages from mixed extents until it has enough pages to fill a uniform extent. 균일 익스텐트를 채울 정도로 충분한 페이지를 받은 이후에는 현재 할당된 익스텐트가 가득 찰 때마다 추가 익스텐트가 할당됩니다.After it has enough pages to fill a uniform extent, another extent is allocated every time the currently allocated extents become full. 할당 되 고 테이블에서 사용 하는 공간의 크기에 대 한 보고서의 경우 실행 sp_spaceused합니다.For a report about the amount of space allocated and used by a table, execute sp_spaceused.

데이터베이스 엔진Database Engine은 열 정의에 DEFAULT, IDENTITY, ROWGUIDCOL 또는 열 제약 조건을 지정하는 특정한 순서를 요구하지는 않습니다.The 데이터베이스 엔진Database Engine does not enforce an order in which DEFAULT, IDENTITY, ROWGUIDCOL, or column constraints are specified in a column definition.

QUOTED IDENTIFIER 옵션은 테이블을 만들 때 OFF로 설정되어 있더라도 해당 테이블의 메타데이터에 항상 ON으로 저장됩니다.When a table is created, the QUOTED IDENTIFIER option is always stored as ON in the metadata for the table, even if the option is set to OFF when the table is created.

임시 테이블Temporary Tables

로컬 및 전역 임시 테이블을 만들 수 있습니다.You can create local and global temporary tables. 로컬 임시 테이블은 현재 세션에서만 볼 수 있으며 전역 임시 테이블은 모든 세션에서 볼 수 있습니다.Local temporary tables are visible only in the current session, and global temporary tables are visible to all sessions. 임시 테이블은 분할할 수 없습니다.Temporary tables cannot be partitioned.

로컬 임시 테이블 이름 앞에 단일 숫자 기호 (#table_name), 및 전역 임시 테이블 이름 앞에 이중 숫자 기호 (# #table_name).Prefix local temporary table names with single number sign (#table_name), and prefix global temporary table names with a double number sign (##table_name).

에 지정 된 값을 사용 하 여 임시 테이블을 참조 하는 SQL 문을 table_name 예제 # # #에 대 한 CREATE TABLE 문에서:SQL statements reference the temporary table by using the value specified for table_name in the CREATE TABLE statement, for example####:

CREATE TABLE #MyTempTable (cola INT PRIMARY KEY);  

INSERT INTO #MyTempTable VALUES (1);  

단일 저장 프로시저나 일괄 처리 내에 둘 이상의 임시 테이블을 만드는 경우 그 이름이 서로 달라야 합니다.If more than one temporary table is created inside a single stored procedure or batch, they must have different names.

여러 사용자가 동시에 실행할 수 있는 저장 프로시저 또는 응용 프로그램에서 로컬 임시 테이블을 만드는 경우 데이터베이스 엔진Database Engine은 다른 사용자가 만든 테이블을 구별할 수 있어야 합니다.If a local temporary table is created in a stored procedure or application that can be executed at the same time by several users, the 데이터베이스 엔진Database Engine must be able to distinguish the tables created by the different users. 데이터베이스 엔진Database Engine은 내부적으로 각 로컬 임시 테이블 이름에 숫자 접미사를 추가하여 구별합니다.The 데이터베이스 엔진Database Engine does this by internally appending a numeric suffix to each local temporary table name. 임시 테이블에 저장 된 것과 전체 이름을 sysobjects 테이블에 tempdb CREATE TABLE 문과 시스템에서 생성 된 숫자 접미사에 지정 된 테이블 이름으로 이루어집니다.The full name of a temporary table as stored in the sysobjects table in tempdb is made up of the table name specified in the CREATE TABLE statement and the system-generated numeric suffix. 접미사를 허용 하려면 table_name 지정 된 로컬 임시 이름에는 116 자를 초과할 수 없습니다.To allow for the suffix, table_name specified for a local temporary name cannot exceed 116 characters.

임시 테이블은 DROP TABLE을 사용하여 명시적으로 삭제하지 않으면 범위를 벗어날 때 자동으로 삭제됩니다.Temporary tables are automatically dropped when they go out of scope, unless explicitly dropped by using DROP TABLE:

  • 저장 프로시저에서 만든 로컬 임시 테이블은 저장 프로시저를 마칠 때 자동으로 삭제합니다.A local temporary table created in a stored procedure is dropped automatically when the stored procedure is finished. 테이블은 해당 테이블을 만든 저장 프로시저가 실행하는 모든 중첩된 저장 프로시저에서 참조할 수 있습니다.The table can be referenced by any nested stored procedures executed by the stored procedure that created the table. 테이블을 만든 저장 프로시저를 호출한 프로세스는 해당 테이블을 참조할 수 없습니다.The table cannot be referenced by the process that called the stored procedure that created the table.

  • 기타 모든 로컬 임시 테이블은 현재 세션이 끝날 때 자동으로 삭제됩니다.All other local temporary tables are dropped automatically at the end of the current session.

  • 전역 임시 테이블은 테이블을 만든 세션이 끝나고 이를 참조하는 다른 모든 태스크가 중지되면 자동으로 삭제됩니다.Global temporary tables are automatically dropped when the session that created the table ends and all other tasks have stopped referencing them. 태스크와 테이블 간의 연결은 단일 Transact-SQLTransact-SQL 문의 사용 기간 동안만 유지 관리됩니다.The association between a task and a table is maintained only for the life of a single Transact-SQLTransact-SQL statement. 즉, 전역 임시 테이블은 만들기 세션이 끝났을 때 활동적으로 테이블을 참조하는 마지막 Transact-SQLTransact-SQL 문이 완료되면 삭제됩니다.This means that a global temporary table is dropped at the completion of the last Transact-SQLTransact-SQL statement that was actively referencing the table when the creating session ended.

    저장 프로시저 또는 트리거에서 만드는 로컬 임시 테이블은 저장 프로시저 또는 트리거를 호출하기 전에 만든 임시 테이블과 동일한 이름을 사용할 수 있습니다.A local temporary table created within a stored procedure or trigger can have the same name as a temporary table that was created before the stored procedure or trigger is called. 그러나 쿼리가 임시 테이블을 참조하고 이때 같은 이름을 가진 두 개의 임시 테이블이 동시에 존재하면 쿼리가 확인할 테이블은 정의되지 않습니다.However, if a query references a temporary table and two temporary tables with the same name exist at that time, it is not defined which table the query is resolved against. 중첩된 저장 프로시저도 이를 호출한 저장 프로시저가 만든 임시 테이블과 동일한 이름으로 임시 테이블을 만들 수 있습니다.Nested stored procedures can also create temporary tables with the same name as a temporary table that was created by the stored procedure that called it. 그러나 중첩된 프로시저에서 만든 테이블에 대한 수정 사항을 확인하려면 테이블의 구조 및 열 이름이 호출 프로시저에서 만든 테이블과 같아야 합니다.However, for modifications to resolve to the table that was created in the nested procedure, the table must have the same structure, with the same column names, as the table created in the calling procedure. 이는 다음 예에서 확인할 수 있습니다.This is shown in the following example.

CREATE PROCEDURE dbo.Test2  
AS  
    CREATE TABLE #t(x INT PRIMARY KEY);  
    INSERT INTO #t VALUES (2);  
    SELECT Test2Col = x FROM #t;  
GO  

CREATE PROCEDURE dbo.Test1  
AS  
    CREATE TABLE #t(x INT PRIMARY KEY);  
    INSERT INTO #t VALUES (1);  
    SELECT Test1Col = x FROM #t;  
EXEC Test2;  
GO  

CREATE TABLE #t(x INT PRIMARY KEY);  
INSERT INTO #t VALUES (99);  
GO  

EXEC Test1;  
GO  

결과 집합은 다음과 같습니다.Here is the result set.

(1 row(s) affected)

Test1Col

-----------

1

(1 row(s) affected)

Test2Col

-----------

2

로컬 또는 전역 임시 테이블을 만들 때 CREATE TABLE 구문은 FOREIGN KEY 제약 조건을 제외한 다른 모든 제약 조건 정의를 지원합니다.When you create local or global temporary tables, the CREATE TABLE syntax supports constraint definitions except for FOREIGN KEY constraints. 임시 테이블에서 FOREIGN KEY 제약 조건을 지정하면 문에서 해당 제약 조건을 건너뛰었다는 경고 메시지를 반환하며If a FOREIGN KEY constraint is specified in a temporary table, the statement returns a warning message that states the constraint was skipped. FOREIGN KEY 제약 조건 없이 테이블을 만듭니다.The table is still created without the FOREIGN KEY constraints. 임시 테이블은 FOREIGN KEY 제약 조건에서 참조할 수 없습니다.Temporary tables cannot be referenced in FOREIGN KEY constraints.

명명된 제약 조건으로 사용자 정의 트랜잭션의 범위 내에 임시 테이블을 만드는 경우 한 번에 한 사용자만 임시 테이블을 만드는 문을 실행할 수 있습니다.If a temporary table is created with a named constraint and the temporary table is created within the scope of a user-defined transaction, only one user at a time can execute the statement that creates the temp table. 예를 들어 저장 프로시저에서 명명된 기본 키 제약 조건을 사용하여 임시 테이블을 만드는 경우 여러 사용자가 동시에 저장 프로시저를 실행할 수 없습니다.For example, if a stored procedure creates a temporary table with a named primary key constraint, the stored procedure cannot be executed simultaneously by multiple users.

데이터베이스 범위 전역 임시 테이블 (Azure SQL 데이터베이스)Database scoped global temporary tables (Azure SQL Database)

SQL Server에 대 한 전역 임시 테이블 (된 시작 # # 테이블 이름)은 tempdb에 저장 되 고 전체 SQL Server 인스턴스에서 모든 사용자의 세션 간에 공유 합니다.Global temporary tables for SQL Server (initiated with ## table name) are stored in tempdb and shared among all users’ sessions across the whole SQL Server instance. SQL 테이블 형식에 대 한 내용은 테이블 만들기에 위의 섹션을 참조 합니다.For information on SQL table types, see the above section on Create Tables.

Azure SQL 데이터베이스도 tempdb에 저장 되 고 데이터베이스 수준으로 범위는 전역 임시 테이블을 지원 합니다.Azure SQL Database supports global temporary tables that are also stored in tempdb and scoped to the database level. 즉, 전역 임시 테이블은 동일한 Azure SQL 데이터베이스 내에서 모든 사용자의 세션에 대 한 공유 됩니다.This means that global temporary tables are shared for all users’ sessions within the same Azure SQL database. 다른 Azure SQL 데이터베이스에서 사용자 세션 전역 임시 테이블에 액세스할 수 없습니다.User sessions from other Azure SQL databases cannot access global temporary tables.

Azure SQL DB에 대 한 전역 임시 테이블 구문 및 의미 체계를 임시 테이블에 대 한 SQL Server 사용 하 여 동일한 따릅니다.Global temporary tables for Azure SQL DB follow the same syntax and semantics that SQL Server uses for temporary tables. 마찬가지로, 전역 임시 저장된 프로시저에서 데이터베이스 수준에서 Azure SQL DB의 범위 지정도 됩니다.Similarly, global temporary stored procedures are also scoped to the database level in Azure SQL DB. 로컬 임시 테이블 (# 테이블 이름으로 시작) Azure SQL 데이터베이스에 대해 지원 되 고 동일한 구문 및 의미 체계를 SQL Server를 사용 합니다.Local temporary tables (initiated with # table name) are also supported for Azure SQL Database and follow the same syntax and semantics that SQL Server uses. 위의 섹션을 참조 하십시오 임시 테이블합니다.See the above section on Temporary Tables.

중요

이 기능은 공개 미리 보기 중 이며 Azure SQL 데이터베이스에 사용할 수 있습니다.This feature is in public preview and is available for Azure SQL Database.

Azure SQL DB에 대 한 전역 임시 테이블을 문제 해결Troubleshooting global temporary tables for Azure SQL DB

문제 해결 tempdb에 대 한 참조 문제 해결에 디스크 공간이 부족 tempdb합니다.For the troubleshooting the tempdb, see Troubleshooting Insufficient Disk space in tempdb. Azure SQL 데이터베이스의 문제 해결 Dmv에 액세스 하려면 서버 관리자 여야 합니다.To access the troubleshooting DMVs in Azure SQL Database, you must be a server admin.

PermissionsPermissions

모든 사용자는 전역 임시 개체를 만들 수 있습니다.Any user can create global temporary objects. 사용자가 추가 사용 권한을 받는 경우를 제외하고 자신의 고유 개체에만 액세스할 수 있습니다.Users can only access their own objects, unless they receive additional permissions. 의 인스턴스에 액세스할 때마다 SQL Server 로그인을 제공할 필요가 없습니다..

Examples

  • Session A가 testdb1 Azure SQL 데이터베이스에서에서 전역 임시 테이블 ##test을 만들고 1 개 행 추가Session A creates a global temp table ##test in Azure SQL Database testdb1 and adds 1 row
CREATE TABLE ##test ( a int, b int);
INSERT INTO ##test values (1,1);

--Obtain object ID for temp table ##test 
SELECT OBJECT_ID('tempdb.dbo.##test') AS 'Object ID'; 

---Result
1253579504

---Obtain global temp table name for a given object ID 1253579504 in tempdb (2)
SELECT name FROM tempdb.sys.objects WHERE object_id = 1253579504

---Result
##test
  • 세션 B testdb1 Azure SQL 데이터베이스에 연결 하 고 ##test A 세션에서 만든 테이블에 액세스할 수 있습니다.Session B connects to Azure SQL Database testdb1 and can access table ##test created by session A
SELECT * FROM ##test
---Results
1,1
  • 세션 C testdb2 Azure SQL 데이터베이스의에서 다른 데이터베이스에 연결 및 testdb1에서 만든 ##test에 액세스 하려고 합니다.Session C connects to another database in Azure SQL Database testdb2 and wants to access ##test created in testdb1. 전역 임시 테이블에 대 한 데이터베이스 범위이 선택이 실패This select fails due to the database scope for the global temp tables
SELECT * FROM ##test
---Results
Msg 208, Level 16, State 0, Line 1
Invalid object name '##test'
  • 현재 사용자 데이터베이스 testdb1에서 Azure SQL 데이터베이스 tempdb에 시스템 개체를 주소 지정Addressing system object in Azure SQL Database tempdb from current user database testdb1
SELECT * FROM tempdb.sys.objects
SELECT * FROM tempdb.sys.columns
SELECT * FROM tempdb.sys.database_files

분할된 테이블Partitioned Tables

CREATE TABLE을 사용하여 분할된 테이블을 만들기 전에 테이블이 분할되는 방식을 지정하는 파티션 함수를 만들어야 합니다.Before creating a partitioned table by using CREATE TABLE, you must first create a partition function to specify how the table becomes partitioned. 파티션 함수를 사용 하 여 만들 CREATE PARTITION FUNCTION합니다.A partition function is created by using CREATE PARTITION FUNCTION. 그런 다음 파티션 구성표를 만들어 파티션 함수가 표시하는 파티션을 유지하는 파일 그룹을 지정해야 합니다.Second, you must create a partition scheme to specify the filegroups that will hold the partitions indicated by the partition function. 파티션 구성표를 사용 하 여 만들 CREATE PARTITION SCHEME합니다.A partition scheme is created by using CREATE PARTITION SCHEME. 분할된 테이블에는 파일 그룹을 분리하는 PRIMARY KEY 또는 UNIQUE 제약 조건을 지정할 수 없습니다.Placement of PRIMARY KEY or UNIQUE constraints to separate filegroups cannot be specified for partitioned tables. 자세한 내용은 Partitioned Tables and Indexes을 참조하세요.For more information, see Partitioned Tables and Indexes.

PRIMARY KEY 제약 조건PRIMARY KEY Constraints

  • 테이블은 하나의 PRIMARY KEY 제약 조건만 포함할 수 있습니다.A table can contain only one PRIMARY KEY constraint.

  • PRIMARY KEY 제약 조건에 의해 생성된 인덱스 수는 비클러스터형 인덱스 999개, 클러스터형 인덱스 1개인 테이블의 인덱스 수 제한을 초과할 수 없습니다.The index generated by a PRIMARY KEY constraint cannot cause the number of indexes on the table to exceed 999 nonclustered indexes and 1 clustered index.

  • PRIMARY KEY 제약 조건에 대해 CLUSTERED 또는 NONCLUSTERED를 지정하지 않은 경우 UNIQUE 제약 조건에 대해 클러스터형 인덱스를 지정하지 않으면 CLUSTERED가 사용됩니다.If CLUSTERED or NONCLUSTERED is not specified for a PRIMARY KEY constraint, CLUSTERED is used if there are no clustered indexes specified for UNIQUE constraints.

  • PRIMARY KEY 제약 조건 내에서 정의된 모든 열은 NOT NULL로 정의되어야 합니다.All columns defined within a PRIMARY KEY constraint must be defined as NOT NULL. NULL 허용 여부를 지정하지 않은 경우에는 PRIMARY KEY 제약 조건에 참여하는 모든 열의 NULL 허용 여부가 NOT NULL로 설정됩니다.If nullability is not specified, all columns participating in a PRIMARY KEY constraint have their nullability set to NOT NULL.

    참고

    메모리 액세스에 최적화 된 테이블의 null을 허용 하는 키 열은 사용할 수 있습니다.For memory-optimized tables, the NULLable key column is allowed.

  • CLR 사용자 정의 형식 열에 기본 키를 정의하는 경우 형식 구현이 이진 순서를 지원해야 합니다.If a primary key is defined on a CLR user-defined type column, the implementation of the type must support binary ordering. 자세한 내용은 CLR 사용자 정의 형식을 참조하세요.For more information, see CLR User-Defined Types.

UNIQUE 제약 조건UNIQUE Constraints

  • UNIQUE 제약 조건에 CLUSTERED 또는 NONCLUSTERED를 지정하지 않은 경우에는 기본적으로 NONCLUSTERED가 사용됩니다.If CLUSTERED or NONCLUSTERED is not specified for a UNIQUE constraint, NONCLUSTERED is used by default.

  • 각 UNIQUE 제약 조건은 인덱스를 생성합니다.Each UNIQUE constraint generates an index. UNIQUE 제약 조건의 수가 많아도 테이블의 비클러스터형 인덱스는 999개, 클러스터형 인덱스는 1개를 초과할 수 없습니다.The number of UNIQUE constraints cannot cause the number of indexes on the table to exceed 999 nonclustered indexes and 1 clustered index.

  • CLR 사용자 정의 형식 열에 UNIQUE 제약 조건을 정의하는 경우 형식 구현이 이진 순서 또는 연산자 기반의 순서를 지원해야 합니다.If a unique constraint is defined on a CLR user-defined type column, the implementation of the type must support binary or operator-based ordering. 자세한 내용은 CLR 사용자 정의 형식을 참조하세요.For more information, see CLR User-Defined Types.

FOREIGN KEY 제약 조건FOREIGN KEY Constraints

  • FOREIGN KEY 제약 조건의 열에 NULL 외의 다른 값을 입력한 경우에는 그 값이 참조되는 열에 있어야 합니다. 그렇지 않은 경우에는 외래 키 위반 오류 메시지가 반환됩니다.When a value other than NULL is entered into the column of a FOREIGN KEY constraint, the value must exist in the referenced column; otherwise, a foreign key violation error message is returned.

  • 원본 열을 지정하지 않는 한 FOREIGN KEY 제약 조건이 선행 열에 적용됩니다.FOREIGN KEY constraints are applied to the preceding column, unless source columns are specified.

  • FOREIGN KEY 제약 조건은 같은 서버의 같은 데이터베이스 내에 있는 테이블만 참조할 수 있습니다.FOREIGN KEY constraints can reference only tables within the same database on the same server. 상호 데이터베이스 참조 무결성은 트리거를 통해 구현해야 합니다.Cross-database referential integrity must be implemented through triggers. 자세한 내용은 CREATE TRIGGER(Transact-SQL)를 참조하세요.For more information, see CREATE TRIGGER (Transact-SQL).

  • FOREIGN KEY 제약 조건은 같은 테이블에 있는 다른 열을 참조할 수 있습니다.FOREIGN KEY constraints can reference another column in the same table. 이것을 자체 참조라고 합니다.This is referred to as a self-reference.

  • 열 수준 FOREIGN KEY 제약 조건의 REFERENCES 절은 참조 열을 하나만 나열할 수 있습니다.The REFERENCES clause of a column-level FOREIGN KEY constraint can list only one reference column. 이 열의 데이터 형식은 제약 조건이 정의된 열의 데이터 형식과 같아야 합니다.This column must have the same data type as the column on which the constraint is defined.

  • 테이블 수준 FOREIGN KEY 제약 조건의 REFERENCES 절에는 제약 조건 열 목록의 열 개수와 같은 수의 참조 열이 있어야 합니다.The REFERENCES clause of a table-level FOREIGN KEY constraint must have the same number of reference columns as the number of columns in the constraint column list. 각 참조 열의 데이터 형식도 열 목록의 해당 열과 같아야 합니다.The data type of each reference column must also be the same as the corresponding column in the column list.

  • CASCADE, SET NULL 또는 SET DEFAULT를 지정할 수 없습니다 경우 형식의 열 타임 스탬프 외래 키 또는 참조 되는 키의 일부입니다.CASCADE, SET NULL or SET DEFAULT cannot be specified if a column of type timestamp is part of either the foreign key or the referenced key.

  • CASCADE, SET NULL, SET DEFAULT 및 NO ACTION은 서로 참조 관계를 가진 테이블에서 결합될 수 있습니다.CASCADE, SET NULL, SET DEFAULT and NO ACTION can be combined on tables that have referential relationships with each other. 데이터베이스 엔진Database Engine 이 NO ACTION을 발견하면 관련된 CASCADE, SET NULL 및 SET DEFAULT 동작을 멈추고 롤백합니다.If the 데이터베이스 엔진Database Engine encounters NO ACTION, it stops and rolls back related CASCADE, SET NULL and SET DEFAULT actions. DELETE 문으로 CASCADE, SET NULL, SET DEFAULT 및 NO ACTION 동작을 결합하면 데이터베이스 엔진Database Engine 이 NO ACTION을 확인하기 전에 모든 CASCADE, SET NULL 및 SET DEFAULT 동작을 적용합니다.When a DELETE statement causes a combination of CASCADE, SET NULL, SET DEFAULT and NO ACTION actions, all the CASCADE, SET NULL and SET DEFAULT actions are applied before the 데이터베이스 엔진Database Engine checks for any NO ACTION.

  • 데이터베이스 엔진Database Engine 은 테이블에 포함하여 다른 테이블을 참조하는 FOREIGN KEY 제약 조건의 수나 특정 테이블을 참조하는 다른 테이블 소유의 FOREIGN KEY 제약 조건의 수에 미리 한계를 정의하지 않습니다.The 데이터베이스 엔진Database Engine does not have a predefined limit on either the number of FOREIGN KEY constraints a table can contain that reference other tables, or the number of FOREIGN KEY constraints that are owned by other tables that reference a specific table.

    하지만 실제로 사용할 수 있는 FOREIGN KEY 제약 조건의 수는 하드웨어 구성 및 데이터베이스와 응용 프로그램의 디자인에 따라 제한됩니다.Nevertheless, the actual number of FOREIGN KEY constraints that can be used is limited by the hardware configuration and by the design of the database and application. 테이블에 포함되거나 이 테이블을 참조하는 FOREIGN KEY 제약 조건의 수가 각각 253개를 넘지 않도록 하는 것이 좋습니다.We recommend that a table contain no more than 253 FOREIGN KEY constraints, and that it be referenced by no more than 253 FOREIGN KEY constraints. 유효 한계는 응용 프로그램과 하드웨어에 따라 더 많거나 적을 수 있습니다.The effective limit for you may be more or less depending on the application and hardware. 데이터베이스와 응용 프로그램을 디자인할 때는 FOREIGN KEY 제약 조건을 적용하는 비용도 고려하십시오.Consider the cost of enforcing FOREIGN KEY constraints when you design your database and applications.

  • 임시 테이블에는 FOREIGN KEY 제약 조건이 적용되지 않습니다.FOREIGN KEY constraints are not enforced on temporary tables.

  • FOREIGN KEY 제약 조건은 참조되는 테이블의 PRIMARY KEY 또는 UNIQUE 제약 조건에 있는 열이나 참조되는 테이블의 UNIQUE INDEX에 있는 열만 참조할 수 있습니다.FOREIGN KEY constraints can reference only columns in PRIMARY KEY or UNIQUE constraints in the referenced table or in a UNIQUE INDEX on the referenced table.

  • CLR 사용자 정의 형식 열에 외래 키를 정의하는 경우 형식 구현이 이진 순서를 지원해야 합니다.If a foreign key is defined on a CLR user-defined type column, the implementation of the type must support binary ordering. 자세한 내용은 CLR 사용자 정의 형식을 참조하세요.For more information, see CLR User-Defined Types.

  • 외래 키 관계에 참여하는 열은 같은 길이와 배율로 정의되어야 합니다.Columns participating in a foreign key relationship must be defined with the same length and scale.

DEFAULT 정의DEFAULT Definitions

  • 하나의 열에는 하나의 DEFAULT 정의만 있을 수 있습니다.A column can have only one DEFAULT definition.

  • DEFAULT 정의는 상수 값, 함수, SQL 표준 무항 함수 또는 NULL을 포함할 수 있습니다.A DEFAULT definition can contain constant values, functions, SQL standard niladic functions, or NULL. 다음 표에서는 무항 함수 및 무항 함수가 INSERT 문에서 기본적으로 반환하는 값을 보여 줍니다.The following table shows the niladic functions and the values they return for the default during an INSERT statement.

    SQL-92 무항 함수SQL-92 niladic function 반환 값Value returned
    CURRENT_TIMESTAMPCURRENT_TIMESTAMP 현재 날짜 및 시간입니다.Current date and time.
    CURRENT_USERCURRENT_USER 삽입을 수행하는 사용자의 이름입니다.Name of user performing an insert.
    SESSION_USERSESSION_USER 삽입을 수행하는 사용자의 이름입니다.Name of user performing an insert.
    SYSTEM_USERSYSTEM_USER 삽입을 수행하는 사용자의 이름입니다.Name of user performing an insert.
    UserUSER 삽입을 수행하는 사용자의 이름입니다.Name of user performing an insert.
  • constant_expression 또는 다른 테이블, 뷰 또는 저장된 프로시저는 테이블의 다른 열에는 기본 정의 참조할 수 없습니다.constant_expression in a DEFAULT definition cannot refer to another column in the table, or to other tables, views, or stored procedures.

  • 열에 DEFAULT 정의 만들 수 없습니다는 타임 스탬프 데이터 형식 또는 IDENTITY 속성이 있는 열입니다.DEFAULT definitions cannot be created on columns with a timestamp data type or columns with an IDENTITY property.

  • 별칭 데이터 형식이 기본 개체에 바인딩된 경우에는 별칭 데이터 형식의 열에 대해 DEFAULT 정의를 만들 수 없습니다.DEFAULT definitions cannot be created for columns with alias data types if the alias data type is bound to a default object.

CHECK 제약 조건CHECK Constraints

  • 하나의 열은 원하는 수만큼의 CHECK 제약 조건을 가질 수 있으며 조건은 AND 및 OR로 결합된 여러 논리 식을 포함할 수 있습니다.A column can have any number of CHECK constraints, and the condition can include multiple logical expressions combined with AND and OR. 열에 대한 여러 CHECK 제약 조건은 만든 순서대로 검사됩니다.Multiple CHECK constraints for a column are validated in the order they are created.

  • 검색 조건은 부울 식으로 계산되어야 하며 다른 테이블을 참조할 수 없습니다.The search condition must evaluate to a Boolean expression and cannot reference another table.

  • 열 수준의 CHECK 제약 조건은 제약된 열만 참조할 수 있으며 테이블 수준의 CHECK 제약 조건은 같은 테이블의 열만 참조할 수 있습니다.A column-level CHECK constraint can reference only the constrained column, and a table-level CHECK constraint can reference only columns in the same table.

    CHECK CONSTRAINTS 및 규칙은 INSERT 및 UPDATE 문 동안 데이터의 유효성을 검사하는 동일한 역할을 합니다.CHECK CONSTRAINTS and rules serve the same function of validating the data during INSERT and UPDATE statements.

  • 열에 규칙 및 하나 이상의 CHECK 제약 조건이 있는 경우에는 모든 제한을 평가합니다.When a rule and one or more CHECK constraints exist for a column or columns, all restrictions are evaluated.

  • CHECK 제약 조건을 정의할 수 없습니다 텍스트, ntext, 또는 이미지 열입니다.CHECK constraints cannot be defined on text, ntext, or image columns.

추가 제약 조건 정보Additional Constraint Information

  • 제약 조건으로 생성된 인덱스는 DROP INDEX 문으로 삭제할 수 없으며 제약 조건은 ALTER TABLE 문으로 삭제해야 합니다.An index created for a constraint cannot be dropped by using DROP INDEX; the constraint must be dropped by using ALTER TABLE. 제약 조건이 만들고 사용하는 인덱스는 ALTER INDEX...REBUILD를 사용하여 다시 작성할 수 있습니다.An index created for and used by a constraint can be rebuilt by using ALTER INDEX...REBUILD. 자세한 내용은 인덱스 다시 구성 및 다시 작성을 참조하세요.For more information, see Reorganize and Rebuild Indexes.

  • 제약 조건 이름에 대 한 규칙을 따라야 식별자한다는 점을 제외 하는 이름은 #로 시작할 수 없습니다 (#).Constraint names must follow the rules for identifiers, except that the name cannot start with a number sign (#). 경우 constraint_name 는 제공 하지는 시스템에서 생성 된 이름이 제약 조건에 지정 됩니다.If constraint_name is not supplied, a system-generated name is assigned to the constraint. 제약 조건 이름은 제약 조건 위반에 대한 모든 오류 메시지에 표시됩니다.The constraint name appears in any error message about constraint violations.

  • INSERT, UPDATE 또는 DELETE 문에서 제약 조건을 위반한 경우에는 문이 종료됩니다.When a constraint is violated in an INSERT, UPDATE, or DELETE statement, the statement is ended. 하지만 SET XACT_ABORT를 OFF로 설정하면 문이 명시적 트랜잭션의 일부인 경우 그 트랜잭션은 계속 처리됩니다.However, when SET XACT_ABORT is set to OFF, the transaction, if the statement is part of an explicit transaction, continues to be processed. SET XACT_ABORT를 ON으로 설정하면 전체 트랜잭션이 롤백됩니다.When SET XACT_ABORT is set to ON, the whole transaction is rolled back. 선택 하 여 트랜잭션 정의와 함께 ROLLBACK TRANSACTION 문을 사용할 수도 있습니다는 @@ERROR 시스템 함수입니다.You can also use the ROLLBACK TRANSACTION statement with the transaction definition by checking the @@ERROR system function.

  • ALLOW_ROW_LOCKS = ON이고 ALLOW_PAGE_LOCK = ON이면 인덱스에 액세스할 때 행, 페이지 및 테이블 수준 잠금이 허용됩니다.When ALLOW_ROW_LOCKS = ON and ALLOW_PAGE_LOCK = ON, row-, page-, and table-level locks are allowed when you access the index. 데이터베이스 엔진Database Engine은 적절한 잠금을 선택하고 행 또는 페이지 잠금에서 테이블 잠금으로 잠금을 에스컬레이션할 수 있습니다.The 데이터베이스 엔진Database Engine chooses the appropriate lock and can escalate the lock from a row or page lock to a table lock. ALLOW_ROW_LOCKS = OFF이고 ALLOW_PAGE_LOCK = OFF이면 인덱스에 액세스할 때 테이블 수준 잠금만 허용됩니다.When ALLOW_ROW_LOCKS = OFF and ALLOW_PAGE_LOCK = OFF, only a table-level lock is allowed when you access the index.

  • 테이블에 FOREIGN KEY 또는 CHECK CONSTRAINTS 및 트리거가 있는 경우에는 트리거를 실행하기 전에 제약 조건에 대한 조건을 평가합니다.If a table has FOREIGN KEY or CHECK CONSTRAINTS and triggers, the constraint conditions are evaluated before the trigger is executed.

    테이블과 해당 열에 대 한 보고서를 사용 하 여 sp_help 또는 sp_helpconstraint합니다.For a report on a table and its columns, use sp_help or sp_helpconstraint. 사용 하 여 테이블의 이름을 바꾸려면 sp_rename합니다.To rename a table, use sp_rename. 에 대 한 보고서 뷰 및 테이블에 종속 된 저장된 프로시저를 사용 하 여 sys.dm_sql_referenced_entitiessys.dm_sql_referencing_entities합니다.For a report on the views and stored procedures that depend on a table, use sys.dm_sql_referenced_entities and sys.dm_sql_referencing_entities.

테이블 정의 내의 NULL 허용 여부 규칙Nullability Rules Within a Table Definition

열의 Null 허용 여부에 따라 해당 열의 데이터로 Null 값(NULL)을 허용할 수 있는지 여부가 결정됩니다.The nullability of a column determines whether that column can allow a null value (NULL) as the data in that column. NULL은 0 또는 공백이 아니며 항목을 만들지 않았거나 명시적인 NULL을 지정했음을 의미하는 것으로 일반적으로 값을 알 수 없거나 적용할 수 없음을 나타냅니다.NULL is not zero or blank: NULL means no entry was made or an explicit NULL was supplied, and it typically implies that the value is either unknown or not applicable.

CREATE TABLE 또는 ALTER TABLE 문을 사용하여 테이블을 만들거나 변경할 때는 데이터베이스 및 세션 설정이 열 정의에 사용된 데이터 형식의 Null 허용 여부에 영향을 미치고 덮어 쓸 가능성이 있습니다.When you use CREATE TABLE or ALTER TABLE to create or alter a table, database and session settings influence and possibly override the nullability of the data type that is used in a column definition. 비계산 열은 항상 NULL 또는 NOT NULL로 명시적으로 정의하는 것이 좋으며 사용자 정의 데이터 형식을 사용할 때는 열에 해당 데이터 형식의 기본 Null 허용 여부를 적용하는 것이 좋습니다.We recommend that you always explicitly define a column as NULL or NOT NULL for noncomputed columns or, if you use a user-defined data type, that you allow the column to use the default nullability of the data type. 스파스 열은 항상 NULL을 허용해야 합니다.Sparse columns must always allow NULL.

열의 Null 허용 여부를 명시적으로 지정하지 않은 경우 열의 Null 허용 여부는 다음 표의 규칙을 따릅니다.When column nullability is not explicitly specified, column nullability follows the rules shown in the following table.

열 데이터 형식Column data type 규칙Rule
별칭 데이터 형식Alias data type 데이터베이스 엔진Database Engine은 데이터 형식을 만들 때 지정한 Null 허용 여부를 사용합니다.The 데이터베이스 엔진Database Engine uses the nullability that is specified when the data type was created. 데이터 형식의 기본 null 허용 여부를 확인 하려면 사용 하 여 sp_help합니다.To determine the default nullability of the data type, use sp_help.
CLR 사용자 정의 형식(CLR user-defined type)CLR user-defined type 열 정의에 따라 Null 허용 여부를 결정합니다.Nullability is determined according to the column definition.
시스템이 제공하는 데이터 형식System-supplied data type 시스템이 제공하는 데이터 형식에 옵션이 하나뿐인 경우에는 이 옵션이 우선 순위를 갖습니다.If the system-supplied data type has only one option, it takes precedence. 타임 스탬프 NULL이 아님 데이터 형식 이어야 합니다.timestamp data types must be NOT NULL. SET를 사용하여 모든 세션 설정을 ON으로 설정한 경우:When any session settings are set ON by using SET:
ANSI_NULL_DFLT_ON = ON, NULL이 할당 됩니다.ANSI_NULL_DFLT_ON = ON, NULL is assigned.
ANSI_NULL_DFLT_OFF = ON, NOT NULL이 할당 됩니다.ANSI_NULL_DFLT_OFF = ON, NOT NULL is assigned.

ALTER DATABASE를 사용하여 모든 데이터베이스 설정을 구성한 경우:When any database settings are configured by using ALTER DATABASE:
ANSI_NULL_DEFAULT_ON = ON, NULL이 할당 됩니다.ANSI_NULL_DEFAULT_ON = ON, NULL is assigned.
ANSI_NULL_DEFAULT_OFF = ON, NOT NULL이 할당 됩니다.ANSI_NULL_DEFAULT_OFF = ON, NOT NULL is assigned.

ANSI_NULL_DEFAULT에 대 한 데이터베이스 설정을 보려면 사용 하 여는 sys.databases 카탈로그 뷰To view the database setting for ANSI_NULL_DEFAULT, use the sys.databases catalog view

세션에 대해 어떠한 ANSI_NULL_DFLT 옵션도 설정하지 않고 데이터베이스를 기본값(ANSI_NULL_DEFAULT가 OFF)으로 설정하면 기본값인 NOT NULL이 할당됩니다.When neither of the ANSI_NULL_DFLT options is set for the session and the database is set to the default (ANSI_NULL_DEFAULTis OFF), the default of NOT NULL is assigned.

열이 계산 열인 경우에는 항상 데이터베이스 엔진Database Engine이 열의 Null 허용 여부를 자동으로 결정합니다.If the column is a computed column, its nullability is always automatically determined by the 데이터베이스 엔진Database Engine. 이러한 유형의 열 null 허용 여부를 확인 하려면 COLUMNPROPERTY 함수를 사용 하 여는 AllowsNull 속성입니다.To find out the nullability of this type of column, use the COLUMNPROPERTY function with the AllowsNull property.

참고

SQL Server ODBC 드라이버 및 SQL Server용 Microsoft OLE DB Provider는 모두 기본적으로 ANSI_NULL_DFLT_ON이 ON으로 설정되어 있습니다.The SQL Server ODBC driver and Microsoft OLE DB Provider for SQL Server both default to having ANSI_NULL_DFLT_ON set to ON. ODBC 및 OLE DB 사용자는 ODBC 데이터 원본에서 이를 구성하거나 응용 프로그램이 설정한 연결 속성 또는 특성을 사용하여 이를 구성할 수 있습니다.ODBC and OLE DB users can configure this in ODBC data sources, or with connection attributes or properties set by the application.

Data CompressionData Compression

시스템 테이블에는 압축을 사용할 수 없습니다.System tables cannot be enabled for compression. 테이블을 만들 때 데이터 압축은 달리 지정하지 않는 한 NONE으로 설정됩니다.When you are creating a table, data compression is set to NONE, unless specified otherwise. 범위를 벗어난 파티션 목록을 지정하면 오류가 발생합니다.If you specify a list of partitions or a partition that is out of range, an error will be generated. 데이터 압축에 대한 자세한 내용은 데이터 압축을 참조하세요.For a more information about data compression, see Data Compression.

압축 상태를 변경할 경우 테이블, 인덱스 또는 파티션에 어떤 영향을 주는지 확인하려면 sp_estimate_data_compression_savings 저장 프로시저를 사용합니다.To evaluate how changing the compression state will affect a table, an index, or a partition, use the sp_estimate_data_compression_savings stored procedure.

PermissionsPermissions

데이터베이스에는 CREATE TABLE 권한이 필요하고 테이블을 만들 구성표에는 ALTER 권한이 필요합니다.Requires CREATE TABLE permission in the database and ALTER permission on the schema in which the table is being created.

CREATE TABLE 문에 있는 열을 CLR 사용자 정의 형식으로 정의하는 경우 해당 유형의 소유권이나 이에 대한 REFERENCES 권한이 필요합니다.If any columns in the CREATE TABLE statement are defined to be of a CLR user-defined type, either ownership of the type or REFERENCES permission on it is required.

CREATE TABLE 문의 열에 연관된 XML 스키마 컬렉션이 있는 경우 XML 스키마 컬렉션의 소유권이나 이에 대한 REFERENCES 권한이 필요합니다.If any columns in the CREATE TABLE statement have an XML schema collection associated with them, either ownership of the XML schema collection or REFERENCES permission on it is required.

모든 사용자는 tempdb에 임시 테이블을 만들 수 있습니다.Any user can create temporary tables in tempdb.

Examples

1.A. 열에 PRIMARY KEY 제약 조건 만들기Create a PRIMARY KEY constraint on a column

다음 예에서는 EmployeeID 테이블의 Employee 열에 클러스터형 인덱스가 있는 PRIMARY KEY 제약 조건에 대한 열 정의를 보여 줍니다.The following example shows the column definition for a PRIMARY KEY constraint with a clustered index on the EmployeeID column of the Employee table. 제약 조건 이름을 지정하지 않았기 때문에 시스템에서 제약 조건 이름을 제공합니다.Because a constraint name is not specified, the system supplies the constraint name.

CREATE TABLE dbo.Employee (EmployeeID int  
PRIMARY KEY CLUSTERED);  

2.B. FOREIGN KEY 제약 조건 사용Using FOREIGN KEY constraints

FOREIGN KEY 제약 조건은 다른 테이블을 참조하는 데 사용됩니다.A FOREIGN KEY constraint is used to reference another table. 외래 키는 단일 열 키 또는 복수 열 키가 될 수 있습니다.Foreign keys can be single-column keys or multicolumn keys. 다음 예에서는 SalesOrderHeader 테이블을 참조하는 SalesPerson 테이블에 대한 단일 열 FOREIGN KEY 제약 조건을 보여 줍니다.This following example shows a single-column FOREIGN KEY constraint on the SalesOrderHeader table that references the SalesPerson table. 단일 열 FOREIGN KEY 제약 조건에는 REFERENCES 절만 필요합니다.Only the REFERENCES clause is required for a single-column FOREIGN KEY constraint.

SalesPersonID int NULL  
REFERENCES SalesPerson(SalesPersonID)  

또한 명시적으로 FOREIGN KEY 절을 사용하여 열 특성을 다시 정할 수 있습니다.You can also explicitly use the FOREIGN KEY clause and restate the column attribute. 두 테이블에서 같은 열 이름을 사용할 필요는 없습니다.Note that the column name does not have to be the same in both tables.

FOREIGN KEY (SalesPersonID) REFERENCES SalesPerson(SalesPersonID)  

테이블 제약 조건으로 복수 열 키 제약 조건을 만듭니다.Multicolumn key constraints are created as table constraints. AdventureWorks2012AdventureWorks2012 데이터베이스에서 SpecialOfferProduct 테이블은 복수 열 PRIMARY KEY를 포함합니다.In the AdventureWorks2012AdventureWorks2012 database, the SpecialOfferProduct table includes a multicolumn PRIMARY KEY. 다음 예에서는 다른 테이블에서 이 키를 참조하는 방법을 보여 줍니다. 명시적인 제약 조건 이름은 선택적입니다.The following example shows how to reference this key from another table; an explicit constraint name is optional.

CONSTRAINT FK_SpecialOfferProduct_SalesOrderDetail FOREIGN KEY  
 (ProductID, SpecialOfferID)  
REFERENCES SpecialOfferProduct (ProductID, SpecialOfferID)  

3.C. UNIQUE 제약 조건 사용Using UNIQUE constraints

UNIQUE 제약 조건은 기본 키가 아닌 열에 고유성을 적용합니다.UNIQUE constraints are used to enforce uniqueness on nonprimary key columns. 다음 예에서는 Name 테이블의 Product 열이 고유한 것이어야 한다는 제한을 적용합니다.The following example enforces a restriction that the Name column of the Product table must be unique.

Name nvarchar(100) NOT NULL  
UNIQUE NONCLUSTERED  

4.D. DEFAULT 정의 사용Using DEFAULT definitions

기본값은 값을 지정하지 않은 경우 사용할 값을 INSERT 및 UPDATE 문으로 제공합니다.Defaults supply a value (with the INSERT and UPDATE statements) when no value is supplied. 예를 들어 AdventureWorks2012AdventureWorks2012 데이터베이스는 회사에서 직원이 담당하는 각기 다른 업무를 나열하는 조회 테이블을 포함할 수 있습니다.For example, the AdventureWorks2012AdventureWorks2012 database could include a lookup table listing the different jobs employees can fill in the company. 각각의 업무를 기술하는 열에 실제 설명을 명시적으로 입력하지 않으면 문자열 기본값으로 설명을 제공할 수 있습니다.Under a column that describes each job, a character string default could supply a description when an actual description is not entered explicitly.

DEFAULT 'New Position - title not formalized yet'  

DEFAULT 정의는 제약 조건 외에도 함수를 포함할 수 있습니다.In addition to constants, DEFAULT definitions can include functions. 항목의 현재 날짜를 보려면 다음 예를 사용하십시오.Use the following example to get the current date for an entry.

DEFAULT (getdate())  

무항 함수 검색도 데이터 무결성을 향상시킵니다.A niladic-function scan can also improve data integrity. 행을 삽입한 사용자를 추적하려면 USER에 대한 무항 함수를 사용하십시오.To keep track of the user that inserted a row, use the niladic-function for USER. 무항 함수를 괄호로 묶지 마십시오.Do not enclose the niladic-functions with parentheses.

DEFAULT USER  

5.E. CHECK 제약 조건 사용Using CHECK constraints

다음 예에서는 CreditRating 테이블의 Vendor 열에 입력한 값에 대한 제한을 보여 줍니다.The following example shows a restriction made to values that are entered into the CreditRating column of the Vendor table. 제약 조건은 명명되지 않았습니다.The constraint is unnamed.

CHECK (CreditRating >= 1 and CreditRating <= 5)  

다음 예에서는 테이블의 열에 입력된 문자 데이터에 대한 패턴 제한이 있는 명명된 제약 조건을 보여 줍니다.This example shows a named constraint with a pattern restriction on the character data entered into a column of a table.

CONSTRAINT CK_emp_id CHECK (emp_id LIKE   
'[A-Z][A-Z][A-Z][1-9][0-9][0-9][0-9][0-9][FM]'   
OR emp_id LIKE '[A-Z]-[A-Z][1-9][0-9][0-9][0-9][0-9][FM]')  

다음 예에서는 값이 특정 목록에 있도록 하거나 지정한 패턴을 따르도록 지정합니다.This example specifies that the values must be within a specific list or follow a specified pattern.

CHECK (emp_id IN ('1389', '0736', '0877', '1622', '1756')  
OR emp_id LIKE '99[0-9][0-9]')  

6.F. 전체 테이블 정의 표시Showing the complete table definition

다음 예에서는 AdventureWorks2012AdventureWorks2012 데이터베이스에 만든 PurchaseOrderDetail 테이블에 대한 모든 제약 조건 정의를 가진 전체 테이블 정의를 보여 줍니다.The following example shows the complete table definitions with all constraint definitions for table PurchaseOrderDetail created in the AdventureWorks2012AdventureWorks2012 database. 예제를 실행하기 위해 테이블 스키마가 dbo로 변경됩니다.Note that to run the sample, the table schema is changed to dbo.

CREATE TABLE dbo.PurchaseOrderDetail  
(  
    PurchaseOrderID int NOT NULL  
        REFERENCES Purchasing.PurchaseOrderHeader(PurchaseOrderID),  
    LineNumber smallint NOT NULL,  
    ProductID int NULL   
        REFERENCES Production.Product(ProductID),  
    UnitPrice money NULL,  
    OrderQty smallint NULL,  
    ReceivedQty float NULL,  
    RejectedQty float NULL,  
    DueDate datetime NULL,  
    rowguid uniqueidentifier ROWGUIDCOL  NOT NULL  
        CONSTRAINT DF_PurchaseOrderDetail_rowguid DEFAULT (newid()),  
    ModifiedDate datetime NOT NULL   
        CONSTRAINT DF_PurchaseOrderDetail_ModifiedDate DEFAULT (getdate()),  
    LineTotal  AS ((UnitPrice*OrderQty)),  
    StockedQty  AS ((ReceivedQty-RejectedQty)),  
    CONSTRAINT PK_PurchaseOrderDetail_PurchaseOrderID_LineNumber  
               PRIMARY KEY CLUSTERED (PurchaseOrderID, LineNumber)  
               WITH (IGNORE_DUP_KEY = OFF)  
)   
ON PRIMARY;  

7.G. XML 스키마 컬렉션 유형의 xml 열을 가진 테이블 만들기Creating a table with an xml column typed to an XML schema collection

다음 예에서는 XML 스키마 컬렉션 xml 유형의 HRResumeSchemaCollection 열이 있는 테이블을 만듭니다.The following example creates a table with an xml column that is typed to XML schema collection HRResumeSchemaCollection. DOCUMENT 키워드를 지정 하는 각 인스턴스에 xml 데이터 형식에 column_name 하나의 최상위 요소만 포함 될 수 있습니다.The DOCUMENT keyword specifies that each instance of the xml data type in column_name can contain only one top-level element.

CREATE TABLE HumanResources.EmployeeResumes   
   (LName nvarchar(25), FName nvarchar(25),   
    Resume xml( DOCUMENT HumanResources.HRResumeSchemaCollection) );  

8.H. 분할된 테이블 만들기Creating a partitioned table

다음 예에서는 테이블이나 인덱스를 4개의 파티션으로 분할하는 파티션 함수를 만듭니다.The following example creates a partition function to partition a table or index into four partitions. 그런 다음 4개의 파티션을 각각 보관할 파일 그룹을 지정하는 파티션 구성표를 만듭니다.Then, the example creates a partition scheme that specifies the filegroups in which to hold each of the four partitions. 마지막으로 파티션 구성표를 사용하는 테이블을 만듭니다.Finally, the example creates a table that uses the partition scheme. 이 예에서는 데이터베이스에 이미 파일 그룹이 있다고 가정합니다.This example assumes the filegroups already exist in the database.

CREATE PARTITION FUNCTION myRangePF1 (int)  
    AS RANGE LEFT FOR VALUES (1, 100, 1000) ;  
GO  

CREATE PARTITION SCHEME myRangePS1  
    AS PARTITION myRangePF1  
    TO (test1fg, test2fg, test3fg, test4fg) ;  
GO  

CREATE TABLE PartitionTable (col1 int, col2 char(10))  
    ON myRangePS1 (col1) ;  
GO  

col1PartitionTable 열 값을 바탕으로 하여 다음과 같은 방법으로 파티션을 할당합니다.Based on the values of column col1 of PartitionTable, the partitions are assigned in the following ways.

파일 그룹Filegroup test1fgtest1fg test2fgtest2fg test3fgtest3fg test4fgtest4fg
파티션Partition 1.1 22 33 44
Values 열 1 <= 1col 1 <= 1 c o l 1 > 1 AND col1 <= 100col1 > 1 AND col1 <= 100 c o l 1 > 100 AND col1 <= 1, 000col1 > 100 AND col1 <= 1,000 col1 > 1000col1 > 1000

9.I. 열에 uniqueidentifier 데이터 형식 사용Using the uniqueidentifier data type in a column

다음 예에서는 uniqueidentifier 열이 있는 테이블을 만듭니다.The following example creates a table with a uniqueidentifier column. 이 예에서는 PRIMARY KEY 제약 조건을 사용하여 사용자가 중복 값을 삽입하지 못하도록 테이블을 보호하고 NEWSEQUENTIALID() 제약 조건의 DEFAULT 함수를 사용하여 새 행에 대한 값을 제공합니다.The example uses a PRIMARY KEY constraint to protect the table against users inserting duplicated values, and it uses the NEWSEQUENTIALID() function in the DEFAULT constraint to provide values for new rows. uniqueidentifier 열을 $ROWGUID 키워드로 참조할 수 있도록 이 열에 ROWGUIDCOL 속성이 적용됩니다.The ROWGUIDCOL property is applied to the uniqueidentifier column so that it can be referenced using the $ROWGUID keyword.

CREATE TABLE dbo.Globally_Unique_Data  
    (guid uniqueidentifier   
        CONSTRAINT Guid_Default DEFAULT   
        NEWSEQUENTIALID() ROWGUIDCOL,  
    Employee_Name varchar(60)  
    CONSTRAINT Guid_PK PRIMARY KEY (guid) );  

10.J. 계산 열에 식 사용Using an expression for a computed column

다음 예에서는 (low + high)/2 계산 열을 계산하기 위해 식(myavg)을 사용하는 방법을 보여 줍니다.The following example shows the use of an expression ((low + high)/2) for calculating the myavg computed column.

CREATE TABLE dbo.mytable   
    ( low int, high int, myavg AS (low + high)/2 ) ;  

11.K. 사용자 정의 형식의 열을 기반으로 계산 열 만들기Creating a computed column based on a user-defined type column

다음 예에서는 유형의 어셈블리와 유형 자체를 현재 데이터베이스에 이미 만들었다고 가정하고 사용자 정의 형식 utf8string으로 정의된 하나의 열을 가진 테이블을 만드는 방법을 보여 줍니다.The following example creates a table with one column defined as user-defined type utf8string, assuming that the type's assembly, and the type itself, have already been created in the current database. 두 번째 열에 따라 정의 됩니다 utf8string, 메서드를 사용 하 여 ToString()type(class) utf8string 열에 대 한 값을 계산 합니다.A second column is defined based on utf8string, and uses method ToString() of type(class)utf8string to compute a value for the column.

CREATE TABLE UDTypeTable   
    ( u utf8string, ustr AS u.ToString() PERSISTED ) ;  

12.L. 계산 열에 USER_NAME 함수 사용Using the USER_NAME function for a computed column

다음 예에서는 USER_NAME() 열에 myuser_name 함수를 사용하는 방법을 보여 줍니다.The following example uses the USER_NAME() function in the myuser_name column.

CREATE TABLE dbo.mylogintable  
    ( date_in datetime, user_id int, myuser_name AS USER_NAME() ) ;  

13.M. FILESTREAM 열이 있는 테이블 만들기Creating a table that has a FILESTREAM column

다음 예에서는 FILESTREAMPhoto가 있는 테이블을 만듭니다.The following example creates a table that has a FILESTREAM column Photo. 하나 이상의 FILESTREAM 열이 있는 테이블에는 하나의 ROWGUIDCOL 열이 있어야 합니다.If a table has one or more FILESTREAM columns, the table must have one ROWGUIDCOL column.

CREATE TABLE dbo.EmployeePhoto  
    (  
    EmployeeId int NOT NULL PRIMARY KEY,  
    ,Photo varbinary(max) FILESTREAM NULL  
    ,MyRowGuidColumn uniqueidentifier NOT NULL ROWGUIDCOL  
        UNIQUE DEFAULT NEWID()  
    );  

14.N. 행 압축을 사용하는 테이블 만들기Creating a table that uses row compression

다음 예에서는 행 압축을 사용하는 테이블을 만듭니다.The following example creates a table that uses row compression.

CREATE TABLE dbo.T1   
(c1 int, c2 nvarchar(200) )  
WITH (DATA_COMPRESSION = ROW);  

추가 데이터 압축 예 참조 데이터 압축합니다.For additional data compression examples, see Data Compression.

15.O. 스파스 열 및 열 집합이 있는 테이블 만들기Creating a table that has sparse columns and a column set

다음 예에서는 스파스 열이 있는 테이블과 두 개의 스파스 열 및 열 집합이 있는 테이블을 만드는 방법을 보여 줍니다.The following examples show to how to create a table that has a sparse column, and a table that has two sparse columns and a column set. 이 예에서는 기본 구문을 사용합니다.The examples use the basic syntax. 더 복잡 한 예제를 참조 하십시오. 스파스 열을 사용 하 여열 집합 사용합니다.For more complex examples, see Use Sparse Columns and Use Column Sets.

이 예에서는 스파스 열이 있는 테이블을 만듭니다.This example creates a table that has a sparse column.

CREATE TABLE dbo.T1  
    (c1 int PRIMARY KEY,  
    c2 varchar(50) SPARSE NULL ) ;  

이 예에서는 두 개의 스파스 열과 CSet이라는 열 집합이 있는 테이블을 만듭니다.This example creates a table that has two sparse columns and a column set named CSet.

CREATE TABLE T1  
    (c1 int PRIMARY KEY,  
    c2 varchar(50) SPARSE NULL,  
    c3 int SPARSE NULL,  
    CSet XML COLUMN_SET FOR ALL_SPARSE_COLUMNS ) ;  

16.P. 시스템 버전 관리 디스크 기반 임시 테이블 만들기Creating a system-versioned disk-based temporal table

적용 대상: SQL Server 2016SQL Server 2016 통해 SQL Server 2017SQL Server 2017Azure SQL 데이터베이스Azure SQL Database합니다.Applies to: SQL Server 2016SQL Server 2016 through SQL Server 2017SQL Server 2017 and Azure SQL 데이터베이스Azure SQL Database.

다음 예제는 새 기록 테이블에 연결 된 임시 테이블을 만드는 방법과 기존 기록 테이블에 연결 된 임시 테이블을 만드는 방법을 보여 줍니다.The following examples show how to create a temporal table linked to a new history table, and how to create a temporal table linked to an existing history table. 임시 테이블을 시스템 버전 관리에 사용할 테이블을 설정 하도록 정의 된 기본 키가 있어야 하는 참고 합니다.Note that the temporal table must have a primary key defined to be enabled for the table to be enabled for system versioning. 참조에서 시스템 버전 관리를 추가 하거나 기존 테이블에 시스템 버전 관리를 제거 하는 방법을 보여 주는 예제를 보려면 예제합니다.For examples showing how to add or remove system versioning on an existing table, see System Versioning in Examples. 사용 사례를 참조 하십시오. 임시 테이블합니다.For use cases, see Temporal Tables.

이 예제는 새 기록 테이블에 연결 된 새 임시 테이블을 만듭니다.This example creates a new temporal table linked to a new history table.

CREATE TABLE Department   
(  
    DepartmentNumber char(10) NOT NULL PRIMARY KEY CLUSTERED,   
    DepartmentName varchar(50) NOT NULL,   
    ManagerID int  NULL,   
    ParentDepartmentNumber char(10) NULL,   
    SysStartTime datetime2 GENERATED ALWAYS AS ROW START HIDDEN NOT NULL,   
    SysEndTime datetime2 GENERATED ALWAYS AS ROW END HIDDEN NOT NULL,     
    PERIOD FOR SYSTEM_TIME (SysStartTime,SysEndTime)     
)  
WITH (SYSTEM_VERSIONING = ON);  

이 예에서는 기존 기록 테이블에 연결 된 새 임시 테이블을 만듭니다.This example creates a new temporal table linked to an existing history table.


--Existing table   
CREATE TABLE Department_History   
(  
    DepartmentNumber char(10) NOT NULL,   
    DepartmentName varchar(50) NOT NULL,   
    ManagerID int  NULL,   
    ParentDepartmentNumber char(10) NULL,   
    SysStartTime datetime2 NOT NULL,   
    SysEndTime datetime2 NOT NULL   
);  
--Temporal table  
CREATE TABLE Department   
(  
    DepartmentNumber char(10) NOT NULL PRIMARY KEY CLUSTERED,   
    DepartmentName varchar(50) NOT NULL,   
    ManagerID INT  NULL,   
    ParentDepartmentNumber char(10) NULL,   
    SysStartTime datetime2 GENERATED ALWAYS AS ROW START HIDDEN NOT NULL,   
    SysEndTime datetime2 GENERATED ALWAYS AS ROW END HIDDEN NOT NULL,     
    PERIOD FOR SYSTEM_TIME (SysStartTime,SysEndTime)    
)  
WITH   
    (SYSTEM_VERSIONING = ON   
        (HISTORY_TABLE = dbo.Department_History, DATA_CONSISTENCY_CHECK = ON )  
    );  

17.Q. 시스템 버전 메모리 액세스에 최적화 된 임시 테이블 만들기Creating a system-versioned memory-optimized temporal table

적용 대상: SQL Server 2016SQL Server 2016 통해 SQL Server 2017SQL Server 2017Azure SQL 데이터베이스Azure SQL Database합니다.Applies to: SQL Server 2016SQL Server 2016 through SQL Server 2017SQL Server 2017 and Azure SQL 데이터베이스Azure SQL Database.

다음 예제에는 시스템 버전 메모리 액세스에 최적화 된 임시 테이블을 새 디스크 기반 기록 테이블에 연결을 만드는 방법을 보여 줍니다.The following example shows how to create a system-versioned memory-optimized temporal table linked to a new disk-based history table.

이 예제는 새 기록 테이블에 연결 된 새 임시 테이블을 만듭니다.This example creates a new temporal table linked to a new history table.

CREATE SCHEMA History  
GO  
CREATE TABLE dbo.Department   
(  
    DepartmentNumber char(10) NOT NULL PRIMARY KEY CLUSTERED,   
    DepartmentName varchar(50) NOT NULL,   
    ManagerID int  NULL,   
    ParentDepartmentNumber char(10) NULL,   
    SysStartTime datetime2 GENERATED ALWAYS AS ROW START HIDDEN NOT NULL,   
    SysEndTime datetime2 GENERATED ALWAYS AS ROW END HIDDEN NOT NULL,     
    PERIOD FOR SYSTEM_TIME (SysStartTime,SysEndTime)     
)  
WITH   
    (  
        MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA,  
            SYSTEM_VERSIONING = ON ( HISTORY_TABLE = History.DepartmentHistory )   
    );  

이 예에서는 기존 기록 테이블에 연결 된 새 임시 테이블을 만듭니다.This example creates a new temporal table linked to an existing history table.


--Existing table   
CREATE TABLE Department_History   
(  
    DepartmentNumber char(10) NOT NULL,   
    DepartmentName varchar(50) NOT NULL,   
    ManagerID int  NULL,   
    ParentDepartmentNumber char(10) NULL,   
    SysStartTime datetime2 NOT NULL,   
    SysEndTime datetime2 NOT NULL   
);  
--Temporal table  
CREATE TABLE Department   
(  
    DepartmentNumber char(10) NOT NULL PRIMARY KEY CLUSTERED,   
    DepartmentName varchar(50) NOT NULL,   
    ManagerID INT  NULL,   
    ParentDepartmentNumber char(10) NULL,   
    SysStartTime datetime2 GENERATED ALWAYS AS ROW START HIDDEN NOT NULL,   
    SysEndTime datetime2 GENERATED ALWAYS AS ROW END HIDDEN NOT NULL,     
    PERIOD FOR SYSTEM_TIME (SysStartTime,SysEndTime)    
)  
WITH   
    (SYSTEM_VERSIONING = ON   
        (HISTORY_TABLE = dbo.Department_History, DATA_CONSISTENCY_CHECK = ON )  
    );  

18.R. 암호화 된 열이 있는 테이블 만들기Creating a table with encrypted columns

다음 예제에서는 두 개의 암호화 된 열이 있는 테이블을 만듭니다.The following example creates a table with two encrypted columns. 자세한 내용은 상시 암호화(데이터베이스 엔진#41;를 참조하세요.For more information, see Always Encrypted (Database Engine).

CREATE TABLE Customers (  
    CustName nvarchar(60)   
        ENCRYPTED WITH   
            (  
             COLUMN_ENCRYPTION_KEY = MyCEK,  
             ENCRYPTION_TYPE = RANDOMIZED,  
             ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256'  
            ),   
    SSN varchar(11) COLLATE  Latin1_General_BIN2  
        ENCRYPTED WITH   
            (  
             COLUMN_ENCRYPTION_KEY = MyCEK,  
             ENCRYPTION_TYPE = DETERMINISTIC ,  
             ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256'  
            ),   
    Age int NULL  
);  

S.는S. 인라인 필터링 된 인덱스 만들기Create an inline filtered index

인라인 필터링 된 인덱스는 테이블을 만듭니다.Creates a tables with an inline filtered index.

CREATE TABLE t1 
(
    c1 int,
    index IX1  (c1) WHERE c1 > 0   
)
GO

관련 항목:See Also

ALTER TABLE(Transact-SQL) ALTER TABLE (Transact-SQL)
Columnproperty( Transact SQL ) COLUMNPROPERTY (Transact-SQL)
CREATE INDEX(Transact-SQL) CREATE INDEX (Transact-SQL)
CREATE VIEW(Transact-SQL) CREATE VIEW (Transact-SQL)
데이터 형식(Transact-SQL) Data Types (Transact-SQL)
DROP index( Transact SQL ) DROP INDEX (Transact-SQL)
sys.dm_sql_referenced_entities(Transact-SQL) sys.dm_sql_referenced_entities (Transact-SQL)
sys.dm_sql_referencing_entities(Transact-SQL) sys.dm_sql_referencing_entities (Transact-SQL)
DROP table( Transact SQL ) DROP TABLE (Transact-SQL)
CREATE PARTITION FUNCTION(Transact-SQL) CREATE PARTITION FUNCTION (Transact-SQL)
CREATE PARTITION SCHEME(Transact-SQL) CREATE PARTITION SCHEME (Transact-SQL)
CREATE TYPE(Transact-SQL) CREATE TYPE (Transact-SQL)
EVENTDATA(Transact-SQL) EVENTDATA (Transact-SQL)
sp_help(Transact-SQL) sp_help (Transact-SQL)
sp_helpconstraint ( Transact SQL ) sp_helpconstraint (Transact-SQL)
sp_rename(Transact-SQL) sp_rename (Transact-SQL)
sp_spaceused( Transact SQL )sp_spaceused (Transact-SQL)