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

適用対象: ○SQL Server ○Azure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

新しい拡張プロパティをデータベース オブジェクトに追加します。Adds a new extended property to a database object.

トピック リンク アイコン Transact-SQL 構文表記規則Topic 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.

重要

レベル 1 の種類のオブジェクトの拡張プロパティで、USER をレベル 0 の種類として指定できる機能は、 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. レベル 0 の種類として TYPE を指定できる機能は、SQL ServerSQL Server の将来のバージョンで削除されます。The ability to specify TYPE as level-0 type will be removed in a future version of SQL ServerSQL Server. TYPE については、レベル 0 の種類として SCHEMA、レベル 1 の種類として TYPE を使用してください。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 スキーマ コレクション、および 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データベース 3 つのレベルに分類されます。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.

1 つのレベルにあるオブジェクトを参照する場合は、そのオブジェクトを所有または格納する上位レベルのオブジェクトの名前で修飾する必要があります。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.

スキーマとユーザー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. たとえば、ユーザー Mary が 2 つのスキーマ (Mary と 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_owner および db_ddladmin のメンバーは、任意のオブジェクトに拡張プロパティを追加できます。ただし、例外として、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.B. 拡張プロパティをテーブル内の列に追加するAdding an extended property to a column in a table

次の例では、テーブル 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.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.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.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.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.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.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.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)