sp_addextendedproperty(Transact-SQL)sp_addextendedproperty (Transact-SQL)

적용 대상: 예SQL Server 예Azure SQL Database 아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

데이터베이스 개체에 새 확장 속성을 추가합니다.Adds a new extended property to a database object.

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

구문Syntax

  
sp_addextendedproperty  
    [ @name = ] { 'property_name' }  
    [ , [ @value = ] { 'value' }   
        [ , [ @level0type = ] { 'level0_object_type' }   
          , [ @level0name = ] { 'level0_object_name' }   
                [ , [ @level1type = ] { 'level1_object_type' }   
                  , [ @level1name = ] { 'level1_object_name' }   
                        [ , [ @level2type = ] { 'level2_object_type' }   
                          , [ @level2name = ] { 'level2_object_name' }   
                        ]   
                ]  
        ]   
    ]   
[;]  

인수Arguments

[ @name ] = {'property_name'}[ @name ] = { 'property_name' }
추가할 속성의 이름입니다.Is the name of the property to be added. property_name 됩니다 sysname NULL 일 수 없습니다.property_name is sysname and cannot be NULL. 또한 이름은 영숫자가 아닌 문자열 또는 공백 및 이진 값을 포함할 수 있습니다.Names can also include blank or non-alphanumeric character strings, and binary values.

[ @value=] {''}[ @value= ] { 'value'}
속성과 연결할 값입니다.Is the value to be associated with the property. 됩니다 sql_variant, 기본값은 NULL입니다.value is sql_variant, with a default of NULL. value 의 크기는 7,500바이트보다 클 수 없습니다.The size of value cannot be more than 7,500 bytes.

[ @level0type=] {'level0_object_type'}[ @level0type= ] { 'level0_object_type' }
수준 0 개체의 유형입니다.Is the type of level 0 object. level0_object_type 됩니다 varchar(128) , 기본값은 NULL입니다.level0_object_type is varchar(128), with a default of NULL.

유효한 입력은 ASSEMBLY, CONTRACT, EVENT NOTIFICATION, FILEGROUP, MESSAGE TYPE, PARTITION FUNCTION, PARTITION SCHEME, REMOTE SERVICE BINDING, ROUTE, SCHEMA, SERVICE, USER, TRIGGER, TYPE, PLAN GUIDE 및 NULL입니다.Valid inputs are ASSEMBLY, CONTRACT, EVENT NOTIFICATION, FILEGROUP, MESSAGE TYPE, PARTITION FUNCTION, PARTITION SCHEME, REMOTE SERVICE BINDING, ROUTE, SCHEMA, SERVICE, USER, TRIGGER, TYPE, PLAN GUIDE, and NULL.

중요

수준 1 유형 개체의 확정 속성에서 USER를 수준 0 유형으로 지정하는 기능은 이후 버전의 SQL ServerSQL Server에서 제거될 예정입니다.The ability to specify USER as a level 0 type in an extended property of a level 1 type object will be removed in a future version of SQL ServerSQL Server. 대신 SCHEMA를 수준 0 유형으로 사용합니다.Use SCHEMA as the level 0 type instead. 예를 들어 테이블에 확장 속성을 정의할 때 사용자 이름 대신 테이블의 스키마를 지정합니다.For example, when defining an extended property on a table, specify the schema of the table instead of a user name. TYPE을 수준 0 유형으로 지정하는 기능은 이후 버전의 SQL ServerSQL Server에서 제거될 예정입니다.The ability to specify TYPE as level-0 type will be removed in a future version of SQL ServerSQL Server. TYPE의 경우 수준 0 유형으로 SCHEMA를 사용하고 수준 1 유형으로 TYPE을 사용합니다.For TYPE, use SCHEMA as the level 0 type and TYPE as the level 1 type.

[ @level0name=] {'level0_object_name'}[ @level0name= ] { 'level0_object_name' }
지정된 수준 0 개체 유형의 이름입니다.Is the name of the level 0 object type specified. level0_object_name 됩니다 sysname 이며 기본값은 NULL입니다.level0_object_name is sysname with a default of NULL.

