Использование расширенных свойств с объектами базы данных

Используя расширенные свойства, можно добавлять текст (такой как описания или инструкции), маски ввода и правила форматирования в качестве свойств объектов базы данных или самой базы данных. Например, можно добавить расширенное свойство в схему, представление схемы или столбец представления. Так как расширенные свойства хранятся в базе данных, все приложения, считывающие эти свойства, могут обрабатывать объект одинаково. Это помогает гарантировать, что все программы системы будут обрабатывать данные согласованно.

Расширенные свойства можно использовать для решения следующих задач:

  • Указание заголовка таблицы, представления или столбца. Благодаря этому в пользовательском интерфейсе приложений, отображающих сведения из таблицы, представления или столбца, можно использовать один и тот же заголовок.

  • Указание маски ввода для столбца (это даст приложениям возможность проверить данные перед выполнением инструкции языка Transact-SQL). Например, при помощи расширенного свойства можно задать формат почтового индекса или телефонного номера.

  • Определение правил форматирования данных столбца при их отображении.

  • Запись описания конкретных объектов базы данных, которую приложения могут отобразить пользователям. Эти описания можно использовать, например в словарях данных или отчетах.

  • Указание размера и расположения окна, в котором должны быть выведены данные столбца.

ПримечаниеПримечание

Расширенные свойства не следует использовать для сокрытия сведений об объекте. Любой пользователь, которому предоставлено разрешение на работу с объектом, может просмотреть его расширенные свойства. Например, если предоставить пользователю связанное с таблицей разрешение SELECT, он сможет просмотреть расширенные свойства этой таблицы.

Определение расширенных свойств

Каждое расширенное свойство имеет задаваемые пользователем имя и значение. Значение расширенного свойства имеет тип sql_variant и может содержать до 7 500 байт данных. Один объект можно дополнить несколькими расширенными свойствами.

В контексте расширенных свойств объекты базы данных SQL Server делятся на три уровня: 0, 1 и 2. К уровню 0 (самому высокому) относятся объекты с областью действия, эквивалентной базе данных. Объекты уровня 1 содержатся в схеме или в пользовательской области, а объекты уровня 2 содержатся в объектах уровня 1. Расширенные свойства могут быть определены для объектов на любом из этих уровней.

Ссылки на объект на одном уровне должны быть дополнены именами объектов более высокого уровня, в которых они находятся. Например, добавляя расширенное свойство в столбец таблицы, уровень 2, нужно также указать имя таблицы, уровень 1, содержащей столбец и схему, уровень 0, которая содержит эту таблицу.

В следующем примере столбец SafetyStockLevel таблицы Product, содержащейся в схеме Production , дополняется расширенным свойством со значением 'Minimum inventory quantity.'.

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

Вместо SCHEMA следует использовать USER. См. подраздел «Схема и пользователь» далее в этом разделе.

1

AGGREGATE

Разрешение ALTER, связанное со статистическим объектом (OBJECT)

Любое разрешение, связанное с объектом (OBJECT)

Применяется к определяемым пользователями статистическим функциям CLR.

Асимметричный ключ

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

0

ASYMMETRIC KEY

Разрешение ALTER на CERTIFICATE

Любое разрешение на KEY

1

Нет

2

Нет

Сборка

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

0

ASSEMBLY

Разрешение ALTER, связанное со сборкой (ASSEMBLY)

Любое разрешение, связанное со сборкой (ASSEMBLY)

1

Нет

2

Нет

Сертификат

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

0

CERTIFICATE

Разрешение ALTER на CERTIFICATE

Любое разрешение на CERTIFICATE

1

Нет

2

Нет

Контракт (компонент Service Broker)

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

0

CONTRACT

Разрешение ALTER, связанное с контрактом (CONTRACT)

Любое разрешение, связанное с контрактом (CONTRACT)

1

Нет

2

Нет

База данных

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

Комментарии

0

Нет

Разрешение ALTER, связанное с базой данных (DATABASE)

Разрешение CONTROL, связанное с базой данных (DATABASE),

или

разрешение TAKE OWNERSHIP, связанное с объектом (OBJECT),

