Freigeben über


sp_addextendedproperty (Transact-SQL)

 

Fügt eine neue erweiterte Eigenschaft zu einem Datenbankobjekt hinzu.

Gilt für: SQL Server (SQL Server 2008 bis zur aktuellen Version), SQL Database V12.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

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' } 
                        ] 
                ]
        ] 
    ] 
[;]

Argumente

  • [ @name ] = { 'property_name' }
    Der Name der hinzuzufügenden Eigenschaft.property_name ist sysname und darf nicht NULL sein.Namen können auch leere oder nicht alphanumerische Zeichenfolgen sowie binäre Werte sein.

  • [ @value= ] { 'value'}
    Der Wert, der der Eigenschaft zugeordnet werden soll.value ist vom Datentyp sql_variant und hat den Standardwert NULL.value kann nicht größer als 7.500 Bytes sein.

  • [ @level0type= ] { 'level0_object_type' }
    Der Typ des Objekts der Ebene 0.level0_object_type ist vom Datentyp varchar(128) und hat den Standardwert NULL.

    Gültige Eingabewerte sind ASSEMBLY, CONTRACT, EVENT NOTIFICATION, FILEGROUP, MESSAGE TYPE, PARTITION FUNCTION, PARTITION SCHEME, REMOTE SERVICE BINDING, ROUTE, SCHEMA, SERVICE, USER, TRIGGER, TYPE, PLAN GUIDE und NULL.

    Wichtig

    In zukünftigen Versionen von SQL Server wird es nicht mehr möglich sein, USER als Typ der Ebene 0 in einer erweiterten Eigenschaft eines Typobjekts der Ebene 1 anzugeben.Verwenden Sie stattdessen SCHEMA als Typ der Ebene 0.Beispiel: Wenn Sie eine erweiterte Eigenschaft für eine Tabelle definieren, geben Sie das Schema der Tabelle statt eines Benutzernamens an.In zukünftigen Versionen von SQL Server kann TYPE nicht mehr als Typ der Ebene 0 angegeben werden.Verwenden Sie für TYPE als Typ der Ebene 0 SCHEMA und TYPE als Typ der Ebene 1.

  • [ @level0name= ] { 'level0_object_name' }
    Der Name des angegebenen Objekttyps der Ebene 0.level0_object_name ist vom Datentyp sysname und hat den Standardwert NULL.

  • [ @level1type= ] { 'level1_object_type' }
    Der Typ des Objekts der Ebene 1.level1_object_type ist vom Datentyp varchar(128) und hat den Standardwert NULL.Gültige Eingabewerte sind AGGREGATE, DEFAULT, FUNCTION, LOGICAL FILE NAME, PROCEDURE, QUEUE, RULE, SYNONYM, TABLE, TABLE_TYPE, TYPE, VIEW, XML SCHEMA COLLECTION und NULL.

  • [ @level1name= ] { 'level1_object_name' }
    Der Name des angegebenen Objekttyps der Ebene 1.level1_object_name ist vom Datentyp sysname und hat den Standardwert NULL.

  • [ @level2type= ] { 'level2_object_type' }
    Der Typ des Objekts der Ebene 2.level2_object_type ist vom Datentyp varchar(128) und hat den Standardwert NULL.Gültige Eingabewerte sind COLUMN, CONSTRAINT, EVENT NOTIFICATION, INDEX, PARAMETER, TRIGGER und NULL.

  • [ @level2name= ] { 'level2_object_name' }
    Der Name des angegebenen Objekttyps der Ebene 2.level2_object_name ist vom Datentyp sysname und hat den Standardwert NULL.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Hinweise

Für das Angeben erweiterter Eigenschaften werden die Objekte in einer SQL Server-Datenbank in drei Ebenen unterteilt: 0, 1 und 2.Ebene 0 ist die höchste Ebene und als im Datenbankbereich enthaltene Objekte definiert.Objekte der Ebene 1 sind in einem Schema- oder Benutzerbereich enthalten, und Objekte der Ebene 2 sind in Objekten der Ebene 1 enthalten.Erweiterte Eigenschaften können für Objekte auf einer dieser Ebenen definiert werden.

Verweise auf ein Objekt einer Ebene müssen mit den Namen der Objekte der höheren Ebene gekennzeichnet werden, die diese besitzen oder enthalten.Wenn Sie beispielsweise einer Tabellenspalte (Ebene 2) eine erweiterte Eigenschaft hinzufügen, müssen Sie auch den Tabellennamen (Ebene 1) angeben, der die Spalte und das Schema (Ebene 0) enthält, das die Tabelle enthält.