[ @level1type=] {'level1_object_type'}[ @level1type= ] { 'level1_object_type' }
수준 1 개체의 유형입니다.Is the type of level 1 object. level1_object_type 됩니다 varchar(128) , 기본값은 NULL입니다.level1_object_type is varchar(128), with a default of NULL. 유효한 입력에는 집계, 기본, 함수, LOGICAL FILE NAME, 프로시저, 큐, 규칙, 시퀀스, 동의어, 테이블, TABLE_TYPE, 형식, 뷰, XML SCHEMA COLLECTION 및 NULL은입니다.Valid inputs are AGGREGATE, DEFAULT, FUNCTION, LOGICAL FILE NAME, PROCEDURE, QUEUE, RULE, SEQUENCE, SYNONYM, TABLE, TABLE_TYPE, TYPE, VIEW, XML SCHEMA COLLECTION, and NULL.
[ @level1name=] {'level1_object_name'}[ @level1name= ] { 'level1_object_name' }
지정된 수준 1 개체 유형의 이름입니다.Is the name of the level 1 object type specified. level1_object_name 됩니다 sysname, 기본값은 NULL입니다.level1_object_name is sysname, with a default of NULL.

[ @level2type=] {'level2_object_type'}[ @level2type= ] { 'level2_object_type' }
수준 2 개체의 유형입니다.Is the type of level 2 object. level2_object_type 됩니다 varchar(128) , 기본값은 NULL입니다.level2_object_type is varchar(128), with a default of NULL. 유효한 입력은 COLUMN, CONSTRAINT, EVENT NOTIFICATION, INDEX, PARAMETER, TRIGGER 및 NULL입니다.Valid inputs are COLUMN, CONSTRAINT, EVENT NOTIFICATION, INDEX, PARAMETER, TRIGGER, and NULL.

[ @level2name=] {'level2_object_name'}[ @level2name= ] { 'level2_object_name' }
지정된 수준 2 개체 유형의 이름입니다.Is the name of the level 2 object type specified. level2_object_name 됩니다 sysname, 기본값은 NULL입니다.level2_object_name is sysname, with a default of NULL.

반환 코드 값Return Code Values

0(성공) 또는 1(실패)0 (success) or 1 (failure)

설명Remarks

개체의 확장된 속성을 지정 하는 데는 SQL ServerSQL Server 데이터베이스는 세 가지 수준으로 분류 됩니다. 0, 1 및 2입니다.For specifying extended properties, the objects in a SQL ServerSQL Server database are classified into three levels: 0, 1, and 2. 수준 0은 최고 수준이며 데이터베이스 범위에 포함된 개체로 정의됩니다.Level 0 is the highest level and is defined as objects that are contained at the database scope. 수준 1 개체는 스키마나 USER 범위에 포함되어 있고 수준 2 개체는 수준 1 개체에 포함되어 있습니다.Level 1 objects are contained in a schema or user scope, and level 2 objects are contained by level 1 objects. 모든 수준의 개체에 대해 확장 속성을 정의할 수 있습니다.Extended properties can be defined for objects at any of these levels.

한 수준에 있는 개체를 참조할 때는 해당 개체를 소유하거나 포함하는 더 높은 수준의 개체 이름을 지정해야 합니다.References to an object in one level must be qualified with the names of the higher level objects that own or contain them. 예를 들어 확장 속성을 테이블 열(수준 2)에 추가할 때 열을 포함하는 테이블 이름(수준 1)과 테이블을 포함하는 스키마(수준 0)도 지정해야 합니다.For example, when you add an extended property to a table column (level 2), you must also specify the table name (level 1) that contains the column and the schema (level 0) that contains the table.

모든 개체 유형과 이름이 Null인 경우 속성은 현재 업데이트 자체에 속하게 됩니다.If all object types and names are null, the property belongs to the current database itself.

확장 속성은 시스템 개체, 사용자 정의 데이터베이스 범위 밖의 개체 또는 인수에 유효한 입력으로 나열되지 않은 개체에 대해 허용되지 않습니다.Extended properties are not allowed on system objects, objects outside the scope of a user-defined database, or objects not listed in Arguments as valid inputs.

메모리 최적화 테이블에 확장된 속성이 허용 되지 않습니다.Extended properties are not allowed on memory-optimized tables.

