sp_addextendedproperty (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure 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 (Erfolg) 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 zu Standard, wendet SQL Server die Eigenschaft auf die Tabelle an, die im Schema mit dem Namen Maryenthalten 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 Addresseine 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';