데이터베이스 개체의 확장 속성 사용
업데이트: 2005년 12월 5일
확장 속성을 사용하여 데이터베이스 개체 또는 데이터베이스 자체의 속성으로 설명이나 지시 등의 텍스트, 입력 마스크 및 형식 지정 규칙을 추가할 수 있습니다. 예를 들어 스키마, 스키마의 뷰 또는 뷰의 열에 확장 속성을 추가할 수 있습니다. 데이터베이스에 확장 속성이 저장되기 때문에 속성을 읽는 모든 응용 프로그램에서 개체를 같은 방식으로 평가할 수 있습니다. 따라서 시스템의 모든 프로그램에서 데이터를 일관된 방식으로 처리할 수 있습니다.
다음과 같은 작업에 확장 속성을 사용할 수 있습니다.
- 테이블, 뷰 또는 열의 캡션을 지정합니다. 그러면 응용 프로그램에서 테이블, 뷰 또는 열의 정보를 표시하는 사용자 인터페이스에 동일한 캡션을 사용할 수 있습니다.
- Transact-SQL 문을 실행하기 전에 응용 프로그램에서 데이터 유효성을 검사할 수 있도록 열의 입력 마스크를 지정합니다. 예를 들어 우편 번호나 전화 번호 열에 필요한 형식을 확장 속성에 지정할 수 있습니다.
- 열에 데이터를 표시할 때 사용할 형식 지정 규칙을 지정합니다.
- 응용 프로그램에서 사용자에게 표시할 수 있는 특정 데이터베이스 개체의 설명을 기록합니다. 예를 들어 데이터 사전 응용 프로그램이나 보고서에서 이러한 설명을 사용할 수 있습니다.
- 열이 표시될 창의 위치와 크기를 지정합니다.
[!참고] 확장 속성을 사용하여 개체에 대한 중요한 정보를 숨기지 마십시오. 개체에 대한 사용 권한이 부여된 모든 사용자가 해당 개체의 확장 속성을 볼 수 있습니다. 예를 들어 사용자에게 테이블에 대한 SELECT 권한을 부여하면 사용자가 해당 테이블의 확장 속성을 볼 수 있습니다.
확장 속성 정의
각 확장 속성에는 사용자 정의 이름과 값이 있습니다. 확장 속성의 값은 최대 7,500바이트의 데이터를 포함할 수 있는 sql_variant 값입니다. 한 개체에 확장 속성을 여러 개 추가할 수 있습니다.
확장 속성을 지정하는 경우 SQL Server 데이터베이스의 개체는 0, 1, 2의 세 가지 수준으로 분류됩니다. 수준 0이 가장 높은 수준이며 데이터베이스 범위에 포함되는 개체로 정의됩니다. 수준 1 개체는 스키마나 사용자 범위에 포함되고 수준 2 개체는 수준 1 개체에 포함됩니다. 개체에 대한 확장 속성은 세 수준 중 하나로 정의할 수 있습니다.
한 수준의 개체를 참조할 때는 해당 개체를 소유하거나 포함하는 더 높은 수준의 개체 이름도 지정해야 합니다. 예를 들어 테이블 열에 수준 2의 확장 속성을 추가할 때 해당 열을 포함하는 수준 1의 테이블 이름과 해당 테이블을 포함하는 수준 0의 스키마도 지정해야 합니다.
다음 예에서는 확장 속성 값 'Minimum inventory quantity.'
를 Production
스키마에 포함된 Product
테이블의 SafetyStockLevel
열에 추가합니다.
USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_DescriptionExample',
@value = N'Minimum inventory quantity.',
@level0type = N'SCHEMA', @level0name = Production,
@level1type = N'TABLE', @level1name = Product,
@level2type = N'COLUMN', @level2name = SafetyStockLevel;
GO
개체에 확장 속성 추가
다음 표에서는 확장 속성을 추가할 수 있는 개체를 나열합니다. 개체별로 유효한 수준 0, 수준 1, 및 수준 2 개체 유형과 함께 확장 속성을 추가하거나 삭제하거나 보는 데 필요한 사용 권한도 나열됩니다.
집계
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 | 설명 |
---|---|---|---|---|
0 |
SCHEMA 또는 USER |
|
|
USER 대신 SCHEMA를 사용해야 합니다. 이 항목의 뒤에 나오는 "SCHEMA와 USER 비교"를 참조하십시오. |
1 |
AGGREGATE |
집계 OBJECT에 대한 ALTER 권한 |
OBJECT에 대한 모든 권한 |
사용자 정의 CLR 집계 함수에 적용됩니다. |
어셈블리
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 |
---|---|---|---|
0 |
ASSEMBLY |
ASSEMBLY에 대한 ALTER 권한 |
ASSEMBLY에 대한 모든 권한 |
1 |
없음 |
|
|
2 |
없음 |
|
|
계약(Service Broker)
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 |
---|---|---|---|
0 |
CONTRACT |
CONTRACT에 대한 ALTER 권한 |
CONTRACT에 대한 모든 권한 |
1 |
없음 |
|
|
2 |
없음 |
|
|
데이터베이스
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 | 설명 |
---|---|---|---|---|
0 |
없음 |
DATABASE에 대한 ALTER 권한 |
DATABASE에 대한 CONTROL 권한 또는 DATABASE에 대한 TAKE OWNERSHIP 권한 또는 DATABASE에 대한 VIEW DEFINITION 권한 또는 SERVER에 대한 ALTER ANY DATABASE 권한 또는 SERVER에 대한 CREATE DATABASE 권한 |
데이터베이스 자체에 속성이 적용됩니다. |
1 |
없음 |
|
|
|
2 |
없음 |
|
|
|
예
다음 예에서는 AdventureWorks
예제 데이터베이스 자체에 확장 속성을 추가합니다.
USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_DescriptionExample',
@value = N'AdventureWorks Sample OLTP Database';
GO
기본
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 | 설명 |
---|---|---|---|---|
0 |
SCHEMA 또는 USER |
|
|
|
1 |
DEFAULT |
SCHEMA에 대한 ALTER 권한 |
HAS_DBACCESS = 1 |
이전 버전과의 호환성을 위해 제공됩니다. 자세한 내용은 SQL Server 2005 이후에는 지원되지 않는 데이터베이스 엔진 기능을 참조하십시오. |
2 |
없음 |
|
|
|
이벤트 알림
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 | 설명 |
---|---|---|---|---|
0 |
EVENT NOTIFICATION |
DATABASE에 대한 ALTER ANY DATABASE EVENT NOTIFICATION 권한 |
이벤트 알림의 소유자 또는 데이터베이스에 대한 CONTROL, ALTER, TAKE OWNERSHIP 또는 VIEW DEFINITION 권한 또는 ALTER ANY DATABASE EVENT NOTIFICATION |
데이터베이스에 의해 부모로 지정되는 데이베이스 수준 이벤트 알림에 적용됩니다. 서버 수준 이벤트 알림에는 확장 속성을 추가할 수 없습니다. |
1 |
없음 |
|
|
|
2 |
없음 |
|
|
|
파일 그룹 또는 파일 이름
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 |
---|---|---|---|
0 |
FILEGROUP |
DATABASE에 대한 ALTER 권한 |
HAS_DBACCESS = 1 |
1 |
LOGICAL FILE NAME |
DATABASE에 대한 ALTER 권한 |
HAS_DBACCESS = 1 |
2 |
없음 |
|
|
예
다음 예에서는 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
다음 예에서는 PRIMARY
파일 그룹의 논리적 파일 이름 AdventureWorks_Data
에 확장 속성을 추가합니다.
USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_DescriptionExample',
@value = N'Primary data file for the AdventureWorks sample database.',
@level0type = N'FILEGROUP', @level0name = [PRIMARY],
@level1type = N'Logical File Name', @level1name = AdventureWorks_Data;
GO
함수
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 | 설명 |
---|---|---|---|---|
0 |
SCHEMA 또는 USER |
|
|
USER 대신 SCHEMA를 사용해야 합니다. 이 항목의 뒤에 나오는 "SCHEMA와 USER 비교"를 참조하십시오. |
1 |
FUNCTION |
OBJECT 함수에 대한 ALTER 권한 |
COLUMN에 대한 모든 권한 또는 OBJECT에 대한 모든 권한 |
다음과 같은 사용자 정의 함수에 적용됩니다.
수준 2 유형을 지정하지 않으면 함수 자체에 속성이 적용됩니다. |
2 |
COLUMN |
OBJECT 함수에 대한 ALTER 권한 |
COLUMN에 대한 모든 권한 또는 OBJECT에 대한 모든 권한 |
|
2 |
CONSTRAINT |
OBJECT 함수에 대한 ALTER 권한 |
COLUMN에 대한 모든 권한 또는 OBJECT에 대한 모든 권한 |
|
2 |
PARAMETER |
OBJECT 함수에 대한 ALTER 권한 |
COLUMN에 대한 모든 권한 또는 OBJECT에 대한 모든 권한 |
|
예
다음 예에서는 사용자 정의 함수 ufnGetStock
에 확장 속성을 추가합니다.
USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_DescriptionExample',
@value = N'Scalar function returning the quantity of inventory for a specified ProductID.',
@level0type = N'SCHEMA', @level0name = [dbo],
@level1type = N'FUNCTION', @level1name = ufnGetStock;
GO
다음 예에서는 사용자 정의 함수 ufnGetStock
에 정의된 매개 변수 @ProductID
에 확장 속성을 추가합니다.
USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_DescriptionExample',
@value = N'Input parameter. Enter a valid ProductID.',
@level0type = N'SCHEMA', @level0name = [dbo],
@level1type = N'FUNCTION', @level1name = ufnGetStock,
@level2type = N'PARAMETER', @level2name ='@ProductID';
GO
메시지 유형
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 |
---|---|---|---|
0 |
MESSAGE TYPE |
MESSAGE TYPE에 대한 ALTER 권한 |
HAS_DBACCESS = 1 |
1 |
없음 |
|
|
2 |
없음 |
|
|
파티션 함수
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 |
---|---|---|---|
0 |
PARTITION FUNCTION |
DATABASE에 대한 ALTER ANY DATASPACE 권한 |
HAS_DBACCESS = 1 |
1 |
없음 |
|
|
2 |
없음 |
|
|
파티션 구성표
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 |
---|---|---|---|
0 |
PARTITION SCHEME |
DATABASE에 대한 ALTER ANY DATASPACE 권한 |
HAS_DBACCESS = 1 |
1 |
없음 |
|
|
2 |
없음 |
|
|
절차
수준
수준 유형
확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한
확장 속성을 보는 데 필요한 사용 권한
설명
0
SCHEMA 또는 USER
USER 대신 SCHEMA를 사용해야 합니다. 이 항목의 뒤에 나오는 "SCHEMA와 USER 비교"를 참조하십시오.
1
PROCEDURE
OBJECT 프로시저에 대한 ALTER 권한
참고:
sysadmin 고정 서버 역할의 멤버만 확장 저장 프로시저에 확장 속성을 추가할 수 있습니다.
OBJECT에 대한 모든 권한
다음과 같은 사용자 정의 저장 프로시저에 적용됩니다.
- CLR
- Transact-SQL
- 복제 필터
수준 2 유형을 지정하지 않으면 프로시저 자체에 속성이 적용됩니다.
2
PARAMETER
OBJECT 프로시저에 대한 ALTER 권한
OBJECT에 대한 모든 권한
큐(Service Broker)
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 | 설명 |
---|---|---|---|---|
0 |
SCHEMA 또는 USER |
|
|
USER 대신 SCHEMA를 사용해야 합니다. 이 항목의 뒤에 나오는 "SCHEMA와 USER 비교"를 참조하십시오. |
1 |
QUEUE |
OBJECT 큐에 대한 ALTER 권한 |
OBJECT에 대한 모든 권한 |
|
2 |
EVENT NOTIFICATION |
OBJECT 큐에 대한 ALTER 권한 |
이벤트 알림의 소유자 또는 큐에 대한 CONTROL, ALTER, TAKE OWNERSHIP 또는 VIEW DEFINITION 권한 또는 ALTER ANY DATABASE EVENT NOTIFICATION |
이벤트 알림 소유자가 큐 소유자와 다를 수 있습니다. |
원격 서비스 바인딩(Service Broker)
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 |
---|---|---|---|
0 |
REMOTE SERVICE BINDING |
REMOTE SERVICE BINDING에 대한 ALTER 권한 |
REMOTE SERVICE BINDING에 대한 모든 권한 |
1 |
없음 |
|
|
2 |
없음 |
|
|
경로(Service Broker)
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 |
---|---|---|---|
0 |
ROUTE |
REMOTE SERVICE BINDING에 대한 ALTER 권한 |
ROUTE에 대한 모든 권한 |
1 |
없음 |
|
|
2 |
없음 |
|
|
규칙
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 | 설명 |
---|---|---|---|---|
0 |
SCHEMA 또는 USER |
|
|
|
1 |
RULE |
SCHEMA에 대한 ALTER 권한 |
HAS_DBACCESS = 1 |
이전 버전과의 호환성을 위해 제공됩니다. 자세한 내용은 SQL Server 2005 이후에는 지원되지 않는 데이터베이스 엔진 기능을 참조하십시오. |
2 |
없음 |
|
|
|
스키마 또는 사용자
수준
수준 유형
확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한
확장 속성을 보는 데 필요한 사용 권한
설명
0
SCHEMA 또는 USER
SCHEMA 또는 USER에 대한 ALTER 권한
APPLICATION ROLE에 대한 모든 권한
또는
ROLE에 대한 모든 권한
또는
USER에 대한 모든 권한
수준 1 유형을 지정하지 않으면 스키마나 사용자 자체에 속성이 적용됩니다.
USER는 다음 중 하나일 수 있습니다.
- 응용 프로그램 역할
- 데이터베이스 역할
- SQL Server 사용자
- Windows 그룹
- Windows 사용자
사용자에게 확장 속성을 추가할 때만 USER를 사용해야 합니다.
중요:
수준 1 또는 수준 2 유형 개체에서 정의된 수준 0 유형의 USER는 나중 버전의 SQL Server에서는 제거됩니다. 향후 개발 작업에서는 이 기능을 사용하지 않도록 하고 현재 이 기능을 사용하는 응용 프로그램은 수정하십시오. 대신 SCHEMA를 수준 0 유형으로 사용합니다.
1
상황에 따라 다름
2
상황에 따라 다름
서비스
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 |
---|---|---|---|
0 |
SERVICE |
SERVICE에 대한 ALTER 권한 |
SERVICE에 대한 ALTER 권한 또는 SERVICE에 대한 CONTROL 권한 또는 SERVICE에 대한 TAKE OWNERSHIP 권한 또는 SERVICE에 대한 VIEW DEFINITION 권한 |
1 |
없음 |
|
|
2 |
없음 |
|
|
동의어
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 | 설명 |
---|---|---|---|---|
0 |
SCHEMA 또는 USER |
|
|
USER 대신 SCHEMA를 사용해야 합니다. 이 항목의 뒤에 나오는 "SCHEMA와 USER 비교"를 참조하십시오. |
1 |
SYNONYM |
SYNONYM에 대한 CONTROL 권한 |
OBJECT에 대한 모든 권한 |
|
2 |
없음 |
|
|
|
테이블
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 | 설명 |
---|---|---|---|---|
0 |
SCHEMA 또는 USER |
|
|
USER 대신 SCHEMA를 사용해야 합니다. 이 항목의 뒤에 나오는 "SCHEMA와 USER 비교"를 참조하십시오. |
1 |
TABLE |
OBJECT 테이블에 대한 ALTER 권한 |
COLUMN에 대한 모든 권한 또는 OBJECT에 대한 모든 권한 |
사용자 정의 테이블에 적용됩니다. 수준 2 유형을 지정하지 않으면 테이블 자체에 속성이 적용됩니다. |
2 |
COLUMN |
OBJECT 테이블에 대한 ALTER 권한 |
COLUMN에 대한 모든 권한 또는 OBJECT에 대한 모든 권한 |
|
2 |
CONSTRAINT |
OBJECT 테이블에 대한 ALTER 권한 |
OBJECT에 대한 ALTER 권한 또는 OBJECT에 대한 CONTROL 권한 또는 OBJECT에 대한 TAKE OWNERSHIP 권한 또는 OBJECT에 대한 VIEW DEFINITION 권한 |
다음과 같은 제약 조건에 적용됩니다.
|
2 |
INDEX |
OBJECT 테이블에 대한 ALTER 권한 |
COLUMN에 대한 모든 권한 또는 OBJECT에 대한 모든 권한 |
관계형 및 XML 인덱스에 적용됩니다. |
2 |
TRIGGER |
OBJECT 테이블에 대한 ALTER 권한 |
OBJECT에 대한 ALTER 권한 또는 OBJECT에 대한 CONTROL 권한 또는 OBJECT에 대한 TAKE OWNERSHIP 권한 또는 OBJECT에 대한 VIEW DEFINITION 권한 |
다음 DML 트리거에 적용됩니다.
DDL 트리거에 적용되지 않습니다. |
예
다음 예에서는 Person
스키마의 Address
테이블에 확장 속성을 추가합니다.
USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_Description',
@value = N'Street address information for customers, employees, and vendors.',
@level0type = N'SCHEMA', @level0name = Person,
@level1type = N'TABLE', @level1name = Address;
GO
다음 예에서는 Person
스키마의 Address
테이블에 대한 인덱스 IX_Address_StateProviceID
에 확장 속성을 추가합니다.
USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_DescriptionExample',
@value = N'Nonclustered index on StateProvinceID.',
@level0type = N'SCHEMA', @level0name = Person,
@level1type = N'TABLE', @level1name = Address,
@level2type = N'INDEX', @level2name = IX_Address_StateProvinceID;
GO
트리거
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 | 설명 |
---|---|---|---|---|
0 |
TRIGGER |
DATABASE에 대한 ALTER ANY TRIGGER 권한 |
DATABASE에 대한 ALTER ANY TRIGGER 권한 |
DDL 트리거에만 적용됩니다. |
1 |
없음 |
|
|
|
2 |
없음 |
|
|
|
유형
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 | 설명 |
---|---|---|---|---|
0 |
TYPE |
TYPE에 대한 CONTROL 권한 |
TYPE에 대한 모든 권한 |
이전 버전의 SQL Server에서 만든 사용자 정의 유형에 적용됩니다. 이전 버전과의 호환성을 위해 제공됩니다. 자세한 내용은 SQL Server 2005 이후에는 지원되지 않는 데이터베이스 엔진 기능을 참조하십시오. |
1 |
없음 |
|
|
|
2 |
없음 |
|
|
|
유형
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 | 설명 |
---|---|---|---|---|
0 |
SCHEMA 또는 USER |
|
|
USER 대신 SCHEMA를 사용해야 합니다. 이 항목의 뒤에 나오는 "SCHEMA와 USER 비교"를 참조하십시오. |
1 |
TYPE |
TYPE에 대한 CONTROL 권한 |
TYPE에 대한 모든 권한 |
|
2 |
없음 |
|
|
|
뷰
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 | 설명 |
---|---|---|---|---|
0 |
SCHEMA 또는 USER |
|
|
USER 대신 SCHEMA를 사용해야 합니다. 이 항목의 뒤에 나오는 "SCHEMA와 USER 비교"를 참조하십시오. |
1 |
VIEW |
OBJECT 뷰에 대한 ALTER 권한 |
COLUMN에 대한 모든 권한 또는 OBJECT에 대한 모든 권한 |
사용자 정의 뷰에 적용됩니다. 수준 2 유형을 지정하지 않으면 뷰 자체에 속성이 적용됩니다. |
2 |
COLUMN |
OBJECT 뷰에 대한 ALTER 권한 |
COLUMN에 대한 모든 권한 또는 OBJECT에 대한 모든 권한 |
|
2 |
INDEX |
OBJECT 뷰에 대한 ALTER 권한 |
COLUMN에 대한 모든 권한 또는 OBJECT에 대한 모든 권한 |
관계형 및 XML 인덱스에 적용됩니다. |
2 |
TRIGGER |
OBJECT 뷰에 대한 ALTER 권한 |
DATABASE에 대한 ALTER ANY TRIGGER 권한 또는 OBJECT에 대한 ALTER 권한 또는 OBJECT에 대한 CONTROL 권한 또는 OBJECT에 대한 TAKE OWNERSHIP 권한 또는 OBJECT에 대한 VIEW DEFINITION 권한 |
다음 DML 트리거에 적용됩니다.
DDL 트리거에 적용되지 않습니다. |
XML 스키마 컬렉션
수준 | 수준 유형 | 확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한 | 확장 속성을 보는 데 필요한 사용 권한 | 설명 |
---|---|---|---|---|
0 |
SCHEMA 또는 USER |
|
|
USER 대신 SCHEMA를 사용해야 합니다. 이 항목의 뒤에 나오는 "SCHEMA와 USER 비교"를 참조하십시오. |
1 |
XML SCHEMA COLLECTION |
XML SCHEMA COLLECTION에 대한 ALTER 권한 |
XML SCHEMA COLLECTION에 대한 ALTER 권한 또는 XML SCHEMA COLLECTION에 대한 CONTROL 권한 또는 XML SCHEMA COLLECTION에 대한 REFERENCES 권한 또는 XML SCHEMA COLLECTION에 대한 TAKE OWNERSHIP 권한 또는 XML SCHEMA COLLECTION에 대한 VIEW DEFINITION 권한 |
XML 네임스페이스에는 확장 속성을 추가할 수 없습니다. |
2 |
없음 |
|
|
|
확장 속성을 지원하지 않는 개체
다음 개체에는 확장 속성을 정의할 수 없습니다.
- 위의 표에 나열되지 않은 데이터베이스 범위 개체. 여기에는 전체 텍스트 개체가 포함됩니다.
- HTTP 끝점 등 데이터베이스 범위 밖의 개체
- 파티션 함수 매개 변수 등의 명명되지 않은 개체
- 인증서, 대칭 키, 비대칭 키 및 자격 증명
- 시스템 테이블, 카탈로그 뷰, 시스템 저장 프로시저 등의 시스템 정의 개체
SCHEMA와 USER 비교
이전 버전의 SQL Server의 경우 사용자는 테이블, 뷰, 트리거 등의 데이터베이스 개체를 소유합니다. 따라서 이러한 개체 중 하나에 확장 속성을 추가하고 수준 0 유형으로 사용자 이름을 지정할 수 있었습니다. 그러나 SQL Server 2005에서는 스키마를 소유하는 사용자로부터 독립된 스키마에 데이터베이스 개체가 포함됩니다.
SQL Server 2005에서는 데이터베이스 개체에 확장 속성을 적용할 때 수준 0 유형으로 USER를 지정하면 이름 확인이 모호해집니다. 예를 들어 사용자 Mary가 두 개의 스키마(Mary 및 MySchema)를 소유하고 있고 두 스키마 모두 MyTable이라는 테이블을 포함하고 있다고 가정합니다. Mary가 MyTable 테이블에 확장 속성을 추가하고 @level0type = N'USER'
, @level0name = Mary
를 지정하면 어느 테이블에 확장 속성이 적용되는지 명확하지 않습니다. 이전 버전과의 호환성을 유지하기 위해 SQL Server는 해당 속성을 Mary라는 스키마에 포함된 테이블에 적용합니다. 사용자와 스키마에 대한 자세한 내용은 사용자와 스키마 분리를 참조하십시오.
입력 마스크와 CHECK 제약 조건 사용 비교
테이블 또는 뷰 열에 허용되는 데이터 패턴을 지정하는 데 입력 마스크를 제공하는 확장 속성과 CHECK 제약 조건을 모두 사용할 수 있습니다. 다음과 같은 경우를 제외하고는 대부분의 사이트에서 두 방법 중 하나를 선택합니다.
- 이 테이블을 다루는 모든 프로그램이 입력 마스크 속성을 사용하도록 변경될 수 있을 때까지 CHECK 제약 조건이 임시 수단으로 사용되었습니다.
- 사이트에서 확장 속성을 읽지 않는 임의 도구를 통해 데이터를 업데이트할 수 있는 사용자도 지원합니다.
CHECK 제약 조건과 비교했을 때 입력 마스크의 이점은 논리가 응용 프로그램에서 적용된다는 것입니다. 따라서 사용자가 잘못된 형식의 데이터를 제공할 경우 응용 프로그램에서 자세한 정보를 제공하는 오류를 생성할 수 있습니다. 입력 마스크의 단점은 fn_listextendedproperty나 sys.extended_properties를 별도로 호출하여 속성을 얻어야 하고 마스크를 적용하는 논리를 모든 프로그램에 추가해야 한다는 것입니다.
확장 속성 복제
확장 속성은 게시자와 구독자 간의 초기 동기화에서만 복제됩니다. 초기 동기화 후에 확장 속성을 추가하거나 수정하면 변경 내용이 복제되지 않습니다. 데이터베이스를 복제하는 방법은 데이터 및 데이터베이스 개체 게시를 참조하십시오.
응용 프로그램에 확장 속성 사용
확장 속성은 데이터를 저장할 명명된 위치만 제공합니다. 속성을 쿼리하여 적절한 작업을 수행하도록 모든 응용 프로그램의 코드를 작성해야 합니다. 예를 들어 열에 캡션 속성을 추가해도 응용 프로그램에서 표시할 수 있는 캡션이 생성되지는 않습니다. 캡션을 읽고 올바르게 표시하도록 각 응용 프로그램의 코드를 작성해야 합니다.
확장 속성을 추가하려면
확장 속성을 업데이트하려면
확장 속성을 삭제하려면
확장 속성을 보려면
참고 항목
개념
관련 자료
데이터베이스 디자인
HAS_DBACCESS(Transact-SQL)
도움말 및 정보
변경 내역
릴리스 | 내역 |
---|---|
2005년 12월 5일 |
|