sp_addextendedproperty (Transact-SQL)

Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure

Aggiunge una nuova proprietà estesa a un oggetto di database.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

[ @name = ] N'name'

Nome della proprietà da aggiungere. @name è sysname, senza impostazione predefinita e non può essere NULL. I nomi possono includere stringhe di caratteri vuote o non alfanumerici e valori binari.

[ @value = ] value

Valore da associare alla proprietà . @value è sql_variant, con il valore predefinito NULL. Le dimensioni di @value non possono essere superiori a 7.500 byte.

[ @level0type = ] 'level0type'

Tipo di oggetto di livello 0. @level0type è varchar(128), con il valore predefinito NULL.

Gli input validi sono:

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

Importante

La possibilità di specificare USER come tipo di livello 0 in una proprietà estesa di un oggetto di tipo di livello 1 verrà rimossa in una versione futura di SQL Server. Usare SCHEMA invece come tipo di livello 0. Quando, ad esempio, si definisce una proprietà estesa in una tabella, specificare lo schema della tabella anziché un nome utente. La possibilità di specificare TYPE come tipo di livello 0 verrà rimossa in una versione futura di SQL Server. Per TYPE, usare SCHEMA come tipo level-0 e TYPE come tipo di livello 1.

[ @level0name = ] N'level0name'

Nome del tipo di oggetto di livello 0 specificato. @level0name è sysname, con un valore predefinito .NULL

[ @level1type = ] 'level1type'

Tipo di oggetto di livello 1. @level1type è varchar(128), con il valore predefinito NULL.

Gli input validi sono:

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

[ @level1name = ] N'level1name'

Nome del tipo di oggetto di livello 1 specificato. @level1name è sysname, con un valore predefinito .NULL

[ @level2type = ] 'level2type'

Tipo di oggetto di livello 2. @level2type è varchar(128), con il valore predefinito NULL.

Gli input validi sono:

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

[ @level2name = ] N'level2name'

Nome del tipo di oggetto di livello 2 specificato. @level2name è sysname, con un valore predefinito .NULL

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Osservazioni:

Quando si specificano proprietà estese, gli oggetti in un database di SQL Server vengono classificati in tre livelli: 0, 1 e 2. Il livello 0 è il livello più alto e viene definito come oggetti inclusi nell'ambito del database. Gli oggetti di livello 1 sono inclusi nell'ambito di uno schema o utente, mentre gli oggetti di livello 2 sono contenuti dagli oggetti di livello 1. È possibile definire le proprietà estese per gli oggetti di qualsiasi livello.

È necessario qualificare i riferimenti a un oggetto in un livello mediante i nomi degli oggetti proprietari di livello superiore o che li contengono. Se, ad esempio, si aggiunge una proprietà estesa a una colonna di tabella (livello 2), è necessario specificare anche il nome della tabella (livello 1) che include la colonna e lo schema (livello 0) contenente la tabella.

Se tutti i tipi e i nomi di oggetto sono Null, la proprietà appartiene al database corrente stesso.

Le proprietà estese non sono consentite per gli oggetti di sistema, gli oggetti esterni all'ambito di un database definito dall'utente o gli oggetti non elencati in Argomenti come input validi.

Le proprietà estese non sono consentite nelle tabelle ottimizzate per la memoria.

Replicare le proprietà estese

Le proprietà estese vengono replicate solo nella sincronizzazione iniziale tra il server di pubblicazione e il Sottoscrittore. Se si aggiunge o si modifica una proprietà estesa dopo la sincronizzazione iniziale, la modifica non viene replicata. Per altre informazioni su come replicare oggetti di database, vedere Pubblicare dati e oggetti di database.

Schema e utente

Non è consigliabile specificare USER come tipo di livello 0 quando si applica una proprietà estesa a un oggetto di database, perché ciò può causare ambiguità nella risoluzione dei nomi. Si supponga, ad esempio, che l'utente Mary sia proprietario di due schemi (Mary e MySchema) e che entrambi contengano una tabella denominata MyTable. Se Mary aggiunge una proprietà estesa alla tabella MyTable e specifica @level0type = 'USER', @level0name = N'Mary', non è chiaro a quale tabella viene applicata la proprietà estesa. Per mantenere la compatibilità con le versioni precedenti, SQL Server applica la proprietà alla tabella contenuta nello schema denominato Mary.

Autorizzazioni

I membri del db_owner e db_ddladmin ruoli predefiniti del database possono aggiungere proprietà estese a qualsiasi oggetto con l'eccezione seguente: db_ddladmin non può aggiungere proprietà al database stesso o a utenti o ruoli.

Gli utenti possono aggiungere le proprietà estese agli oggetti di cui sono proprietari oppure per i quali dispongono delle autorizzazioni ALTER o CONTROL.

Esempi

R. Aggiungere una proprietà estesa a un database

Nell'esempio seguente la proprietà Caption con valore AdventureWorks2022 Sample OLTP Database viene aggiunta al database di esempio AdventureWorks2022 .

USE AdventureWorks2022;
GO

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

B. Aggiungere una proprietà estesa a una colonna in una tabella

Nell'esempio seguente la proprietà Caption viene aggiunta alla colonna PostalCode nella tabella Address.

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. Aggiungere una proprietà maschera di input a una colonna

Nell'esempio seguente viene aggiunta una proprietà 99999 or 99999-9999 or #### ### della maschera di input alla colonna PostalCode della tabella Address.

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. Aggiungere una proprietà estesa a un filegroup

Nell'esempio seguente viene aggiunta una proprietà estesa al filegroup PRIMARY .

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. Aggiungere una proprietà estesa a uno schema

Nell'esempio seguente viene aggiunta una proprietà estesa allo schema HumanResources .

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. Aggiungere una proprietà estesa a una tabella

Nell'esempio seguente viene aggiunta una proprietà estesa alla tabella Address nello schema Person .

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. Aggiungere una proprietà estesa a un ruolo

Nell'esempio seguente viene creato un ruolo applicazione, cui viene aggiunta una proprietà estesa.

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. Aggiungere una proprietà estesa a un tipo

Nell'esempio seguente viene aggiunta una proprietà estesa a un tipo.

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. Aggiungere una proprietà estesa a un utente

Nell'esempio seguente viene creato un utente, cui viene aggiunta una proprietà estesa.

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