Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:SQL Server
База данных
SQL AzureУправляемый экземпляр
SQL AzureБаза данных SQL в Microsoft Fabric
Добавляет к объекту базы данных новое расширенное свойство.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_addextendedproperty
[ @name = ] N'name'
[ , [ @value = ] value ]
[ , [ @level0type = ] 'level0type' ]
[ , [ @level0name = ] N'level0name' ]
[ , [ @level1type = ] 'level1type' ]
[ , [ @level1name = ] N'level1name' ]
[ , [ @level2type = ] 'level2type' ]
[ , [ @level2name = ] N'level2name' ]
[ ; ]
Аргументы
[ @name = ] N'name'
Имя добавляемого свойства.
@name — sysname, без значения по умолчанию и не может бытьNULL. Имена могут включать пустые или не буквенно-цифровые символьные строки, а также двоичные значения.
[ @value = ] значение
Значение, связанное с свойством.
@value sql_variant с значением по умолчаниюNULL. Размер @value не может превышать 7500 байт.
[ @level0type = ] 'level0type'
Тип объекта уровня 0.
@level0type — varchar(128) с значением по умолчаниюNULL.
Допустимые входные значения:
ASSEMBLYCONTRACTEVENT NOTIFICATIONFILEGROUPMESSAGE TYPEPARTITION FUNCTIONPARTITION SCHEMEREMOTE SERVICE BINDINGROUTESCHEMASERVICEUSERTRIGGERTYPEPLAN GUIDENULL
Внимание
Возможность указать USER как тип уровня 0 в расширенном свойстве объекта типа уровня 1 будет удалена в будущей версии SQL Server. Вместо этого используйте SCHEMA тип level-0. Например, при определении расширенного свойства таблицы задайте схему таблицы вместо имени пользователя. Возможность указать TYPE тип уровня 0 будет удалена в будущей версии SQL Server. Для TYPE используйте SCHEMA в качестве типа level-0 и TYPE в качестве типа level-1.
[ @level0name = ] N'level0name'
Имя указанного типа объекта уровня 0.
@level0name — sysname с значением по умолчаниюNULL.
[ @level1type = ] 'level1type'
Тип объекта уровня 1.
@level1type — varchar(128) с значением по умолчаниюNULL.
Допустимые входные значения:
AGGREGATEDEFAULTFUNCTIONLOGICAL FILE NAMEPROCEDUREQUEUERULESEQUENCESYNONYMTABLETABLE_TYPETYPEVIEWXML SCHEMA COLLECTIONNULL
[ @level1name = ] N'level1name'
Имя указанного типа объекта уровня 1.
@level1name — sysname с значением по умолчаниюNULL.
[ @level2type = ] 'level2type'
Тип объекта уровня 2.
@level2type — varchar(128) с значением по умолчаниюNULL.
Допустимые входные значения:
COLUMNCONSTRAINTEVENT NOTIFICATIONINDEXPARAMETERTRIGGERNULL
[ @level2name = ] N'level2name'
Имя указанного типа объекта уровня 2.
@level2name имеет имя sysname с значением по умолчаниюNULL.
Значения кода возврата
0 (успешно) или 1 (сбой).
Замечания
При указании расширенных свойств объекты в базе данных SQL Server классифицируются на три уровня: 0, 1 и 2. Уровень 0 является самым высоким и определен как «объекты, содержащиеся в области базы данных». Объекты уровня 1 содержатся в схеме и в пользовательской области, а объекты уровня 2 содержатся в объектах уровня 1. Расширенные свойства могут быть определены для объектов на любом из этих уровней.
Ссылки на объект определенного уровня должны быть уточнены именами объектов более высокого уровня, в которых они содержатся или которым они принадлежат. Например, при добавлении расширенного свойства к столбцу таблицы (уровень 2) необходимо также задать имя таблицы (уровень 1), содержащей этот столбец, а также схему (уровень 0), содержащую таблицу.
Если значения всех типов и имен объектов равны NULL, свойство считается принадлежащим собственно текущей базе данных.
Расширенные свойства не допускаются для системных объектов, объектов вне области определяемой пользователем базы данных или объектов, не перечисленных в аргументах в качестве допустимых входных данных.
Расширенные свойства не допускаются в таблицах, оптимизированных для памяти.
Репликация расширенных свойств
Расширенные свойства реплицируются только во время начальной синхронизации между издателем и подписчиком. При добавлении или изменении расширенного свойства после начальной синхронизации изменение не реплицируется. Дополнительные сведения о репликации объектов базы данных см. в разделе "Публикация данных и объектов базы данных".
Схема и пользователь
Мы не рекомендуем указывать USER в качестве типа уровня 0 при применении расширенного свойства к объекту базы данных, так как это может привести к неоднозначности разрешения имен. Например, предположим, что пользователь Mary владеет двумя схемами (Mary и MySchema), и эти схемы содержат таблицу с именем MyTable. Если Мэри добавляет расширенное свойство в таблицу MyTable и указывает @level0type = 'USER', @level0name = N'Mary', не ясно, к какой таблице применяется расширенное свойство. Для обеспечения обратной совместимости SQL Server применяет свойство к таблице, содержащейся в схеме с именем Mary.
Разрешения
Члены db_owner и db_ddladmin предопределенных ролей базы данных могут добавлять расширенные свойства в любой объект со следующим исключением: db_ddladmin не могут добавлять свойства в саму базу данных или пользователям или ролям.
Пользователи могут добавлять расширенные свойства к объектам, которыми они владеют или на которые у них есть разрешения ALTER или CONTROL.
Примеры
А. Добавление расширенного свойства в базу данных
В следующем примере к образцу базы данных Caption добавляется свойство с именем AdventureWorks2022 Sample OLTP Database и значением AdventureWorks2025 .
USE AdventureWorks2022;
GO
--Add a caption to the AdventureWorks2022 Database object itself.
EXECUTE sp_addextendedproperty
@name = N'Caption',
@value = 'AdventureWorks2022 Sample OLTP Database';
В. Добавление расширенного свойства в столбец в таблице
В следующем примере свойство Caption добавляется к столбцу PostalCode в таблице Address.
USE AdventureWorks2022;
GO
EXECUTE sp_addextendedproperty
@name = N'Caption', @value = 'Postal code is a required column.',
@level0type = 'SCHEMA', @level0name = N'Person',
@level1type = 'TABLE', @level1name = N'Address',
@level2type = 'COLUMN', @level2name = N'PostalCode';
GO
В. Добавление свойства маски ввода в столбец
В следующем примере добавляется свойство 99999 or 99999-9999 or #### ### маски ввода в столбец PostalCode таблицы Address.
USE AdventureWorks2022;
GO
EXECUTE sp_addextendedproperty
@name = N'Input Mask ', @value = '99999 or 99999-9999 or #### ###',
@level0type = 'SCHEMA', @level0name = N'Person',
@level1type = 'TABLE', @level1name = N'Address',
@level2type = 'COLUMN', @level2name = N'PostalCode';
GO
Д. Добавление расширенного свойства в файловую группу
В следующем примере расширенное свойство добавляется к файловой группе PRIMARY .
USE AdventureWorks2022;
GO
EXECUTE sys.sp_addextendedproperty
@name = N'MS_DescriptionExample', @value = N'Primary filegroup for the AdventureWorks2022 sample database.',
@level0type = 'FILEGROUP', @level0name = N'PRIMARY';
GO
Е. Добавление расширенного свойства в схему
В следующем примере расширенное свойство добавляется к схеме HumanResources .
USE AdventureWorks2022;
GO
EXECUTE sys.sp_addextendedproperty
@name = N'MS_DescriptionExample', @value = N'Contains objects related to employees and departments.',
@level0type = 'SCHEMA', @level0name = N'HumanResources';
F. Добавление расширенного свойства в таблицу
В следующем примере расширенное свойство добавляется к таблице Address , относящейся к схеме Person .
USE AdventureWorks2022;
GO
EXECUTE sys.sp_addextendedproperty
@name = N'MS_DescriptionExample', @value = N'Street address information for customers, employees, and vendors.',
@level0type = 'SCHEMA', @level0name = N'Person',
@level1type = 'TABLE', @level1name = N'Address';
GO
G. Добавление расширенного свойства в роль
В следующем примере создается роль приложения и добавляется расширенное свойство к роли. Замените <password> строгим паролем.
USE AdventureWorks2022;
GO
CREATE APPLICATION ROLE Buyers
WITH PASSWORD = '<password>';
GO
EXECUTE sys.sp_addextendedproperty
@name = N'MS_Description', @value = N'Application Role for the Purchasing Department.',
@level0type = 'USER', @level0name = N'Buyers';
H. Добавление расширенного свойства в тип
В следующем примере расширенное свойство добавляется к типу.
USE AdventureWorks2022;
GO
EXECUTE sys.sp_addextendedproperty
@name = N'MS_Description', @value = N'Data type (alias) to use for any column that represents an order number. For example a sales order number or purchase order number.',
@level0type = 'SCHEMA', @level0name = N'dbo',
@level1type = 'TYPE', @level1name = N'OrderNumber';
И. Добавление расширенного свойства пользователю
В следующем примере создается пользователь и добавляется расширенное свойство к пользователю.
USE AdventureWorks2022;
GO
CREATE USER CustomApp WITHOUT LOGIN;
GO
EXECUTE sys.sp_addextendedproperty
@name = N'MS_Description', @value = N'User for an application.',
@level0type = 'USER', @level0name = N'CustomApp';