Поделиться через


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';