Wenn alle Objekttypen und -namen NULL sind, gehört die Eigenschaft zur aktuellen Datenbank.

Erweiterte Eigenschaften sind für Systemobjekte, Objekte außerhalb des Bereichs einer benutzerdefinierten Datenbank oder Objekte, die nicht als gültige Eingaben unter den Argumenten aufgelistet sind, nicht zulässig.

Replizieren erweiterter Eigenschaften

Erweiterte Eigenschaften werden nur in der ersten Synchronisierung zwischen dem Verleger und dem Abonnenten repliziert.Wenn Sie eine erweiterte Eigenschaft nach der ersten Synchronisierung hinzufügen oder ändern, wird die Änderung nicht repliziert.Weitere Informationen über das Replizieren von Datenbanken finden Sie unter Veröffentlichen von Daten und Datenbankobjekten.

Schema oder Benutzer

Es wird nicht empfohlen, USER als einen Typ der Ebene 0 anzugeben, wenn eine erweiterte Eigenschaft auf ein Datenbankobjekt angewendet wird, da dies zu Mehrdeutigkeiten bei der Namensauflösung führen kann.Angenommen, Benutzerin Mary besitzt zwei Schemas (Mary und MySchema) und diese Schemas enthalten beide eine Tabelle namens MyTable.Fügt Mary der MyTable-Tabelle eine erweiterte Eigenschaft hinzu und gibt @level0type = N'USER' und @level0name = Mary an, ist nicht klar, auf welche Tabelle die erweiterte Eigenschaft angewendet werden soll.Aus Gründen der Abwärtskompatibilität wendet SQL Server die Eigenschaft auf die Tabelle im Schema Mary an.

Berechtigungen

Mitglieder der festen Datenbankrollen db_owner und db_ddladmin können beliebigen Objekten erweiterte Eigenschaften hinzufügen. Es gilt jedoch die folgende Ausnahme: weder der Datenbank selbst noch Benutzern oder Rollen können mithilfe von db_ddladmin Eigenschaften hinzugefügt werden.

Benutzer können erweiterte Eigenschaften zu Objekten hinzufügen, die sie besitzen, oder für die sie die ALTER- oder CONTROL-Berechtigung haben.

Beispiele

A.Hinzufügen einer erweiterten Eigenschaft zu einer Datenbank

Im folgenden Beispiel wird der 'Caption'-Beispieldatenbank der Eigenschaftsname 'AdventureWorks2012 Sample OLTP Database' mit dem Wert AdventureWorks2012 hinzugefügt.

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

B.Hinzufügen einer erweiterten Eigenschaft zu einer Spalte in einer Tabelle

Im folgenden Beispiel wird der PostalCode-Spalte in der Address-Tabelle eine Caption-Eigenschaft hinzugefügt.

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.Hinzufügen einer InputMask-Eigenschaft zu einer Spalte

Im folgenden Beispiel wird der 99999 or 99999-9999 or #### ###-Spalte in der PostalCode-Tabelle eine InputMask-Eigenschaft mit dem Wert 'Addresshinzugefügt.

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.Hinzufügen einer erweiterten Eigenschaft zu einer Dateigruppe

Im folgenden Beispiel wird der PRIMARY-Dateigruppe eine erweiterte Eigenschaft hinzugefügt.

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.Hinzufügen einer erweiterten Eigenschaft zu einem Schema

Im folgenden Beispiel wird dem HumanResources-Schema eine erweiterte Eigenschaft hinzugefügt.

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.Hinzufügen einer erweiterten Eigenschaft zu einer Tabelle

Im folgenden Beispiel wird der Address-Tabelle im Person-Schema eine erweiterte Eigenschaft hinzugefügt.

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.Hinzufügen einer erweiterten Eigenschaft zu einer Rolle

Im folgenden Beispiel wird eine Anwendungsrolle erstellt, und der Rolle wird eine erweiterte Eigenschaft hinzugefügt.

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.Hinzufügen einer erweiterten Eigenschaft zu einem Typ

Im folgenden Beispiel wird einem Typ eine erweiterte Eigenschaft hinzugefügt.

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.Hinzufügen einer erweiterten Eigenschaft zu einem Benutzer

Im folgenden Beispiel wird ein Benutzer erstellt und diesem eine erweiterte Eigenschaft hinzugefügt.

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

Siehe auch

Gespeicherte Prozeduren für das Datenbankmodul (Transact-SQL)
sys.fn_listextendedproperty (Transact-SQL)
sp_dropextendedproperty (Transact-SQL)
sp_updateextendedproperty (Transact-SQL)