확장 속성 복제Replicating Extended Properties

확장 속성은 게시자와 구독자 간의 초기 동기화 수행 시에만 복제됩니다.Extended properties are replicated only in the initial synchronization between the Publisher and the Subscriber. 초기 동기화 후에 확장 속성을 추가하거나 수정하면 변경 내용이 복제되지 않습니다.If you add or modify an extended property after the initial synchronization, the change is not replicated. 데이터베이스 개체를 복제 하는 방법에 대 한 자세한 내용은 참조 하세요. 데이터 및 데이터베이스 개체 게시합니다.For more information about how to replicate database objects, see Publish Data and Database Objects.

SCHEMA와 사용자Schema vs. User

확장 속성을 데이터베이스 개체에 적용할 때 USER를 수준 0 유형으로 지정하는 것은 이름 확인에 혼동을 일으킬 수 있으므로 사용하지 않는 것이 좋습니다.We do not recommend specifying USER as a level 0 type when you apply an extended property to a database object, because this can cause name resolution ambiguity. 예를 들어 사용자 Mary가 두 개의 스키마(Mary 및 MySchema)를 소유하고 있고 두 스키마 모두 MyTable이라는 테이블을 포함하고 있다고 가정합니다.For example, assume user Mary owns two schemas (Mary and MySchema) and these schemas both contain a table named MyTable. Mary MyTable 테이블에 확장된 속성을 추가 하 고 지정 @level0type = N'USER' 하십시오 @level0name = Mary, 적용 되는지 확장된 속성이 어느 테이블에 명확 하지 않습니다.If Mary adds an extended property to table MyTable and specifies @level0type = N'USER', @level0name = Mary, it is not clear to which table the extended property is applied. 이전 버전과의 호환성을 유지하기 위해 SQL ServerSQL Server는 해당 속성을 Mary라는 스키마에 포함된 테이블에 적용합니다.To maintain backward compatibility, SQL ServerSQL Server will apply the property to the table that is contained in the schema named Mary.

사용 권한Permissions

Db_owner 및 db_ddladmin 고정 데이터베이스 역할의 멤버는 다음 예외를 사용 하 여 모든 개체에 확장된 속성을 추가할 수 있습니다: db_ddladmin은 데이터베이스 자체 또는 사용자나 역할에 속성을 추가할 수 없습니다.Members of the db_owner and db_ddladmin fixed database roles can add extended properties to any object with the following exception: db_ddladmin cannot add properties to the database itself, or to users or roles.

사용자는 자신이 소유하거나 ALTER 또는 CONTROL 권한이 있는 개체에 확장 속성을 추가할 수 있습니다.Users can add extended properties to objects they own or have ALTER or CONTROL permissions on.

Examples

1.A. 데이터베이스에 확장 속성 추가Adding an extended property to a database

다음 예에서는 값이 'Caption''AdventureWorks2012 Sample OLTP Database' 속성 이름이 AdventureWorks2012 예제 데이터베이스에 추가됩니다.The following example adds the property name 'Caption' with a value of 'AdventureWorks2012 Sample OLTP Database' to the AdventureWorks2012 sample database.

USE AdventureWorks2012;  
GO  
--Add a caption to the AdventureWorks2012 Database object itself.  
EXEC sp_addextendedproperty   
@name = N'Caption',   
@value = 'AdventureWorks2012 Sample OLTP Database';  

2.B. 테이블의 열에 확장 속성 추가Adding an extended property to a column in a table

다음 예에서는 PostalCode 테이블의 Address열에 캡션 속성이 추가됩니다.The following example adds a caption property to column PostalCode in table Address.

USE AdventureWorks2012;  
GO  
EXEC sp_addextendedproperty   
@name = N'Caption',   
@value = 'Postal code is a required column.',  
@level0type = N'Schema', @level0name = 'Person',  
@level1type = N'Table',  @level1name = 'Address',  
@level2type = N'Column', @level2name = 'PostalCode';  
GO  

3.C. 열에 입력 마스크 속성 추가Adding an input mask property to a column

다음 예에서는99999 or 99999-9999 or #### ###테이블의 PostalCode 열에 ' Address' 입력 마스크 속성을 추가합니다.The following example adds an input mask property '99999 or 99999-9999 or #### ###' to the column PostalCode in the table Address.

