sp_addextendedproperty(Transact-SQL)
데이터베이스 개체에 새 확장 속성을 추가합니다.
구문
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' }
]
]
]
]
인수
[ @name ] = { 'property_name' }
추가할 속성의 이름입니다. property_name은 sysname이며 NULL이 될 수 없습니다.또한 이름은 영숫자가 아닌 문자열 또는 공백 및 이진 값을 포함할 수 있습니다.[ @value= ] { 'value' }
속성과 연결할 값입니다. value는 sql_variant이며 기본값은 NULL입니다. value의 크기는 7,500바이트보다 클 수 없습니다.[ @level0type= ] { 'level0_object_type' }
수준 0 개체의 유형입니다. level0_object_type은 varchar(128)이며 기본값은 NULL입니다.유효한 입력은 ASSEMBLY, CONTRACT, EVENT NOTIFICATION, FILEGROUP, MESSAGE TYPE, PARTITION FUNCTION, PARTITION SCHEME, REMOTE SERVICE BINDING, ROUTE, SCHEMA, SERVICE, USER, TRIGGER, TYPE 및 NULL입니다.
중요 수준 0 유형 USER와 TYPE은 나중 버전의 SQL Server에서 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 말고, 현재 이 기능을 사용하는 응용 프로그램은 수정하십시오. USER 대신 SCHEMA를 수준 0 유형으로 사용합니다. TYPE의 경우 수준 0 유형으로 SCHEMA를 사용하고 수준 1 유형으로 TYPE을 사용합니다.
[ @level0name= ] { 'level0_object_name' }
지정된 수준 0 개체 유형의 이름입니다. level0_object_name은 sysname이며 기본값은 NULL입니다.[ @level1type = ] { 'level1_object_type' }
수준 1 개체의 유형입니다. level1_object_type은 varchar(128)이며 기본값은 NULL입니다. 유효한 입력은 AGGREGATE, DEFAULT, FUNCTION, LOGICAL FILE NAME, PROCEDURE, QUEUE, RULE, SYNONYM, TABLE, TABLE_TYPE, TYPE, VIEW, XML SCHEMA COLLECTION 및 NULL입니다.[ @level1name= ] { 'level1_object_name' }
지정된 수준 1 개체 유형의 이름입니다. level1_object_name은 sysname이며 기본값은 NULL입니다.[ @level2type= ] { 'level2_object_type' }
수준 2 개체의 유형입니다. level2_object_type은 varchar(128)이며 기본값은 NULL입니다. 유효한 입력은 COLUMN, CONSTRAINT, EVENT NOTIFICATION, INDEX, PARAMETER, TRIGGER 및 NULL입니다.[ @level2name= ] { 'level2_object_name' }
지정된 수준 2 개체 유형의 이름입니다. level2_object_name은 sysname이며 기본값은 NULL입니다.
반환 코드 값
0(성공) 또는 1(실패)
주의
확장 속성을 지정하기 위해 SQL Server 데이터베이스의 개체는 세 수준(0, 1, 2)으로 분류됩니다. 수준 0은 최고 수준이며 데이터베이스 범위에 포함된 개체로 정의됩니다. 수준 1 개체는 스키마나 USER 범위에 포함되어 있고 수준 2 개체는 수준 1 개체에 포함되어 있습니다. 모든 수준의 개체에 대해 확장 속성을 정의할 수 있습니다.
한 수준에 있는 개체를 참조할 때는 개체를 소유하거나 포함하는 더 높은 수준의 개체 이름을 지정해야 합니다. 예를 들어 확장 속성을 테이블 열(수준 2)에 추가할 때 열을 포함하는 테이블 이름(수준 1)과 테이블을 포함하는 스키마(수준 0)도 지정해야 합니다.
개체 및 유효한 수준 0, 1 및 2 유형에 대한 전체 목록은 데이터베이스 개체의 확장 속성 사용을 참조하십시오.
모든 개체 유형과 이름이 Null인 경우 속성은 현재 업데이트 자체에 속하게 됩니다.
확장 속성은 시스템 개체, 사용자 정의 데이터베이스 범위 밖의 개체 또는 인수에 유효한 입력으로 나열되지 않은 개체에 대해 허용되지 않습니다.
확장 속성 복제
확장 속성은 게시자와 구독자 간의 초기 동기화에서만 복제됩니다. 초기 동기화 후에 확장 속성을 추가하거나 수정하면 변경 내용이 복제되지 않습니다. 데이터베이스 개체를 복제하는 방법은 데이터 및 데이터베이스 개체 게시를 참조하십시오.
SCHEMA와 USER 비교
확장 속성을 데이터베이스 개체에 적용할 때 USER를 수준 0 유형으로 지정하는 것은 이름 확인에 혼동을 일으킬 수 있으므로 사용하지 않는 것이 좋습니다. 예를 들어 사용자 Mary가 두 개의 스키마(Mary 및 MySchema)를 소유하고 있고 두 스키마 모두 MyTable이라는 테이블을 포함하고 있다고 가정합니다. Mary가 확장 속성을 MyTable 테이블에 추가하고 @level0type = N'USER',@level0name = Mary라고 지정하면 확장 속성이 어느 테이블에 적용되는지 분명하지 않습니다. 이전 버전과의 호환성을 유지하기 위해 SQL Server는 해당 속성을 Mary라는 스키마에 포함된 테이블에 적용합니다. 사용자와 스키마에 대한 자세한 내용은 사용자와 스키마 분리를 참조하십시오.
사용 권한
db_owner 및 db_ddladmin 고정 데이터베이스 역할의 멤버는 확장 속성을 모든 개체에 추가할 수 있습니다. 단, db_ddladmin은 데이터베이스 자체 또는 사용자나 역할에 속성을 추가할 수 없습니다.
사용자는 자신이 소유하거나 ALTER 또는 CONTROL 권한이 있는 개체에 확장 속성을 추가할 수 있습니다. 필요한 사용 권한의 전체 목록은 데이터베이스 개체의 확장 속성 사용을 참조하십시오.
예
1. 데이터베이스에 확장 속성 추가
다음 예에서는 값이 'AdventureWorks Sample OLTP Database'인 'Caption' 속성 이름이 AdventureWorks 예제 데이터베이스에 추가됩니다.
USE AdventureWorks;
GO
--Add a caption to the AdventureWorks Database object itself.
EXEC sp_addextendedproperty
@name = N'Caption', @value = 'AdventureWorks Sample OLTP Database';
2. 테이블의 열에 확장 속성 추가
다음 예에서는 Address 테이블의 PostalCode 열에 캡션 속성이 추가됩니다.
USE AdventureWorks;
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. 열에 입력 마스크 속성 추가
다음 예에서는 Address 테이블의 PostalCode 열에 '99999 or 99999-9999 or #### ###' 입력 마스크 속성이 추가됩니다.
USE AdventureWorks;
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. 파일 그룹에 확장 속성 추가
다음 예에서는 확장 속성이 PRIMARY 파일 그룹에 추가됩니다.
USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_DescriptionExample',
@value = N'Primary filegroup for the AdventureWorks sample database.',
@level0type = N'FILEGROUP', @level0name = [PRIMARY];
GO