или

разрешение VIEW DEFINITION, связанное с объектом (OBJECT),

или

разрешение ALTER ANY DATABASE на сервере (SERVER),

или

разрешение CREATE DATABASE на сервере (SERVER)

Свойство применяется к самой базе данных.

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

Разрешение ALTER, связанное со схемой (SCHEMA)

HAS_DBACCESS = 1

Поддержка реализована исключительно ради обратной совместимости. Дополнительные сведения см. в разделе Устаревшие функции компонента Database Engine в SQL Server 2008.

2

Нет

Уведомление о событии

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

Комментарии

0

EVENT NOTIFICATION

ALTER ANY DATABASE EVENT NOTIFICATION ON DATABASE

Владение уведомлением о событии

или

CONTROL, ALTER, TAKE OWNERSHIP или VIEW DEFINITION для базы данных

или

ALTER ANY DATABASE EVENT NOTIFICATION.

Применяется к уведомлениям о событиях уровня базы данных, являющимся дочерними по отношению к базе данных.

Расширенные свойства не могут быть добавлены к уведомлениям о событиях уровня сервера.

1

Нет

2

Нет

Имя файловой группы или файла

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

0

FILEGROUP

Разрешение ALTER, связанное с базой данных (DATABASE)

HAS_DBACCESS = 1

1

LOGICAL FILE NAME

Разрешение ALTER, связанное с базой данных (DATABASE)

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

В следующем примере расширенное свойство добавляется к логическому имени файла AdventureWorks_Data из файловой группы PRIMARY.

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

Вместо SCHEMA следует использовать USER. См. подраздел «Схема и пользователь» далее в этом разделе.

1

FUNCTION

Разрешение ALTER, связанное с объектом (OBJECT) функции

Любое разрешение, связанное со столбцом (COLUMN),

или

любое разрешение, связанное с объектом (OBJECT)

Применяется к следующим пользовательским функциям:

  • Скалярные функции CLR

  • Возвращающие табличное значение функции CLR

  • Скалярные функции Transact-SQL

  • Встроенные функции Transact-SQL, возвращающие табличное значение

  • Функции Transact-SQL, возвращающие табличное значение

Если тип уровня 2 не указан, свойство применяется к самой функции.

2

COLUMN

Разрешение ALTER, связанное с объектом (OBJECT) функции

Любое разрешение, связанное со столбцом (COLUMN),

или

любое разрешение, связанное с объектом (OBJECT)

2

CONSTRAINT

Разрешение ALTER, связанное с объектом (OBJECT) функции

Любое разрешение, связанное со столбцом (COLUMN)

или

любое разрешение, связанное с объектом (OBJECT)

2

PARAMETER

Разрешение ALTER, связанное с объектом (OBJECT) функции

