sp_addextendedproperty (Transact-SQL)
Fügt eine neue erweiterte Eigenschaft zu einem Datenbankobjekt hinzu.
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 Eigenschaft, die hinzugefügt werden soll. property_name ist vom Datentyp sysname und kann 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; der Standardwert ist NULL. value kann nicht größer als 7.500 Byte sein.[ @level0type= ]{ 'level0_object_type'}
Der Typ des Objekts der Ebene 0. level0_object_type ist vom Datentyp varchar(128); der Standardwert ist NULL.Gültige Eingaben sind ASSEMBLY, CONTRACT, EVENT NOTIFICATION, FILEGROUP, MESSAGE TYPE, PARTITION FUNCTION, PARTITION SCHEME, REMOTE SERVICE BINDING, ROUTE, SCHEMA, SERVICE, USER, TRIGGER, TYPE und NULL.
Wichtig Die Datentypen USER und TYPE als Typen der Ebene 0 werden in einer zukünftigen Version von SQL Server nicht mehr unterstützt. Verwenden Sie diese Features beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es aktuell verwendet wird. Verwenden Sie SCHEMA als Typ der Ebene 0 anstelle von USER. 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; der Standardwert ist NULL.[ @level1type = ] { 'level1_object_type' }
Der Typ des Objekts der Ebene 1. level1_object_type ist vom Datentyp varchar(128); der Standardwert ist 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; der Standardwert ist NULL.[ @level2type= ] { 'level2_object_type' }
Der Typ des Objekts der Ebene 2. level2_object_type ist vom Datentyp varchar(128); der Standardwert ist 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; der Standardwert ist 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. Es können erweiterte Eigenschaften für Objekte auf allen 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.
Eine vollständige Liste von Objekten und der gültigen Objekttypen der Ebene 0, 1 und 2 finden Sie unter Verwenden von erweiterten Eigenschaften für Datenbankobjekte.
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 und 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, Benutzer Mary besitzt beispielsweise 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 namens Mary an. Weitere Informationen zu Benutzern und Schemas finden Sie unter Trennung von Benutzer und Schema.
Berechtigungen
Mitglieder der festen Datenbankrollen db_owner und db_ddladmin können beliebigen Objekten erweiterte Eigenschaften hinzufügen, wobei die folgende Ausnahme gilt: db_ddladmin kann weder der Datenbank noch Benutzern oder Rollen Eigenschaften hinzufügen.
Benutzer können erweiterte Eigenschaften zu Objekten hinzufügen, die sie besitzen, oder für die sie die ALTER- oder CONTROL-Berechtigung haben. Eine vollständige Liste der erforderlichen Berechtigungen finden Sie unter Verwenden von erweiterten Eigenschaften für Datenbankobjekte.
Beispiele
A. Hinzufügen einer erweiterten Eigenschaft zu einer Datenbank
Im folgenden Beispiel wird der AdventureWorks-Beispieldatenbank der Eigenschaftsname 'Caption' mit dem Wert 'AdventureWorks Sample OLTP Database' hinzugefügt.
USE AdventureWorks;
GO
--Add a caption to the AdventureWorks Database object itself.
EXEC sp_addextendedproperty
@name = N'Caption', @value = 'AdventureWorks Sample OLTP Database';
B. Hinzufügen einer erweiterten Eigenschaft zu einer Spalte in einer Tabelle
Im folgenden Beispiel wird eine Caption-Eigenschaft zur PostalCode-Spalte in der Address-Tabelle hinzugefügt.
USE AdventureWorks;
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 Input Mask-Eigenschaft zu einer Spalte
Im folgenden Beispiel wird eine Input Mask-Eigenschaft '99999 or 99999-9999 or #### ###' zur PostalCode-Spalte in der Address-Tabelle hinzugefügt.
USE AdventureWorks;
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 AdventureWorks;
GO
EXEC sys.sp_addextendedproperty
@name = N'MS_DescriptionExample',
@value = N'Primary filegroup for the AdventureWorks sample database.',
@level0type = N'FILEGROUP', @level0name = [PRIMARY];
GO
Siehe auch