Использование расширенных свойств с объектами базы данных
Используя расширенные свойства, можно добавлять текст (такой как описания или инструкции), маски ввода и правила форматирования в качестве свойств объектов базы данных или самой базы данных. Например, можно добавить расширенное свойство в схему, представление схемы или столбец представления. Так как расширенные свойства хранятся в базе данных, все приложения, считывающие эти свойства, могут обрабатывать объект одинаково. Это помогает гарантировать, что все программы системы будут обрабатывать данные согласованно.
Расширенные свойства можно использовать для решения следующих задач:
Указание заголовка таблицы, представления или столбца. Благодаря этому в пользовательском интерфейсе приложений, отображающих сведения из таблицы, представления или столбца, можно использовать один и тот же заголовок.
Указание маски ввода для столбца (это даст приложениям возможность проверить данные перед выполнением инструкции языка 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) |
Применяется к следующим пользовательским функциям:
Если тип уровня 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) |
Применяется к следующим пользовательским хранимым процедурам:
Если тип уровня 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) может быть:
Тип 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) |
Применяется к следующим ограничениям:
|
2 |
INDEX |
Разрешение ALTER, связанное с объектом (OBJECT) таблицы |
Любое разрешение, связанное со столбцом (COLUMN) или любое разрешение, связанное с объектом (OBJECT) |
Применятся к реляционным и XML-индексам. |
2 |
TRIGGER |
Разрешение ALTER, связанное с объектом (OBJECT) таблицы |
Разрешение ALTER, связанное с объектом (OBJECT), или разрешение CONTROL, связанное с объектом (OBJECT), или разрешение TAKE OWNERSHIP, связанное с объектом (OBJECT), или разрешение VIEW DEFINITION, связанное с объектом (OBJECT) |
Применяется к следующим триггерам DML:
К триггерам 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:
К триггерам 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; к тому же она должна быть добавлена во все программы.
Репликация расширенных свойств
Репликация расширенных свойств производится только в момент начальной синхронизации издателя и подписчика. Если расширенное свойство добавляется или изменяется после этого, то эти изменения реплицированы не будут. Дополнительные сведения о репликации объектов базы данных см. в разделе Публикация данных и объектов базы данных.
Использование расширенных свойств в приложениях
Расширенные свойства — это просто именованные контейнеры данных. После запроса значения свойства приложения должны выполнять адекватные действия. Например, добавление свойства заголовка к столбцу не приводит к созданию заголовка, который может быть отображен приложением. Чтение заголовка и его правильное отображение нужно реализовать в приложении.
Добавление расширенного свойства:
Обновление расширенного свойства:
Удаление расширенного свойства:
Просмотр расширенного свойства:
См. также