Любое разрешение, связанное со столбцом (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

В следующем примере расширенное свойство добавляется к параметру @ProductID, определенному в пользовательской функции ufnGetStock.

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

Разрешение ALTER, связанное с типом сообщений (MESSAGE TYPE)

HAS_DBACCESS = 1

1

Нет

2

Нет

Функция секционирования

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

0

PARTITION FUNCTION

Разрешение ALTER ANY DATASPACE, связанное с базой данных (DATABASE)

HAS_DBACCESS = 1

1

Нет

2

Нет

Схема секционирования

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

0

PARTITION SCHEME

Разрешение ALTER ANY DATASPACE, связанное с базой данных (DATABASE)

HAS_DBACCESS = 1

1

Нет

2

Нет

Структура плана

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

0

PLAN GUIDE

Разрешение ALTER ANY DATASPACE, связанное с базой данных (DATABASE)

Разрешение VIEW DEFINITION, ALTER, TAKE OWNERSHIP или CONTROL для базы данных или структуры SQL или TEMPLATE. Разрешение VIEW DEFINITION, ALTER, TAKE OWNERSHIP или CONTROL для структуры OBJECT

1

Нет

2

Нет

В следующем примере к структуре плана TemplateGuide1 добавляется расширенное свойство.

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

Процедура

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

Комментарии

0

SCHEMA или USER

Вместо SCHEMA следует использовать USER. См. подраздел «Схема и пользователь» далее в этом разделе.

1

PROCEDURE

Разрешение ALTER, связанное с объектом (OBJECT) процедуры

ПримечаниеПримечание
Только члены предопределенной роли сервера sysadmin могут добавлять расширенные свойства расширенным хранимым процедурам.

Любое разрешение, связанное с объектом (OBJECT)

Применяется к следующим пользовательским хранимым процедурам:

  • Триггеры CLR

  • Transact-SQL

  • Фильтры репликации

Если тип уровня 2 не указан, свойство применяется к самой процедуре.

2

PARAMETER

Разрешение ALTER, связанное с объектом (OBJECT) процедуры

Любое разрешение, связанное с объектом (OBJECT)

Очередь (компонент Service Broker)

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

Комментарии

0

SCHEMA или USER

Вместо SCHEMA следует использовать USER. См. подраздел «Схема и пользователь» далее в этом разделе.

1

QUEUE

Разрешение ALTER, связанное с объектом (OBJECT) очереди

Любое разрешение, связанное с объектом (OBJECT)

2

EVENT NOTIFICATION

Разрешение ALTER, связанное с объектом (OBJECT) очереди

Владение уведомлением о событии

или

CONTROL, ALTER, TAKE OWNERSHIP или VIEW DEFINITION для очереди

или

ALTER ANY DATABASE EVENT NOTIFICATION

Владельцы уведомления о событии и очереди могут быть разными.

Привязка удаленной службы (компонент Service Broker)

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

0

REMOTE SERVICE BINDING

Разрешение ALTER, связанное с привязкой удаленной службы (REMOTE SERVICE BINDING)

Любое разрешение, связанное с привязкой удаленной службы (REMOTE SERVICE BINDING)

1

Нет

2

Нет

Маршрут (компонент Service Broker)

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

0

ROUTE

Разрешение ALTER, связанное с привязкой удаленной службы (REMOTE SERVICE BINDING)

Любое разрешение, связанное с маршрутом (ROUTE)

1

Нет

2

Нет

Правило

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

Комментарии

0

SCHEMA или USER

1

RULE

Разрешение ALTER, связанное со схемой (SCHEMA)

HAS_DBACCESS = 1

Добавлено для обратной совместимости. Дополнительные сведения см. в разделе Устаревшие функции компонента Database Engine в SQL Server 2008.

2

Нет

Схема или пользователь

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

Комментарии

0

SCHEMA или USER

Разрешение ALTER, связанное со схемой (SCHEMA) или пользователем (USER)

Любое разрешение, связанное с прикладной ролью (APPLICATION ROLE),

или

любое разрешение, связанное с ролью (ROLE),

или

любое разрешение, связанное с пользователем (USER)

Если тип уровня 1 не указан, свойство применяется к самой схеме или самому пользователю.

Пользователем (USER) может быть:

  • Роль приложения

  • Роль базы данных

  • Пользователь SQL Server

  • Группа Windows

  • Пользователь Windows

Тип USER следует использовать только при добавлении расширенного свойства к пользователю.

Важное примечаниеВажно!
В будущей версии SQL Server тип USER уже нельзя будет использовать как тип уровня 0, определенный для объектов типа уровня 1 или 2. Избегайте использования этой возможности в новых разработках и запланируйте модификацию приложений, которые сейчас ее используют. Используйте вместо этого в качестве типа уровня 0 схему (SCHEMA).

1

Возможны разные варианты

2

Возможны разные варианты

Служба

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

0

SERVICE

Разрешение ALTER, связанное со службой (SERVICE)

Разрешение ALTER, связанное со службой (SERVICE),

или

разрешение CONTROL, связанное со службой (SERVICE),

или

разрешение TAKE OWNERSHIP, связанное со службой (SERVICE),

или

разрешение VIEW DEFINITION, связанное со службой (SERVICE)

1

Нет

2

Нет

Симметричный ключ

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

0

SYMMETRIC KEY

Разрешение ALTER на CERTIFICATE

Любое разрешение на KEY

1

Нет

2

Нет

Синоним

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

Комментарии

0

SCHEMA или USER

Вместо SCHEMA следует использовать USER. См. подраздел «Схема и пользователь» далее в этом разделе.

1

SYNONYM

Разрешение CONTROL, связанное с синонимом (SYNONYM)

Любое разрешение, связанное с объектом (OBJECT)

2

Нет

Таблица

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

Комментарии

0

SCHEMA или USER

Вместо SCHEMA следует использовать USER. См. подраздел «Схема и пользователь» далее в этом разделе.

1

TABLE

Разрешение ALTER, связанное с объектом (OBJECT) таблицы

Любое разрешение, связанное со столбцом (COLUMN)

или

любое разрешение, связанное с объектом (OBJECT)

Применяется к пользовательским таблицам. Если тип уровня 2 не указан, свойство применяется к самой таблице.

2

COLUMN

Разрешение ALTER, связанное с объектом (OBJECT) таблицы

Любое разрешение, связанное со столбцом (COLUMN)

или

любое разрешение, связанное с объектом (OBJECT)

2

CONSTRAINT

Разрешение ALTER, связанное с объектом (OBJECT) таблицы

Разрешение ALTER, связанное с объектом (OBJECT),

или

разрешение CONTROL, связанное с объектом (OBJECT),

или

разрешение TAKE OWNERSHIP, связанное с объектом (OBJECT),

или

разрешение VIEW DEFINITION, связанное с объектом (OBJECT)

Применяется к следующим ограничениям:

  • CHECK

  • DEFAULT

  • FOREIGN KEY

  • PRIMARY KEY

  • UNIQUE

2

INDEX

Разрешение ALTER, связанное с объектом (OBJECT) таблицы

Любое разрешение, связанное со столбцом (COLUMN)

или

любое разрешение, связанное с объектом (OBJECT)

Применятся к реляционным и XML-индексам.

2

TRIGGER

Разрешение ALTER, связанное с объектом (OBJECT) таблицы

Разрешение ALTER, связанное с объектом (OBJECT),

или

разрешение CONTROL, связанное с объектом (OBJECT),

или

разрешение TAKE OWNERSHIP, связанное с объектом (OBJECT),

или

разрешение VIEW DEFINITION, связанное с объектом (OBJECT)

Применяется к следующим триггерам DML:

  • Триггеры CLR

  • Transact-SQL

К триггерам DDL не применяется.

Пример

В следующем примере расширенное свойство добавляется к таблице Address, относящейся к схеме Person.

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

В следующем примере расширенное свойство добавляется к индексу IX_Address_StateProviceID таблицы Address, относящейся к схеме Person.

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

Разрешение ALTER ANY TRIGGER, связанное с базой данных (DATABASE)

Разрешение ALTER ANY TRIGGER, связанное с базой данных (DATABASE)

Применяется только к триггерам DDL

1

Нет

2

Нет

Тип

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

Комментарии

0

TYPE

Разрешение CONTROL, связанное с типом (TYPE)

Любое разрешение, связанное с типом (TYPE)

Применяется к определяемым пользователями типам, созданным в более ранних версиях SQL Server.

Добавлено для обратной совместимости. Дополнительные сведения см. в разделе Устаревшие функции компонента Database Engine в SQL Server 2008.

1

Нет

2

Нет

Тип

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

Комментарии

0

SCHEMA или USER

Вместо SCHEMA следует использовать USER. См. подраздел «Схема и пользователь» далее в этом разделе.

1

TYPE

Разрешение CONTROL, связанное с типом (TYPE)

Любое разрешение, связанное с типом (TYPE)

2

Нет

Представление

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

Комментарии

0

SCHEMA или USER

Вместо SCHEMA следует использовать USER. См. подраздел «Схема и пользователь» далее в этом разделе.

1

VIEW

Разрешение ALTER, связанное с объектом (OBJECT) представления

Любое разрешение, связанное со столбцом (COLUMN),

или

любое разрешение, связанное с объектом (OBJECT)

Применяется к пользовательским представлениям. Если тип уровня 2 не указан, свойство применяется к самому представлению.

2

COLUMN

Разрешение ALTER, связанное с объектом (OBJECT) представления

Любое разрешение, связанное со столбцом (COLUMN),

или

любое разрешение, связанное с объектом (OBJECT)

2

INDEX

Разрешение ALTER, связанное с объектом (OBJECT) представления

Любое разрешение, связанное со столбцом (COLUMN)

или

любое разрешение, связанное с объектом (OBJECT)

Применятся к реляционным и XML-индексам.

2

TRIGGER

Разрешение ALTER, связанное с объектом (OBJECT) представления

Разрешение ALTER ANY TRIGGER, связанное с базой данных (DATABASE),

или

разрешение ALTER, связанное с объектом (OBJECT),

или

разрешение CONTROL, связанное с объектом (OBJECT),

или

разрешение TAKE OWNERSHIP, связанное с объектом (OBJECT),

или

разрешение VIEW DEFINITION, связанное с объектом (OBJECT)

Применяется к следующим триггерам DML:

  • Триггеры CLR

  • Transact-SQL

К триггерам DDL не применяется.

Коллекции XML-схем

Уровень

Тип уровня

Разрешения, необходимые для добавления или удаления расширенного свойства

Разрешения, необходимые для просмотра расширенного свойства

Комментарии

0

SCHEMA или USER

Вместо SCHEMA следует использовать USER. См. подраздел «Схема и пользователь» далее в этом разделе.

1

XML SCHEMA COLLECTION

Разрешение ALTER, связанное с коллекцией XML-схем (XML SCHEMA COLLECTION)

Разрешение ALTER, связанное с коллекцией XML-схем (XML SCHEMA COLLECTION),

или

разрешение CONTROL, связанное с коллекцией XML-схем (XML SCHEMA COLLECTION),

или

разрешение REFERENCES, связанное с коллекцией XML-схем (XML SCHEMA COLLECTION),

или

разрешение TAKE OWNERSHIP, связанное с коллекцией XML-схем (XML SCHEMA COLLECTION),

или

разрешение VIEW DEFINITION, связанное с коллекцией XML-схем (XML SCHEMA COLLECTION)

Расширенные свойства не могут быть добавлены к пространству имен XML.

2

Нет

Объекты, не поддерживающие расширенные свойства

Расширенные свойства нельзя определить для следующих объектов:

  • Объекты области базы данных, не указанные в приведенных выше таблицах. В их число входят объекты полнотекстовых запросов.

  • Объекты, не входящие в область действия базы данных, такие как конечные точки HTTP.

  • Безымянные объекты, такие как параметры функции секционирования.

  • Сертификаты, симметричные ключи, асимметричные ключи и учетные данные.

  • Системные объекты, такие как системные таблицы, представления каталога и системные хранимые процедуры.

Схема и пользователь

В более ранних версиях SQL Server пользователи владели объектами базы данных, такими как таблицы, представления и триггеры. Таким образом, в этих версиях можно было добавлять расширенные свойства к перечисленным объектам и указывать в качестве типа уровня 0 имя пользователя. Объекты базы данных теперь содержатся в схемах, которые отделены от пользователей, которые являются их владельцами.

Если при применении к объекту базы данных расширенного свойства в качестве типа уровня 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; к тому же она должна быть добавлена во все программы.

Репликация расширенных свойств

Репликация расширенных свойств производится только в момент начальной синхронизации издателя и подписчика. Если расширенное свойство добавляется или изменяется после этого, то эти изменения реплицированы не будут. Дополнительные сведения о репликации объектов базы данных см. в разделе Публикация данных и объектов базы данных.

Использование расширенных свойств в приложениях

Расширенные свойства — это просто именованные контейнеры данных. После запроса значения свойства приложения должны выполнять адекватные действия. Например, добавление свойства заголовка к столбцу не приводит к созданию заголовка, который может быть отображен приложением. Чтение заголовка и его правильное отображение нужно реализовать в приложении.

Добавление расширенного свойства:

Обновление расширенного свойства:

Удаление расширенного свойства:

Просмотр расширенного свойства:

См. также

Справочник

Основные понятия

Другие ресурсы