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