Использование расширенных свойств с объектами базы данных
Изменения: 5 декабря 2005 г.
Используя расширенные свойства, можно добавлять текст (такой как описания или инструкции), маски ввода и правила форматирования в качестве свойств объектов базы данных или самой базы данных. Например, можно добавить расширенное свойство в схему, представление схемы или столбец представления. Так как расширенные свойства хранятся в базе данных, все приложения, считывающие эти свойства, могут обрабатывать объект одинаково. Это помогает гарантировать, что все программы системы будут обрабатывать данные согласованно.
Расширенные свойства можно использовать для решения следующих задач:
- Указание заголовка таблицы, представления или столбца. Благодаря этому в пользовательском интерфейсе приложений, отображающих сведения из таблицы, представления или столбца, можно использовать один и тот же заголовок.
- Указание маски ввода для столбца необходимо, чтобы приложения могли проверить данные перед выполнением инструкции языка 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 |
ASSEMBLY |
Разрешение ALTER, связанное со сборкой (ASSEMBLY) |
Любое разрешение, связанное со сборкой (ASSEMBLY) |
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 |
Поддержка реализована исключительно ради обратной совместимости. Дополнительные сведения см. в разделе Устаревшие функции ядра СУБД в SQL Server 2005. |
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
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 |
Добавлено для обратной совместимости. Дополнительные сведения см. в разделе Устаревшие функции ядра СУБД в SQL Server 2005. |
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 |
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. Добавлено для обратной совместимости. Дополнительные сведения см. в разделе Устаревшие функции ядра СУБД в SQL Server 2005. |
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 имя пользователя. Однако в 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)
Справка и поддержка
Получение помощи по SQL Server 2005
Журнал изменений
Версия | Журнал |
---|---|
5 декабря 2005 г. |
|