Sdílet prostřednictvím


sp_addextendedproperty (Transact-SQL)

platí pro: SQL Server Azure SQL DatabaseAzure SQL Managed Instance

Přidá novou rozšířenou vlastnost do databázového objektu.

Transact-SQL konvence syntaxe

Syntaxe

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

Argumenty

[ @name = ] N'název'

Název vlastnosti, která se má přidat. @name je sysname, bez výchozího nastavení a nemůže být NULL. Názvy můžou obsahovat prázdné nebo jiné než alfanumerické řetězce znaků a binární hodnoty.

[ @value = ] hodnota

Hodnota, která má být přidružena k vlastnosti. @value je sql_variants výchozím NULL. Velikost @value nesmí být větší než 7 500 bajtů.

[ @level0type = ] 'level0type'

Typ objektu úrovně 0. @level0type je varchar(128) s výchozím nastavením NULL.

Platné vstupy jsou:

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

Důležité

Možnost zadat USER jako typ úrovně 0 v rozšířené vlastnosti objektu typu level-1 bude odebrána v budoucí verzi SQL Serveru. Místo toho se používá SCHEMA jako typ úrovně 0. Například při definování rozšířené vlastnosti v tabulce zadejte schéma tabulky místo uživatelského jména. Možnost zadat TYPE jako typ level-0 bude odebrána v budoucí verzi SQL Serveru. Jako typ úrovně 0 a SCHEMA jako typ úrovně 1 použijte TYPE typ TYPE-1.

[ @level0name = ] N'level0name'

Název zadaného typu objektu úrovně 0. @level0name je sysname s výchozím nastavením NULL.

[ @level1type = ] 'level1type'

Typ objektu úrovně 1. @level1type je varchar(128) s výchozím nastavením NULL.

Platné vstupy jsou:

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

[ @level1name = ] N'level1name'

Název zadaného typu objektu úrovně 1. @level1name je sysname s výchozím nastavením NULL.

[ @level2type = ] 'level2type'

Typ objektu úrovně 2. @level2type je varchar(128) s výchozím nastavením NULL.

Platné vstupy jsou:

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

[ @level2name = ] N'level2name'

Název zadaného typu objektu úrovně 2. @level2name je sysname, s výchozím nastavením NULL.

Hodnoty návratového kódu

0 (úspěch) nebo 1 (selhání).

Poznámky

Při zadávání rozšířených vlastností se objekty v databázi SQL Serveru klasifikují do tří úrovní: 0, 1 a 2. Úroveň 0 je nejvyšší a je definována jako objekty obsažené v oboru databáze. Objekty úrovně 1 jsou obsaženy ve schématu nebo oboru uživatele a objekty úrovně 2 jsou obsaženy objekty úrovně 1. Rozšířené vlastnosti lze definovat pro objekty na kterékoli z těchto úrovní.

Odkazy na objekt v jedné úrovni musí být kvalifikované s názvy objektů vyšší úrovně, které vlastní nebo obsahují. Když například přidáte rozšířenou vlastnost do sloupce tabulky (úroveň 2), musíte také zadat název tabulky (úroveň 1), který obsahuje sloupec a schéma (úroveň 0), které obsahuje tabulku.

Pokud jsou všechny typy objektů a názvy null, vlastnost patří do aktuální databáze samotné.

Rozšířené vlastnosti nejsou povoleny pro systémové objekty, objekty mimo obor uživatelem definované databáze nebo objekty, které nejsou uvedeny v argumentech jako platné vstupy.

Rozšířené vlastnosti nejsou povoleny u tabulek optimalizovaných pro paměť.

Replikace rozšířených vlastností

Rozšířené vlastnosti se replikují pouze v počáteční synchronizaci mezi vydavatelem a odběratelem. Pokud po počáteční synchronizaci přidáte nebo upravíte rozšířenou vlastnost, změna se nereplikuje. Další informace o replikaci databázových objektů naleznete v tématu Publikování dat a databázových objektů.

Schéma versus uživatel

Pokud u databázového objektu použijete rozšířenou vlastnost, nedoporučujeme ji zadávat USER jako typ úrovně 0, protože to může způsobit nejednoznačnost překladu názvů. Předpokládejme například, že uživatel Mary vlastní dvě schémata (Mary a MySchema) a obě tato schémata obsahují tabulku s názvem MyTable. Pokud Mary přidá rozšířenou vlastnost do tabulky MyTable a určí @level0type = 'USER', @level0name = N'Mary', není jasné, pro kterou tabulku se rozšířená vlastnost použije. Chcete-li zachovat zpětnou kompatibilitu, SQL Server použije vlastnost na tabulku obsaženou ve schématu s názvem Mary.

Povolení

Členové db_owner a db_ddladmin pevných databázových rolí mohou přidávat rozšířené vlastnosti do libovolného objektu s následující výjimkou: db_ddladmin nemohou přidávat vlastnosti do samotné databáze ani uživatelům nebo rolím.

Uživatelé mohou přidávat rozšířené vlastnosti k objektům, které vlastní, nebo mají oprávnění ALTER nebo CONTROL.

Příklady

A. Přidání rozšířené vlastnosti do databáze

Následující příklad přidá název Caption vlastnosti s hodnotou AdventureWorks2022 Sample OLTP Database do AdventureWorks2022 ukázkové databáze.

USE AdventureWorks2022;
GO

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

B. Přidání rozšířené vlastnosti do sloupce v tabulce

Následující příklad přidá vlastnost titulku do sloupce PostalCode v tabulce 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. Přidání vlastnosti vstupní masky do sloupce

Následující příklad přidá vlastnost 99999 or 99999-9999 or #### ### vstupní masky do sloupce PostalCode v tabulce 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. Přidání rozšířené vlastnosti do skupiny souborů

Následující příklad přidá rozšířenou vlastnost do PRIMARY skupiny souborů.

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. Přidání rozšířené vlastnosti do schématu

Následující příklad přidá rozšířenou vlastnost do schématu HumanResources .

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. Přidání rozšířené vlastnosti do tabulky

Následující příklad přidá rozšířenou vlastnost do Address tabulky ve schématu Person .

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. Přidání rozšířené vlastnosti do role

Následující příklad vytvoří roli aplikace a přidá rozšířenou vlastnost do role. Nahraďte <password> silným heslem.

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. Přidání rozšířené vlastnosti do typu

Následující příklad přidá rozšířenou vlastnost do typu.

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

Já. Přidání rozšířené vlastnosti uživateli

Následující příklad vytvoří uživatele a přidá do uživatele rozšířenou vlastnost.

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