sp_addextendedproperty(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

데이터베이스 개체에 새 확장 속성을 추가합니다.

Transact-SQL 구문 표기 규칙

구문

sp_addextendedproperty
    [ @name = ] N'name'
    [ , [ @value = ] value ]
    [ , [ @level0type = ] 'level0type' ]
    [ , [ @level0name = ] N'level0name' ]
    [ , [ @level1type = ] 'level1type' ]
    [ , [ @level1name = ] N'level1name' ]
    [ , [ @level2type = ] 'level2type' ]
    [ , [ @level2name = ] N'level2name' ]
[ ; ]

인수

[ @name = ] N'name'

추가할 속성의 이름입니다. @name 기본값이 없는 sysname이며, 사용할 수 없습니다NULL. 이름에는 공백 또는 영숫자가 아닌 문자열과 이진 값이 포함될 수 있습니다.

[ @value = ] value

속성과 연결할 값입니다. @value 기본값NULLsql_variant. @value 크기는 7,500바이트를 초과할 수 없습니다.

[ @level0type = ] 'level0type'

수준 0 개체의 형식입니다. @level0type 기본값NULL인 varchar(128)입니다.

잘못된 입력:

  • ASSEMBLY
  • CONTRACT
  • EVENT NOTIFICATION
  • FILEGROUP
  • MESSAGE TYPE
  • PARTITION FUNCTION
  • PARTITION SCHEME
  • REMOTE SERVICE BINDING
  • ROUTE
  • SCHEMA
  • SERVICE
  • USER
  • TRIGGER
  • TYPE
  • PLAN GUIDE
  • NULL

Important

수준 1 형식 개체의 확장 속성에서 수준 0 형식으로 지정 USER 하는 기능은 이후 버전의 SQL Server에서 제거됩니다. 대신 수준 0 형식으로 사용합니다 SCHEMA . 예를 들어 테이블에 확장 속성을 정의할 때 사용자 이름 대신 테이블의 스키마를 지정합니다. 수준 0 형식으로 지정 TYPE 하는 기능은 이후 버전의 SQL Server에서 제거됩니다. TYPE의 경우 수준 0 형식 및 TYPE 수준 1 형식으로 사용합니다SCHEMA.

[ @level0name = ] N'level0name'

지정된 수준 0 개체 형식의 이름입니다. @level0name sysname이며 기본값은 .입니다NULL.

[ @level1type = ] 'level1type'

수준 1 개체의 형식입니다. @level1type 기본값NULL인 varchar(128)입니다.

잘못된 입력:

  • AGGREGATE
  • DEFAULT
  • FUNCTION
  • LOGICAL FILE NAME
  • PROCEDURE
  • QUEUE
  • RULE
  • SEQUENCE
  • SYNONYM
  • TABLE
  • TABLE_TYPE
  • TYPE
  • VIEW
  • XML SCHEMA COLLECTION
  • NULL

[ @level1name = ] N'level1name'

지정된 수준 1 개체 형식의 이름입니다. @level1name sysname이며 기본값은 .입니다NULL.

[ @level2type = ] 'level2type'

수준 2 개체의 형식입니다. @level2type 기본값NULL인 varchar(128)입니다.

잘못된 입력:

  • COLUMN
  • CONSTRAINT
  • EVENT NOTIFICATION
  • INDEX
  • PARAMETER
  • TRIGGER
  • NULL

[ @level2name = ] N'level2name'

지정된 수준 2 개체 형식의 이름입니다. @level2name sysname이며 기본값은 .입니다NULL.

반환 코드 값

0 (성공) 또는 1 (실패).

설명

확장 속성을 지정하면 SQL Server 데이터베이스의 개체는 0, 1, 2의 세 가지 수준으로 분류됩니다. 수준 0은 가장 높은 수준이며 데이터베이스 범위에 포함된 개체로 정의됩니다. 수준 1 개체는 스키마 또는 사용자 범위에 포함되고 수준 2 개체는 수준 1 개체에 포함됩니다. 이러한 수준의 개체에 대해 확장 속성을 정의할 수 있습니다.

한 수준의 개체에 대한 참조는 해당 개체를 소유하거나 포함하는 상위 수준 개체의 이름으로 한정되어야 합니다. 예를 들어 테이블 열(수준 2)에 확장 속성을 추가할 때 열과 테이블이 포함된 스키마(수준 0)가 포함된 테이블 이름(수준 1)도 지정해야 합니다.

모든 개체 형식과 이름이 null이면 속성은 현재 데이터베이스 자체에 속합니다.

시스템 개체, 사용자 정의 데이터베이스의 범위를 벗어난 개체 또는 인수에 유효한 입력으로 나열되지 않은 개체에는 확장 속성이 허용되지 않습니다.

확장 속성은 메모리 최적화 테이블에서 허용되지 않습니다.

확장 속성 복제

확장 속성은 게시자와 구독자 간의 초기 동기화 수행 시에만 복제됩니다. 초기 동기화 후에 확장 속성을 추가하거나 수정하면 변경 내용이 복제본(replica) 않습니다. 데이터베이스 개체를 복제본(replica) 방법에 대한 자세한 내용은 데이터 및 데이터베이스 개체 게시를 참조하세요.

스키마 및 사용자

확장 속성을 데이터베이스 개체에 적용할 USER 때는 이름 확인이 모호해질 수 있으므로 수준 0 형식으로 지정하지 않는 것이 좋습니다. 예를 들어 사용자가 Mary 두 개의 스키마(MaryMySchema)를 소유하고 있다고 가정하고 이러한 스키마에는 둘 다 이름이 지정된 MyTable테이블이 포함되어 있다고 가정합니다. Mary가 테이블에 MyTable 확장 속성을 추가하고 지정하는 @level0type = 'USER', @level0name = N'Mary'경우 확장 속성이 적용되는 테이블이 명확하지 않습니다. 이전 버전과의 호환성을 기본 위해 SQL Server는 명명Mary된 스키마에 포함된 테이블에 속성을 적용합니다.

사용 권한

db_owner 및 db_ddladmin 고정 데이터베이스 역할의 멤버는 데이터베이스 자체 또는 사용자 또는 역할에 속성을 추가할 수 db_ddladmin 예외 를 제외하고 모든 개체에 확장 속성을 추가할 수 있습니다.

사용자는 소유하거나 ALTER 또는 CONTROL 권한이 있는 개체에 확장 속성을 추가할 수 있습니다.

예제

A. 데이터베이스에 확장 속성 추가

다음 예제에서는 값 AdventureWorks2022 Sample OLTP Database 이 있는 속성 이름을 Caption 샘플 데이터베이스에 AdventureWorks2022 추가합니다.

USE AdventureWorks2022;
GO

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

B. 테이블의 열에 확장 속성 추가

다음 예제에서는 테이블Address의 열 PostalCode 에 캡션 속성을 추가합니다.

USE AdventureWorks2022;
GO

EXEC sp_addextendedproperty @name = N'Caption',
    @value = 'Postal code is a required column.',
    @level0type = 'SCHEMA', @level0name = N'Person',
    @level1type = 'TABLE', @level1name = N'Address',
    @level2type = 'COLUMN', @level2name = N'PostalCode';
GO

C. 열에 입력 마스크 속성 추가

다음 예제에서는 테이블Address의 열 PostalCode 에 입력 마스크 속성을 99999 or 99999-9999 or #### ### 추가합니다.

USE AdventureWorks2022;
GO

EXEC sp_addextendedproperty @name = N'Input Mask ',
    @value = '99999 or 99999-9999 or #### ###',
    @level0type = 'SCHEMA', @level0name = N'Person',
    @level1type = 'TABLE', @level1name = N'Address',
    @level2type = 'COLUMN', @level2name = N'PostalCode';
GO

D. 파일 그룹에 확장 속성 추가

다음 예에서는 PRIMARY 파일 그룹에 확장 속성을 추가합니다.

USE AdventureWorks2022;
GO

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

E. 스키마에 확장 속성 추가

다음 예제에서는 스키마에 확장 속성을 HumanResources 추가합니다.

USE AdventureWorks2022;
GO

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

F. 테이블에 확장 속성 추가

다음 예제에서는 스키마의 Address 테이블에 Person 확장 속성을 추가합니다.

USE AdventureWorks2022;
GO

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

G. 역할에 확장 속성 추가

다음 예에서는 애플리케이션 역할을 만들고 해당 역할에 확장 속성을 추가합니다.

USE AdventureWorks2022;
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 = 'USER', @level0name = N'Buyers';

H. 형식에 확장 속성 추가

다음 예제에서는 확장 속성을 형식에 추가합니다.

USE AdventureWorks2022;
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 = 'SCHEMA', @level0name = N'dbo',
    @level1type = 'TYPE', @level1name = N'OrderNumber';

9\. 사용자에게 확장 속성 추가

다음 예제에서는 사용자를 만들고 확장 속성을 사용자에게 추가합니다.

USE AdventureWorks2022;
GO

CREATE USER CustomApp WITHOUT LOGIN;
GO

EXEC sys.sp_addextendedproperty @name = N'MS_Description',
    @value = N'User for an application.',
    @level0type = 'USER', @level0name = N'CustomApp';