데이터베이스 개체의 확장 속성 사용

확장 속성을 사용하여 데이터베이스 개체 또는 데이터베이스 자체의 속성으로 설명이나 지시 등의 텍스트, 입력 마스크 및 형식 지정 규칙을 추가할 수 있습니다. 예를 들어 스키마, 스키마의 뷰 또는 뷰의 열에 확장 속성을 추가할 수 있습니다. 데이터베이스에 확장 속성이 저장되기 때문에 속성을 읽는 모든 응용 프로그램에서 개체를 같은 방식으로 평가할 수 있습니다. 따라서 시스템의 모든 프로그램에서 데이터를 일관된 방식으로 처리할 수 있습니다.

다음과 같은 작업에 확장 속성을 사용할 수 있습니다.

  • 테이블, 뷰 또는 열의 캡션을 지정합니다. 그러면 응용 프로그램에서 테이블, 뷰 또는 열의 정보를 표시하는 사용자 인터페이스에 동일한 캡션을 사용할 수 있습니다.

  • 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 AdventureWorks2008R2;
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

ASYMMETRIC KEY

CERTIFICATE에 대한 ALTER 권한

KEY에 대한 모든 권한

1

없음

 

 

2

없음

 

 

어셈블리

수준

수준 유형

확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한

확장 속성을 보는 데 필요한 사용 권한

0

ASSEMBLY

ASSEMBLY에 대한 ALTER 권한

ASSEMBLY에 대한 모든 권한

1

없음

 

 

2

없음

 

 

인증서

수준

수준 유형

확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한

확장 속성을 보는 데 필요한 사용 권한

0

CERTIFICATE

CERTIFICATE에 대한 ALTER 권한

CERTIFICATE에 대한 모든 권한

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

없음

 

 

 

다음 예에서는 AdventureWorks2008R2 예제 데이터베이스 자체에 확장 속성을 추가합니다.

USE AdventureWorks2008R2;
GO
EXEC sys.sp_addextendedproperty 
@name = N'MS_DescriptionExample', 
@value = N'AdventureWorks2008R2 Sample OLTP Database';
GO

기본

수준

수준 유형

확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한

확장 속성을 보는 데 필요한 사용 권한

설명

0

SCHEMA 또는 USER

 

 

 

1

DEFAULT

SCHEMA에 대한 ALTER 권한

HAS_DBACCESS = 1

이전 버전과의 호환성을 위해 제공됩니다. 자세한 내용은 SQL Server 2008 R2에서 사용되지 않는 데이터베이스 엔진 기능을 참조하십시오.

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 AdventureWorks2008R2;
GO
EXEC sys.sp_addextendedproperty 
@name = N'MS_DescriptionExample', 
@value = N'Primary filegroup for the AdventureWorks2008R2 sample database.', 
@level0type = N'FILEGROUP', @level0name = [PRIMARY];
GO

다음 예에서는 PRIMARY 파일 그룹의 논리적 파일 이름 AdventureWorks2008R2_Data에 확장 속성을 추가합니다.

USE AdventureWorks2008R2;
GO
EXEC sys.sp_addextendedproperty 
@name = N'MS_DescriptionExample', 
@value = N'Primary data file for the AdventureWorks2008R2 sample database.', 
@level0type = N'FILEGROUP', @level0name = [PRIMARY],
@level1type = N'Logical File Name', @level1name = AdventureWorks2008R2_Data;
GO

함수

수준

수준 유형

확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한

확장 속성을 보는 데 필요한 사용 권한

설명

0

SCHEMA 또는 USER

 

 

USER 대신 SCHEMA를 사용해야 합니다. 이 항목의 뒤에 나오는 "SCHEMA와 USER 비교"를 참조하십시오.

1

FUNCTION

OBJECT 함수에 대한 ALTER 권한

COLUMN에 대한 모든 권한

또는

OBJECT에 대한 모든 권한

다음과 같은 사용자 정의 함수에 적용됩니다.

  • CLR 스칼라

  • CLR 테이블 반환

  • Transact-SQL 스칼라

  • Transact-SQL 인라인 테이블 반환

  • Transact-SQL 테이블 반환

수준 2 유형을 지정하지 않으면 함수 자체에 속성이 적용됩니다.

2

COLUMN

OBJECT 함수에 대한 ALTER 권한

COLUMN에 대한 모든 권한

또는

OBJECT에 대한 모든 권한

 

2

CONSTRAINT

OBJECT 함수에 대한 ALTER 권한

COLUMN에 대한 모든 권한

또는

OBJECT에 대한 모든 권한

 

2

PARAMETER

OBJECT 함수에 대한 ALTER 권한

COLUMN에 대한 모든 권한

또는

OBJECT에 대한 모든 권한

 

다음 예에서는 사용자 정의 함수 ufnGetStock에 확장 속성을 추가합니다.

USE AdventureWorks2008R2;
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 AdventureWorks2008R2;
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

PLAN GUIDE

DATABASE에 대한 ALTER ANY DATASPACE 권한

SQL 또는 TEMPLATE 지침의 데이터베이스에 대한 VIEW DEFINITION, ALTER, TAKE OWNERSHIP 또는 CONTROL 권한 및 OBJECT 지침의 개체에 대한 VIEW DEFINITION, ALTER, TAKE OWNERSHIP 또는 CONTROL 권한

1

없음

 

 

2

없음

 

 

다음 예에서는 확장 속성이 TemplateGuide1 계획 지침에 추가됩니다.

USE AdventureWorks2008R2;
GO
EXECUTE sp_addextendedproperty @name=N'PlanGuideGroup', @value = N'MyTest', 
@level0type = N'Plan Guide', @level0name = 'TemplateGuide1';

절차

수준

수준 유형

확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한

확장 속성을 보는 데 필요한 사용 권한

