sp_addextendedproperty (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance
Fügt eine neue erweiterte Eigenschaft zu einem Datenbankobjekt hinzu.
Transact-SQL-Syntaxkonventionen
Syntax
sp_addextendedproperty
[ @name = ] N'name'
[ , [ @value = ] value ]
[ , [ @level0type = ] 'level0type' ]
[ , [ @level0name = ] N'level0name' ]
[ , [ @level1type = ] 'level1type' ]
[ , [ @level1name = ] N'level1name' ]
[ , [ @level2type = ] 'level2type' ]
[ , [ @level2name = ] N'level2name' ]
[ ; ]
Argumente
[ @name = ] N'name'
Der Name der hinzuzufügenden Eigenschaft. @name ist "sysname" ohne Standard und kann nicht seinNULL
. Namen können leere oder nicht alphanumerische Zeichenfolgen und Binäre Werte enthalten.
[ @value = ] value
Der Wert, der der Eigenschaft zugeordnet werden soll. @value ist sql_variant, mit einem Standardwert von NULL
. Die Größe von @value darf nicht mehr als 7.500 Byte betragen.
[ @level0type = ] 'level0type'
Der Typ des Objekts der Ebene 0. @level0type ist varchar(128) mit einem Standardwert von 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
PLAN GUIDE
NULL
Wichtig
Die Möglichkeit zum Angeben USER
als Typ der Ebene 0 in einer erweiterten Eigenschaft eines Typobjekts vom Typ Level 1 wird in einer zukünftigen Version von SQL Server entfernt. Verwenden Sie SCHEMA
stattdessen als Ebene-0-Typ. Beispiel: Wenn Sie eine erweiterte Eigenschaft für eine Tabelle definieren, geben Sie das Schema der Tabelle statt eines Benutzernamens an. Die Möglichkeit, als Typ der Ebene 0 anzugeben TYPE
, wird in einer zukünftigen Version von SQL Server entfernt. Verwenden Sie SCHEMA
für TYPE als Typ der Ebene 0 und TYPE
als Typ der Ebene 1.
[ @level0name = ] N'level0name'
Der Name des angegebenen Objekttyps der Ebene 0. @level0name ist "sysname" mit der Standardeinstellung "NULL
.
[ @level1type = ] 'level1type'
Der Typ des Objekts der Ebene 1. @level1type ist varchar(128) mit einem Standardwert von NULL
.
Gültige Eingaben sind:
AGGREGATE
DEFAULT
FUNCTION
LOGICAL FILE NAME
PROCEDURE
QUEUE
RULE
SEQUENCE
SYNONYM
TABLE
TABLE_TYPE
TYPE
VIEW
XML SCHEMA COLLECTION
NULL
[ @level1name = ] N'level1name'
Der Name des angegebenen Objekttyps der Ebene 1. @level1name ist "sysname" mit einem Standardwert von NULL
.
[ @level2type = ] 'level2type'
Der Typ des Objekts der Ebene 2. @level2type ist varchar(128), mit einem Standardwert von NULL
.
Gültige Eingaben sind:
COLUMN
CONSTRAINT
EVENT NOTIFICATION
INDEX
PARAMETER
TRIGGER
NULL
[ @level2name = ] N'level2name'
Der Name des angegebenen Objekttyps der Ebene 2. @level2name ist "sysname" mit dem Standardwert "NULL
.
Rückgabecodewerte
0
(erfolgreich) oder 1
Fehler.
Hinweise
Wenn Sie erweiterte Eigenschaften angeben, werden die Objekte in einer SQL Server-Datenbank in drei Ebenen klassifiziert: 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 Tabellenamen (Ebene 1) angeben, der die Spalte und das Schema (Ebene 0) enthält, in dem die Tabelle enthalten ist.
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 in Argumenten nicht als gültige Eingaben aufgeführt sind, nicht zulässig.
Erweiterte Eigenschaften sind für speicheroptimierte Tabellen nicht zulässig.
Replizieren erweiterter Eigenschaften
Erweiterte Eigenschaften werden nur in der ersten Synchronisierung zwischen dem Verleger und dem Abonnenten repliziert. Wenn Sie nach der ersten Synchronisierung eine erweiterte Eigenschaft hinzufügen oder ändern, wird die Änderung nicht repliziert. Weitere Informationen zum Replizieren von Datenbankobjekten finden Sie unter Veröffentlichen von Daten- und Datenbankobjekten.
Schema im Vergleich zum Benutzer
Es wird nicht empfohlen USER
, einen Typ der Ebene 0 anzugeben, wenn Sie eine erweiterte Eigenschaft auf ein Datenbankobjekt anwenden, da dies zu Mehrdeutigkeit der Namensauflösung führen kann. Angenommen, Der Benutzer Mary
besitzt zwei Schemas (Mary
und MySchema
), und diese Schemas enthalten beide eine Tabelle mit dem Namen MyTable
. Wenn Mary eine erweiterte Eigenschaft zu Tabelle MyTable
hinzufügt und angibt @level0type = 'USER', @level0name = N'Mary'
, ist es nicht klar, auf welche Tabelle die erweiterte Eigenschaft angewendet wird. Um die Abwärtskompatibilität aufrechtzuerhalten, wendet SQL Server die Eigenschaft auf die Tabelle an, die im Schema mit dem Namen Mary
enthalten ist.
Berechtigungen
Elemente der db_owner und db_ddladmin festen Datenbankrollen können jedem Objekt mit der folgenden Ausnahme erweiterte Eigenschaften hinzufügen: db_ddladmin können der Datenbank selbst oder Benutzern oder Rollen keine 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.
Beispiele
A. Hinzufügen einer erweiterten Eigenschaft zu einer Datenbank
Im folgenden Beispiel wird der Caption
-Beispieldatenbank der Eigenschaftsname AdventureWorks2022 Sample OLTP Database
mit dem Wert AdventureWorks2022
hinzugefügt.
USE AdventureWorks2022;
GO
--Add a caption to the AdventureWorks2022 Database object itself.
EXEC sp_addextendedproperty @name = N'Caption',
@value = 'AdventureWorks2022 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 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
C. Hinzufügen einer Eingabeformateigenschaft zu einer Spalte
Im folgenden Beispiel wird der Spalte PostalCode
in der Tabelle Address
eine Eingabeformateigenschaft 99999 or 99999-9999 or #### ###
hinzugefügt.
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: Hinzufügen einer erweiterten Eigenschaft zu einer Dateigruppe
Im folgenden Beispiel wird der PRIMARY
-Dateigruppe eine erweiterte Eigenschaft hinzugefügt.
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
E. Hinzufügen einer erweiterten Eigenschaft zu einem Schema
Im folgenden Beispiel wird dem HumanResources
-Schema eine erweiterte Eigenschaft hinzugefügt.
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. Hinzufügen einer erweiterten Eigenschaft zu einer Tabelle
Im folgenden Beispiel wird der Address
-Tabelle im Person
-Schema eine erweiterte Eigenschaft hinzugefügt.
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. 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 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. Hinzufügen einer erweiterten Eigenschaft zu einem Typ
Im folgenden Beispiel wird einem Typ eine erweiterte Eigenschaft hinzugefügt.
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. Hinzufügen einer erweiterten Eigenschaft zu einem Benutzer
Im folgenden Beispiel wird ein Benutzer erstellt und diesem eine erweiterte Eigenschaft hinzugefügt.
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';