USE AdventureWorks2012;  
GO  
EXEC sp_addextendedproperty   
@name = N'Input Mask ', @value = '99999 or 99999-9999 or #### ###',  
@level0type = N'Schema', @level0name = 'Person',  
@level1type = N'Table', @level1name = 'Address',   
@level2type = N'Column',@level2name = 'PostalCode';  
GO  

4.D. 파일 그룹에 확장 속성 추가Adding an extended property to a filegroup

다음 예에서는 PRIMARY 파일 그룹에 확장 속성을 추가합니다.The following example adds an extended property to the PRIMARY filegroup.

USE AdventureWorks2012;  
GO  
EXEC sys.sp_addextendedproperty   
@name = N'MS_DescriptionExample',   
@value = N'Primary filegroup for the AdventureWorks2012 sample database.',   
@level0type = N'FILEGROUP', @level0name = 'PRIMARY';  
GO  

5.E. 스키마에 확장 속성 추가Adding an extended property to a schema

다음 예에서는 HumanResources 스키마에 확장 속성을 추가합니다.The following example adds an extended property to the HumanResources schema.

USE AdventureWorks2012;  
GO  
EXECUTE sys.sp_addextendedproperty   
@name = N'MS_DescriptionExample',  
@value = N'Contains objects related to employees and departments.',  
@level0type = N'SCHEMA',   
@level0name = 'HumanResources';  

6.F. 테이블에 확장 속성 추가Adding an extended property to a table

다음 예에서는 Address 스키마의 Person 테이블에 확장 속성을 추가합니다.The following example adds an extended property to the Address table in the Person schema.

USE AdventureWorks2012;  
GO  
EXEC sys.sp_addextendedproperty   
@name = N'MS_DescriptionExample',   
@value = N'Street address information for customers, employees, and vendors.',   
@level0type = N'SCHEMA', @level0name = 'Person',  
@level1type = N'TABLE',  @level1name = 'Address';  
GO  

7.G. 역할에 확장 속성 추가Adding an extended property to a role

다음 예에서는 애플리케이션 역할을 만들고 해당 역할에 확장 속성을 추가합니다.The following example creates an application role and adds an extended property to the role.

USE AdventureWorks2012;   
GO  
CREATE APPLICATION ROLE Buyers  
WITH Password = '987G^bv876sPY)Y5m23';   
GO  
EXEC sys.sp_addextendedproperty   
@name = N'MS_Description',   
@value = N'Application Role for the Purchasing Department.',  
@level0type = N'USER',  
@level0name = 'Buyers';  

8.H. 유형에 확장 속성 추가Adding an extended property to a type

다음 예에서는 유형에 확장 속성을 추가합니다.The following example adds an extended property to a type.

USE AdventureWorks2012;   
GO  
EXEC sys.sp_addextendedproperty   
@name = N'MS_Description',   
@value = N'Data type (alias) to use for any column that represents an order number. For example a sales order number or purchase order number.',   
@level0type = N'SCHEMA',   
@level0name = N'dbo',   
@level1type = N'TYPE',   
@level1name = N'OrderNumber';  

9.I. 사용자에 확장 속성 추가Adding an extended property to a user

다음 예에서는 사용자를 만들고 해당 사용자에 확장 속성을 추가합니다.The following example creates a user and adds an extended property to the user.

USE AdventureWorks2012;   
GO  
CREATE USER CustomApp WITHOUT LOGIN ;   
GO  
EXEC sys.sp_addextendedproperty   
@name = N'MS_Description',   
@value = N'User for an application.',   
@level0type = N'USER',   
@level0name = N'CustomApp';  

관련 항목See Also

데이터베이스 엔진 저장 프로시저 (TRANSACT-SQL) Database Engine Stored Procedures (Transact-SQL)
sys.fn_listextendedproperty (TRANSACT-SQL) sys.fn_listextendedproperty (Transact-SQL)
sp_dropextendedproperty (TRANSACT-SQL) sp_dropextendedproperty (Transact-SQL)
sp_updateextendedproperty (TRANSACT-SQL)sp_updateextendedproperty (Transact-SQL)