설명

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 2008 R2에서 사용되지 않는 데이터베이스 엔진 기능을 참조하십시오.

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 유형으로 사용합니다. 이 항목의 뒤에 나오는 "SCHEMA와 USER 비교"를 참조하십시오.

1

상황에 따라 다름

 

 

 

2

상황에 따라 다름

 

 

 

다음 예에서는 확장 속성이 HumanResources 스키마에 추가됩니다.

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

다음 예에서는 응용 프로그램 역할을 만들고 확장 속성을 이 역할에 추가합니다.

USE AdventureWorks2008R2;
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 = N'Buyers';

서비스

수준

수준 유형

확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한

확장 속성을 보는 데 필요한 사용 권한

0

SERVICE

SERVICE에 대한 ALTER 권한

SERVICE에 대한 ALTER 권한

또는

SERVICE에 대한 CONTROL 권한

또는

SERVICE에 대한 TAKE OWNERSHIP 권한

또는

SERVICE에 대한 VIEW DEFINITION 권한

1

없음

 

 

2

없음

 

 

대칭 키

수준

수준 유형

확장 속성을 추가하거나 삭제하는 데 필요한 사용 권한

확장 속성을 보는 데 필요한 사용 권한

0

SYMMETRIC KEY

CERTIFICATE에 대한 ALTER 권한

KEY에 대한 모든 권한

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 권한

다음과 같은 제약 조건에 적용됩니다.

  • CHECK

  • DEFAULT

  • FOREIGN KEY

  • PRIMARY KEY

  • UNIQUE

2

INDEX

OBJECT 테이블에 대한 ALTER 권한

COLUMN에 대한 모든 권한

또는

OBJECT에 대한 모든 권한

관계형 및 XML 인덱스에 적용됩니다.

2

TRIGGER

OBJECT 테이블에 대한 ALTER 권한

OBJECT에 대한 ALTER 권한

또는

OBJECT에 대한 CONTROL 권한

또는

OBJECT에 대한 TAKE OWNERSHIP 권한

또는

OBJECT에 대한 VIEW DEFINITION 권한

다음 DML 트리거에 적용됩니다.

  • CLR

  • Transact-SQL

DDL 트리거에 적용되지 않습니다.

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

USE AdventureWorks2008R2;
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 AdventureWorks2008R2;
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 2008 R2에서 사용되지 않는 데이터베이스 엔진 기능을 참조하십시오.

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 트리거에 적용됩니다.

  • CLR

  • Transact-SQL

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 유형으로 사용자 이름을 지정할 수 있었습니다. 지금은 스키마를 소유하는 사용자로부터 독립된 스키마에 데이터베이스 개체가 포함됩니다.

데이터베이스 개체에 확장 속성을 적용할 때 수준 0 유형으로 USER를 지정하면 이름 확인이 모호해집니다. 예를 들어 사용자 Mary가 두 개의 스키마(Mary 및 MySchema)를 소유하고 있고 두 스키마 모두 MyTable이라는 테이블을 포함하고 있다고 가정합니다. Mary가 확장 속성을 MyTable 테이블에 추가하고 @level0type = N'USER', @level0name = Mary라고 지정하면 확장 속성이 어느 테이블에 적용되는지 분명하지 않습니다. 이전 버전과의 호환성을 유지하기 위해 SQL Server는 해당 속성을 Mary라는 스키마에 포함된 테이블에 적용합니다. 사용자와 스키마에 대한 자세한 내용은 사용자와 스키마 분리를 참조하십시오.

입력 마스크와 CHECK 제약 조건 사용 비교

테이블 또는 뷰 열에 허용되는 데이터 패턴을 지정하는 데 입력 마스크를 제공하는 확장 속성과 CHECK 제약 조건을 모두 사용할 수 있습니다. 다음과 같은 경우를 제외하고는 대부분의 사이트에서 두 방법 중 하나를 선택합니다.

  • 이 테이블을 다루는 모든 프로그램이 입력 마스크 속성을 사용하도록 변경될 수 있을 때까지 CHECK 제약 조건이 임시 수단으로 사용되었습니다.

  • 사이트에서 확장 속성을 읽지 않는 임의 도구를 통해 데이터를 업데이트할 수 있는 사용자도 지원합니다.

CHECK 제약 조건과 비교했을 때 입력 마스크의 이점은 논리가 응용 프로그램에서 적용된다는 것입니다. 따라서 사용자가 잘못된 형식의 데이터를 제공할 경우 응용 프로그램에서 자세한 정보를 제공하는 오류를 생성할 수 있습니다. 입력 마스크의 단점은 fn_listextendedpropertysys.extended_properties를 별도로 호출하여 속성을 얻어야 하고 마스크를 적용하는 논리를 모든 프로그램에 추가해야 한다는 것입니다.

확장 속성 복제

확장 속성은 게시자와 구독자 간의 초기 동기화에서만 복제됩니다. 초기 동기화 후에 확장 속성을 추가하거나 수정하면 변경 내용이 복제되지 않습니다. 데이터베이스를 복제하는 방법은 데이터 및 데이터베이스 개체 게시를 참조하십시오.

응용 프로그램에 확장 속성 사용

확장 속성은 데이터를 저장할 명명된 위치만 제공합니다. 속성을 쿼리하여 적절한 동작을 수행하도록 모든 응용 프로그램의 코드를 작성해야 합니다. 예를 들어 열에 캡션 속성을 추가해도 응용 프로그램에서 표시할 수 있는 캡션이 생성되지는 않습니다. 캡션을 읽고 올바르게 표시하도록 각 응용 프로그램의 코드를 작성해야 합니다.

확장 속성을 추가하려면

확장 속성을 업데이트하려면

확장 속성을 삭제하려면

확장 속성을 보려면