sp_addextendedproperty (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Добавляет к объекту базы данных новое расширенное свойство.
Соглашения о синтаксисе 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
Значение, связанное с свойством. @value sql_variant с значением по умолчаниюNULL
. Размер @value не может превышать 7500 байт.
[ @level0type = ] 'level0type'
Тип объекта уровня 0. @level0type — varchar(128) с значением по умолчаниюNULL
.
Допустимые входные значения:
ASSEMBLY
CONTRACT
EVENT NOTIFICATION
FILEGROUP
MESSAGE TYPE
PARTITION FUNCTION
PARTITION SCHEME
REMOTE SERVICE BINDING
ROUTE
SCHEMA
SERVICE
USER
TRIGGER
TYPE
PLAN GUIDE
NULL
Внимание
Возможность указать 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
.
Допустимые входные значения:
AGGREGATE
DEFAULT
FUNCTION
LOGICAL FILE NAME
PROCEDURE
QUEUE
RULE
SEQUENCE
SYNONYM
TABLE
TABLE_TYPE
TYPE
VIEW
XML SCHEMA COLLECTION
NULL
[ @level1name = ] N'level1name'
Имя указанного типа объекта уровня 1. @level1name — sysname с значением по умолчаниюNULL
.
[ @level2type = ] 'level2type'
Тип объекта уровня 2. @level2type — varchar(128) с значением по умолчаниюNULL
.
Допустимые входные значения:
COLUMN
CONSTRAINT
EVENT NOTIFICATION
INDEX
PARAMETER
TRIGGER
NULL
[ @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
и значением AdventureWorks2022
.
USE AdventureWorks2022;
GO
--Add a caption to the AdventureWorks2022 Database object itself.
EXEC sp_addextendedproperty @name = N'Caption',
@value = 'AdventureWorks2022 Sample OLTP Database';
B. Добавление расширенного свойства в столбец в таблице
В следующем примере свойство Caption добавляется к столбцу PostalCode
в таблице Address
.
USE AdventureWorks2022;
GO
EXEC 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
EXEC 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
D. Добавление расширенного свойства в файловую группу
В следующем примере расширенное свойство добавляется к файловой группе PRIMARY
.
USE AdventureWorks2022;
GO
EXEC 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
EXEC 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
EXEC 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. Добавление расширенного свойства в роль
В следующем примере создается роль приложения и добавляется расширенное свойство к роли.
USE AdventureWorks2022;
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 = 'USER', @level0name = N'Buyers';
H. Добавление расширенного свойства в тип
В следующем примере расширенное свойство добавляется к типу.
USE AdventureWorks2022;
GO
EXEC 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';
I. Добавление расширенного свойства пользователю
В следующем примере создается пользователь и добавляется расширенное свойство к пользователю.
USE AdventureWorks2022;
GO
CREATE USER CustomApp WITHOUT LOGIN;
GO
EXEC sys.sp_addextendedproperty @name = N'MS_Description',
@value = N'User for an application.',
@level0type = 'USER', @level0name = N'CustomApp';