Delen via


sp_addextendedproperty (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Hiermee voegt u een nieuwe uitgebreide eigenschap toe aan een databaseobject.

Transact-SQL syntaxis-conventies

Syntaxis

sp_addextendedproperty
    [ @name = ] N'name'
    [ , [ @value = ] value ]
    [ , [ @level0type = ] 'level0type' ]
    [ , [ @level0name = ] N'level0name' ]
    [ , [ @level1type = ] 'level1type' ]
    [ , [ @level1name = ] N'level1name' ]
    [ , [ @level2type = ] 'level2type' ]
    [ , [ @level2name = ] N'level2name' ]
[ ; ]

Argumenten

[ @name = ] N'naam'

De naam van de eigenschap die moet worden toegevoegd. @name is sysname, zonder standaard, en kan dat niet zijn NULL. Namen kunnen lege of niet-alfanumerieke tekenreeksen en binaire waarden bevatten.

[ @value = ] waarde

De waarde die moet worden gekoppeld aan de eigenschap. @value is sql_variant, met een standaardwaarde van NULL. De grootte van @value mag niet meer dan 7500 bytes zijn.

[ @level0type = ] 'level0type'

Het type object op niveau 0. @level0type is varchar(128), met een standaardwaarde van NULL.

Geldige invoer is:

  • ASSEMBLY
  • CONTRACT
  • EVENT NOTIFICATION
  • FILEGROUP
  • MESSAGE TYPE
  • PARTITION FUNCTION
  • PARTITION SCHEME
  • REMOTE SERVICE BINDING
  • ROUTE
  • SCHEMA
  • SERVICE
  • USER
  • TRIGGER
  • TYPE
  • PLAN GUIDE
  • NULL

Belangrijk

De mogelijkheid om op te geven USER als een type op niveau 0 in een uitgebreide eigenschap van een typeobject op niveau 1 wordt verwijderd in een toekomstige versie van SQL Server. Gebruik SCHEMA in plaats daarvan als type level-0. Als u bijvoorbeeld een uitgebreide eigenschap voor een tabel definieert, geeft u het schema van de tabel op in plaats van een gebruikersnaam. De mogelijkheid om op te geven TYPE als type niveau 0 wordt verwijderd in een toekomstige versie van SQL Server. Gebruik SCHEMA voor TYPE als het type level-0 en TYPE als het type level-1.

[ @level0name = ] N'level0name'

De naam van het opgegeven objecttype niveau 0. @level0name is sysname, met een standaardwaarde van NULL.

[ @level1type = ] 'level1type'

Het type object op niveau 1. @level1type is varchar(128), met een standaardwaarde van NULL.

Geldige invoer is:

  • AGGREGATE
  • DEFAULT
  • FUNCTION
  • LOGICAL FILE NAME
  • PROCEDURE
  • QUEUE
  • RULE
  • SEQUENCE
  • SYNONYM
  • TABLE
  • TABLE_TYPE
  • TYPE
  • VIEW
  • XML SCHEMA COLLECTION
  • NULL

[ @level1name = ] N'level1name'

De naam van het objecttype niveau 1 dat is opgegeven. @level1name is sysname, met een standaardwaarde van NULL.

[ @level2type = ] 'level2type'

Het type object op niveau 2. @level2type is varchar(128), met een standaardwaarde van NULL.

Geldige invoer is:

  • COLUMN
  • CONSTRAINT
  • EVENT NOTIFICATION
  • INDEX
  • PARAMETER
  • TRIGGER
  • NULL

[ @level2name = ] N'level2name'

De naam van het objecttype niveau 2 dat is opgegeven. @level2name is sysname, met een standaardwaarde van NULL.

Codewaarden retourneren

0 (geslaagd) of 1 (mislukt).

Opmerkingen

Wanneer u uitgebreide eigenschappen opgeeft, worden de objecten in een SQL Server-database geclassificeerd in drie niveaus: 0, 1 en 2. Niveau 0 is het hoogste niveau en wordt gedefinieerd als objecten die zich in het databasebereik bevinden. Objecten op niveau 1 bevinden zich in een schema of gebruikersbereik en objecten op niveau 2 zijn opgenomen in objecten op niveau 1. Uitgebreide eigenschappen kunnen worden gedefinieerd voor objecten op elk van deze niveaus.

Verwijzingen naar een object op één niveau moeten worden gekwalificeerd met de namen van de objecten op een hoger niveau die eigenaar zijn van of die objecten bevatten. Wanneer u bijvoorbeeld een uitgebreide eigenschap toevoegt aan een tabelkolom (niveau 2), moet u ook de tabelnaam (niveau 1) opgeven die de kolom en het schema (niveau 0) bevat dat de tabel bevat.

Als alle objecttypen en namen null zijn, behoort de eigenschap tot de huidige database zelf.

Uitgebreide eigenschappen zijn niet toegestaan voor systeemobjecten, objecten buiten het bereik van een door de gebruiker gedefinieerde database of objecten die niet worden vermeld in Argumenten als geldige invoer.

Uitgebreide eigenschappen zijn niet toegestaan voor tabellen die zijn geoptimaliseerd voor geheugen.

Uitgebreide eigenschappen repliceren

Uitgebreide eigenschappen worden alleen gerepliceerd in de initiële synchronisatie tussen de uitgever en de abonnee. Als u een uitgebreide eigenschap toevoegt of wijzigt na de initiële synchronisatie, wordt de wijziging niet gerepliceerd. Zie Gegevens en databaseobjecten publiceren voor meer informatie over het repliceren van databaseobjecten.

Schema versus gebruiker

Het is niet raadzaam om op te USER geven als een type niveau 0 wanneer u een uitgebreide eigenschap toepast op een databaseobject, omdat dit dubbelzinnigheid bij naamomzetting kan veroorzaken. Stel dat de gebruiker Mary eigenaar is van twee schema's (Mary en MySchema) en dat deze schema's beide een tabel met de naam MyTablebevatten. Als Mary een uitgebreide eigenschap aan een tabel MyTable toevoegt en opgeeft @level0type = 'USER', @level0name = N'Mary', is het niet duidelijk aan welke tabel de uitgebreide eigenschap wordt toegepast. Sql Server past de eigenschap toe op de tabel die is opgenomen in het schema met de naam Mary.

Machtigingen

Leden van de db_owner en db_ddladmin vaste databaserollen kunnen uitgebreide eigenschappen toevoegen aan elk object met de volgende uitzondering: db_ddladmin kan geen eigenschappen toevoegen aan de database zelf of aan gebruikers of rollen.

Gebruikers kunnen uitgebreide eigenschappen toevoegen aan objecten die ze bezitten of machtigingen voor ALTER of CONTROL hebben.

Voorbeelden

Eén. Een uitgebreide eigenschap toevoegen aan een database

In het volgende voorbeeld wordt de naam Caption van de eigenschap met een waarde toegevoegd AdventureWorks2022 Sample OLTP Database aan de AdventureWorks2022 voorbeelddatabase.

USE AdventureWorks2022;
GO

--Add a caption to the AdventureWorks2022 Database object itself.
EXECUTE sp_addextendedproperty
    @name = N'Caption',
    @value = 'AdventureWorks2022 Sample OLTP Database';

B. Een uitgebreide eigenschap toevoegen aan een kolom in een tabel

In het volgende voorbeeld wordt een bijschrifteigenschap toegevoegd aan een kolom PostalCode in de tabel Address.

USE AdventureWorks2022;
GO

EXECUTE 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. Een eigenschap invoermasker toevoegen aan een kolom

In het volgende voorbeeld wordt een eigenschap 99999 or 99999-9999 or #### ### invoermasker toegevoegd aan de kolom PostalCode in de tabel Address.

USE AdventureWorks2022;
GO

EXECUTE 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. Een uitgebreide eigenschap toevoegen aan een bestandsgroep

In het volgende voorbeeld wordt een uitgebreide eigenschap toegevoegd aan de PRIMARY bestandsgroep.

USE AdventureWorks2022;
GO

EXECUTE sys.sp_addextendedproperty
    @name = N'MS_DescriptionExample', @value = N'Primary filegroup for the AdventureWorks2022 sample database.',
    @level0type = 'FILEGROUP', @level0name = N'PRIMARY';
GO

E. Een uitgebreide eigenschap toevoegen aan een schema

In het volgende voorbeeld wordt een uitgebreide eigenschap toegevoegd aan het HumanResources schema.

USE AdventureWorks2022;
GO

EXECUTE sys.sp_addextendedproperty
    @name = N'MS_DescriptionExample', @value = N'Contains objects related to employees and departments.',
    @level0type = 'SCHEMA', @level0name = N'HumanResources';

F. Een uitgebreide eigenschap toevoegen aan een tabel

In het volgende voorbeeld wordt een uitgebreide eigenschap toegevoegd aan de Address tabel in het Person schema.

USE AdventureWorks2022;
GO

EXECUTE 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. Een uitgebreide eigenschap toevoegen aan een rol

In het volgende voorbeeld wordt een toepassingsrol gemaakt en wordt een uitgebreide eigenschap toegevoegd aan de rol. Vervang <password> door een sterk wachtwoord.

USE AdventureWorks2022;
GO

CREATE APPLICATION ROLE Buyers
    WITH PASSWORD = '<password>';
GO

EXECUTE sys.sp_addextendedproperty
    @name = N'MS_Description', @value = N'Application Role for the Purchasing Department.',
    @level0type = 'USER', @level0name = N'Buyers';

H. Een uitgebreide eigenschap toevoegen aan een type

In het volgende voorbeeld wordt een uitgebreide eigenschap toegevoegd aan een type.

USE AdventureWorks2022;
GO

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

Ik. Een uitgebreide eigenschap toevoegen aan een gebruiker

In het volgende voorbeeld wordt een gebruiker gemaakt en wordt een uitgebreide eigenschap toegevoegd aan de gebruiker.

USE AdventureWorks2022;
GO

CREATE USER CustomApp WITHOUT LOGIN;
GO

EXECUTE sys.sp_addextendedproperty
    @name = N'MS_Description', @value = N'User for an application.',
    @level0type = 'USER', @level0name = N'CustomApp';