sp_addextendedproperty (Transact-SQL)sp_addextendedproperty (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure нетAzure Synapse Analytics (хранилище данных SQL) нетParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Добавляет к объекту базы данных новое расширенное свойство.Adds a new extended property to a database object.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

  
sp_addextendedproperty  
    [ @name = ] { 'property_name' }  
    [ , [ @value = ] { 'value' }   
        [ , [ @level0type = ] { 'level0_object_type' }   
          , [ @level0name = ] { 'level0_object_name' }   
                [ , [ @level1type = ] { 'level1_object_type' }   
                  , [ @level1name = ] { 'level1_object_name' }   
                        [ , [ @level2type = ] { 'level2_object_type' }   
                          , [ @level2name = ] { 'level2_object_name' }   
                        ]   
                ]  
        ]   
    ]   
[;]  

АргументыArguments

[ @name ] = {'property_name"}[ @name ] = { 'property_name' }
Имя свойства, которое необходимо добавить.Is the name of the property to be added. property_namesysname и не может иметь значение NULL.property_name is sysname and cannot be NULL. Имена могут также включать пустые или не являющиеся алфавитно-цифровыми строки символов, а также двоичные значения.Names can also include blank or non-alphanumeric character strings, and binary values.

[ @value=] {"значение"}[ @value= ] { 'value'}
Значение, связываемое со свойством.Is the value to be associated with the property. значениеsql_variant, значение по умолчанию NULL.value is sql_variant, with a default of NULL. Размер аргумента value не может превышать 7 500 байт.The size of value cannot be more than 7,500 bytes.

[ @level0type=] {"level0_object_type"}[ @level0type= ] { 'level0_object_type' }
Тип объекта уровня 0.Is the type of level 0 object. level0_object_typevarchar(128) , значение по умолчанию NULL.level0_object_type is varchar(128), with a default of NULL.

Допустимые входные данные: ASSEMBLY, CONTRACT, EVENT NOTIFICATION, FILEGROUP, MESSAGE TYPE, PARTITION FUNCTION, PARTITION SCHEME, REMOTE SERVICE BINDING, ROUTE, SCHEMA, SERVICE, USER, TRIGGER, TYPE, PLAN GUIDE и NULL.Valid inputs are ASSEMBLY, CONTRACT, EVENT NOTIFICATION, FILEGROUP, MESSAGE TYPE, PARTITION FUNCTION, PARTITION SCHEME, REMOTE SERVICE BINDING, ROUTE, SCHEMA, SERVICE, USER, TRIGGER, TYPE, PLAN GUIDE, and NULL.

Важно!

Возможность указать USER как тип уровня 0 в расширенном свойстве объекта типа уровня 1 будет исключена из будущей версии SQL ServerSQL Server.The ability to specify USER as a level 0 type in an extended property of a level 1 type object will be removed in a future version of SQL ServerSQL Server. Используйте вместо этого в качестве типа уровня 0 схему (SCHEMA).Use SCHEMA as the level 0 type instead. Например, при определении расширенного свойства таблицы задайте схему таблицы вместо имени пользователя.For example, when defining an extended property on a table, specify the schema of the table instead of a user name. Возможность указывать TYPE как тип уровня 0 будет исключена в будущей версии SQL ServerSQL Server.The ability to specify TYPE as level-0 type will be removed in a future version of SQL ServerSQL Server. В значении аргумента TYPE следует указывать тип SCHEMA в качестве типа уровня 0 и TYPE в качестве типа уровня 1.For TYPE, use SCHEMA as the level 0 type and TYPE as the level 1 type.

[ @level0name=] {"level0_object_name"}[ @level0name= ] { 'level0_object_name' }
Имя указанного типа объекта уровня 0.Is the name of the level 0 object type specified. level0_object_namesysname значение по умолчанию NULL.level0_object_name is sysname with a default of NULL.

[ @level1type=] {"level1_object_type"}[ @level1type= ] { 'level1_object_type' }
Тип объекта уровня 1.Is the type of level 1 object. level1_object_typevarchar(128) , значение по умолчанию NULL.level1_object_type is varchar(128), with a default of NULL. Допустимыми входными значениями являются статистическое ВЫРАЖЕНИЕ, по умолчанию, ФУНКЦИЯ, ЛОГИЧЕСКОЕ имя файла, ПРОЦЕДУРЫ, ОЧЕРЕДИ, правило, ПОСЛЕДОВАТЕЛЬНОСТИ, СИНОНИМ, таблицы, TABLE_TYPE, тип, ПРЕДСТАВЛЕНИЯ, XML SCHEMA COLLECTION и NULL.Valid inputs are AGGREGATE, DEFAULT, FUNCTION, LOGICAL FILE NAME, PROCEDURE, QUEUE, RULE, SEQUENCE, SYNONYM, TABLE, TABLE_TYPE, TYPE, VIEW, XML SCHEMA COLLECTION, and NULL.
[ @level1name=] {"level1_object_name"}[ @level1name= ] { 'level1_object_name' }
Имя указанного типа объекта уровня 1.Is the name of the level 1 object type specified. level1_object_namesysname, значение по умолчанию NULL.level1_object_name is sysname, with a default of NULL.

[ @level2type=] {"level2_object_type"}[ @level2type= ] { 'level2_object_type' }
Тип объекта уровня 2.Is the type of level 2 object. level2_object_typevarchar(128) , значение по умолчанию NULL.level2_object_type is varchar(128), with a default of NULL. Допустимые входные данные: COLUMN, CONSTRAINT, EVENT NOTIFICATION, INDEX, PARAMETER, TRIGGER и NULL.Valid inputs are COLUMN, CONSTRAINT, EVENT NOTIFICATION, INDEX, PARAMETER, TRIGGER, and NULL.

[ @level2name=] {"level2_object_name"}[ @level2name= ] { 'level2_object_name' }
Имя указанного типа объекта уровня 2.Is the name of the level 2 object type specified. level2_object_namesysname, значение по умолчанию NULL.level2_object_name is sysname, with a default of NULL.

Значения кода возвратаReturn Code Values

0 (успешное завершение) или 1 (неуспешное завершение)0 (success) or 1 (failure)

ПримечанияRemarks

Для указания расширенных свойств объекты в SQL ServerSQL Server базы данных, делятся на три уровня: 0, 1 и 2.For specifying extended properties, the objects in a SQL ServerSQL Server database are classified into three levels: 0, 1, and 2. Уровень 0 является самым высоким и определен как «объекты, содержащиеся в области базы данных».Level 0 is the highest level and is defined as objects that are contained at the database scope. Объекты уровня 1 содержатся в схеме и в пользовательской области, а объекты уровня 2 содержатся в объектах уровня 1.Level 1 objects are contained in a schema or user scope, and level 2 objects are contained by level 1 objects. Расширенные свойства могут быть определены для объектов на любом из этих уровней.Extended properties can be defined for objects at any of these levels.

Ссылки на объект определенного уровня должны быть уточнены именами объектов более высокого уровня, в которых они содержатся или которым они принадлежат.References to an object in one level must be qualified with the names of the higher level objects that own or contain them. Например, при добавлении расширенного свойства к столбцу таблицы (уровень 2) необходимо также задать имя таблицы (уровень 1), содержащей этот столбец, а также схему (уровень 0), содержащую таблицу.For example, when you add an extended property to a table column (level 2), you must also specify the table name (level 1) that contains the column and the schema (level 0) that contains the table.

Если значения всех типов и имен объектов равны NULL, свойство считается принадлежащим собственно текущей базе данных.If all object types and names are null, the property belongs to the current database itself.

Для системных объектов, объектов вне области пользовательской базы данных, а также для объектов, не перечисленных в качестве допустимых входных параметров в списке аргументов, расширенные свойства недоступны.Extended properties are not allowed on system objects, objects outside the scope of a user-defined database, or objects not listed in Arguments as valid inputs.

Расширенные свойства не разрешены в таблицах, оптимизированных для памяти.Extended properties are not allowed on memory-optimized tables.

Репликация расширенных свойствReplicating Extended Properties

Расширенные свойства реплицируются только во время начальной синхронизации между издателем и подписчиком.Extended properties are replicated only in the initial synchronization between the Publisher and the Subscriber. При добавлении или изменении расширенного свойства после начальной синхронизации эти изменения не реплицируются.If you add or modify an extended property after the initial synchronization, the change is not replicated. Дополнительные сведения о репликации объектов базы данных см. в разделе публикация данных и объектов базы данных.For more information about how to replicate database objects, see Publish Data and Database Objects.

Vs схемы. ПользовательскаяSchema vs. User

Не рекомендуется указывать тип USER в качестве типа уровня 0 при применении расширенного свойства к объекту базы данных, так как это может вызвать неоднозначность при разрешении имен.We do not recommend specifying USER as a level 0 type when you apply an extended property to a database object, because this can cause name resolution ambiguity. Например, предположим, что пользователь Владимир владеет двумя схемами (Vladimir и MySchema) и в обеих этих схемах содержится таблица с именем MyTable.For example, assume user Mary owns two schemas (Mary and MySchema) and these schemas both contain a table named MyTable. Если Mary добавит расширенное свойство к таблице MyTable и указывает @level0type = N'USER' , @level0name = Mary, это не неясно, к какой таблице применяется расширенное свойство.If Mary adds an extended property to table MyTable and specifies @level0type = N'USER', @level0name = Mary, it is not clear to which table the extended property is applied. Чтобы обеспечить обратную совместимость, SQL ServerSQL Server применит свойство к таблице, содержащейся в схеме Mary.To maintain backward compatibility, SQL ServerSQL Server will apply the property to the table that is contained in the schema named Mary.

РазрешенияPermissions

Члены предопределенной роли базы данных db_ddladmin и db_owner могут добавлять расширенные свойства к любым объектам со следующим исключением: db_ddladmin не может добавлять свойства к самой базе данных, пользователям или ролям.Members of the db_owner and db_ddladmin fixed database roles can add extended properties to any object with the following exception: db_ddladmin cannot add properties to the database itself, or to users or roles.

Пользователи могут добавлять расширенные свойства к объектам, которыми они владеют или на которые у них есть разрешения ALTER или CONTROL.Users can add extended properties to objects they own or have ALTER or CONTROL permissions on.

ПримерыExamples

A.A. Добавление расширенного свойства к базе данныхAdding an extended property to a database

В следующем примере к образцу базы данных 'Caption' добавляется свойство с именем 'AdventureWorks2012 Sample OLTP Database' и значением AdventureWorks2012 .The following example adds the property name 'Caption' with a value of 'AdventureWorks2012 Sample OLTP Database' to the AdventureWorks2012 sample database.

USE AdventureWorks2012;  
GO  
--Add a caption to the AdventureWorks2012 Database object itself.  
EXEC sp_addextendedproperty   
@name = N'Caption',   
@value = 'AdventureWorks2012 Sample OLTP Database';  

Б.B. Добавление расширенного свойства к столбцу в таблицеAdding an extended property to a column in a table

В следующем примере свойство Caption добавляется к столбцу PostalCode в таблице Address.The following example adds a caption property to column PostalCode in table Address.

USE AdventureWorks2012;  
GO  
EXEC sp_addextendedproperty   
@name = N'Caption',   
@value = 'Postal code is a required column.',  
@level0type = N'Schema', @level0name = 'Person',  
@level1type = N'Table',  @level1name = 'Address',  
@level2type = N'Column', @level2name = 'PostalCode';  
GO  

В.C. Добавление свойства маски ввода к столбцуAdding an input mask property to a column

В следующем примере к столбцу99999 or 99999-9999 or #### ###в таблице PostalCode добавляется свойство маски ввода ' Address'.The following example adds an input mask property '99999 or 99999-9999 or #### ###' to the column PostalCode in the table Address.

USE AdventureWorks2012;  
GO  
EXEC sp_addextendedproperty   
@name = N'Input Mask ', @value = '99999 or 99999-9999 or #### ###',  
@level0type = N'Schema', @level0name = 'Person',  
@level1type = N'Table', @level1name = 'Address',   
@level2type = N'Column',@level2name = 'PostalCode';  
GO  

Г.D. Добавление расширенного свойства к файловой группеAdding an extended property to a filegroup

В следующем примере расширенное свойство добавляется к файловой группе PRIMARY .The following example adds an extended property to the PRIMARY filegroup.

USE AdventureWorks2012;  
GO  
EXEC sys.sp_addextendedproperty   
@name = N'MS_DescriptionExample',   
@value = N'Primary filegroup for the AdventureWorks2012 sample database.',   
@level0type = N'FILEGROUP', @level0name = 'PRIMARY';  
GO  

Д.E. Добавление расширенного свойства к схемеAdding an extended property to a schema

В следующем примере расширенное свойство добавляется к схеме HumanResources .The following example adds an extended property to the HumanResources schema.

USE AdventureWorks2012;  
GO  
EXECUTE sys.sp_addextendedproperty   
@name = N'MS_DescriptionExample',  
@value = N'Contains objects related to employees and departments.',  
@level0type = N'SCHEMA',   
@level0name = 'HumanResources';  

Е.F. Добавление расширенного свойства к таблицеAdding an extended property to a table

В следующем примере расширенное свойство добавляется к таблице Address , относящейся к схеме Person .The following example adds an extended property to the Address table in the Person schema.

USE AdventureWorks2012;  
GO  
EXEC sys.sp_addextendedproperty   
@name = N'MS_DescriptionExample',   
@value = N'Street address information for customers, employees, and vendors.',   
@level0type = N'SCHEMA', @level0name = 'Person',  
@level1type = N'TABLE',  @level1name = 'Address';  
GO  

Ж.G. Добавление расширенного свойства к ролиAdding an extended property to a role

В следующем примере создается роль приложения и добавляется расширенное свойство к роли.The following example creates an application role and adds an extended property to the role.

USE AdventureWorks2012;   
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 = N'USER',  
@level0name = 'Buyers';  

З.H. Добавление расширенного свойства к типуAdding an extended property to a type

В следующем примере расширенное свойство добавляется к типу.The following example adds an extended property to a type.

USE AdventureWorks2012;   
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 = N'SCHEMA',   
@level0name = N'dbo',   
@level1type = N'TYPE',   
@level1name = N'OrderNumber';  

И.I. Добавление расширенного свойства к пользователюAdding an extended property to a user

В следующем примере создается пользователь и добавляется расширенное свойство к пользователю.The following example creates a user and adds an extended property to the user.

USE AdventureWorks2012;   
GO  
CREATE USER CustomApp WITHOUT LOGIN ;   
GO  
EXEC sys.sp_addextendedproperty   
@name = N'MS_Description',   
@value = N'User for an application.',   
@level0type = N'USER',   
@level0name = N'CustomApp';  

См. такжеSee Also

Хранимым процедурам ядра СУБД (Transact-SQL) Database Engine Stored Procedures (Transact-SQL)
sys.fn_listextendedproperty (Transact-SQL) sys.fn_listextendedproperty (Transact-SQL)
sp_dropextendedproperty (Transact-SQL) sp_dropextendedproperty (Transact-SQL)
sp_updateextendedproperty (Transact-SQL)sp_updateextendedproperty (Transact-SQL)