Condividi tramite


sp_updateextendedproperty (Transact-SQL)

Aggiorna il valore di una proprietà estesa esistente.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

sp_updateextendedproperty
    [ @name = ]{ 'property_name' } 
    [, [ @value = ]{ 'value' }
        [, [ @level0type = ]{ 'level0_object_type' }
                  , [ @level0name = ]{ 'level0_object_name' }
              [, [ @level1type = ]{ 'level1_object_type' }
                              , [ @level1name = ]{ 'level1_object_name' }
                     [, [ @level2type = ]{ 'level2_object_type' }
                                            , [ @level2name = ]{ 'level2_object_name' }
                     ]
              ]
        ]
    ]

Argomenti

  • [ @name= ]{ 'property_name'}
    Nome della proprietà da aggiornare. property_name è di tipo sysname e non può essere NULL.

  • [ @value= ]{ 'value'}
    Valore associato alla proprietà. value è di tipo sql_variant e il valore predefinito è NULL. La dimensione di value non può superare 7.500 byte.

  • [ @level0type= ]{ 'level0_object_type'}
    Utente o tipo definito dall'utente. level0_object_type è di tipo varchar(128) e il valore predefinito è NULL. I possibili valori sono ASSEMBLY, CONTRACT, EVENT NOTIFICATION, FILEGROUP, MESSAGE TYPE, PARTITION FUNCTION, PARTITION SCHEME, REMOTE SERVICE BINDING, ROUTE, SCHEMA, SERVICE, USER, TRIGGER, TYPE e NULL.

    Nota importanteImportante

    I tipi USER e TYPE come tipi di livello 0 verranno rimossi in una versione futura di SQL Server. Evitare pertanto di utilizzarli in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui sono stati implementati. Utilizzare SCHEMA come tipo di livello 0 anziché USER. Per TYPE utilizzare SCHEMA come tipo di livello 0 e TYPE come tipo di livello 1.

  • [ @level0name= ]{ 'level0_object_name'}
    Nome del tipo di oggetto di livello 1 specificato. level0_object_name è di tipo sysname e il valore predefinito è NULL.

  • [ @level1type= ]{ 'level1_object_type'}
    Tipo di oggetto di livello 1. level1_object_type è di tipo varchar(128) e il valore predefinito è NULL. I possibili valori sono AGGREGATE, DEFAULT, FUNCTION, LOGICAL FILE NAME, PROCEDURE, QUEUE, RULE, SYNONYM, TABLE, TYPE, VIEW, XML SCHEMA COLLECTION e NULL.

  • [ @level1name= ]{ 'level1_object_name'}
    Nome del tipo di oggetto di livello 1 specificato. level1_object_name è di tipo sysname e il valore predefinito è NULL.

  • [ @level2type= ]{ 'level2_object_type'}
    Tipo di oggetto di livello 2. level2_object_type è di tipo varchar(128) e il valore predefinito è NULL. I possibili valori sono COLUMN, CONSTRAINT, EVENT NOTIFICATION, INDEX, PARAMETER, TRIGGER e NULL..

  • [ @level2name= ]{ 'level2_object_name'}
    Nome del tipo di oggetto di livello 2 specificato. level2_object_name è di tipo sysname e il valore predefinito è NULL.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Osservazioni

Ai fini della definizione delle proprietà estese, gli oggetti inclusi in un database di SQL Server vengono classificati in base a tre livelli, ovvero 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. Per l'elenco completo degli oggetti e dei relativi tipi di livello 0, 1 e 2 validi, vedere Utilizzo di proprietà estese su oggetti di database.

In presenza di valori validi per property_name e value, se tutti i tipi e i nomi di oggetto sono Null, la proprietà aggiornata appartiene al database corrente.

Autorizzazioni

I membri dei ruoli predefiniti del database db_owner e db_ddladmin possono aggiornare le proprietà estese di qualsiasi oggetto, anche se il ruolo db_ddladmin non può aggiungere proprietà al database stesso oppure a utenti o ruoli.

Gli utenti possono aggiornare le proprietà estese degli oggetti di cui sono proprietari oppure per i quali dispongono delle autorizzazioni ALTER o CONTROL. Per l'elenco completo delle autorizzazioni richieste, vedere Utilizzo di proprietà estese su oggetti di database.

Esempi

A. Aggiornamento di una proprietà estesa in una colonna

Nell'esempio seguente viene aggiornato il valore della proprietà Caption nella colonna ID della tabella T1.

USE AdventureWorks;
GO
CREATE TABLE T1 (id int , name char (20));
GO
EXEC sp_addextendedproperty 
    @name = N'Caption'
    ,@value = N'Employee ID'
    ,@level0type = N'Schema', @level0name = dbo
    ,@level1type = N'Table',  @level1name = T1
    ,@level2type = N'Column', @level2name = id;
GO
--Update the extended property.
EXEC sp_updateextendedproperty 
    @name = N'Caption'
    ,@value = 'Employee ID must be unique.'
    ,@level0type = N'Schema', @level0name = dbo
    ,@level1type = N'Table',  @level1name = T1
    ,@level2type = N'Column', @level2name = id;
GO

B. Aggiornamento di una proprietà estesa in un database

Nell'esempio seguente viene innanzitutto creata una proprietà estesa nel database di esempio AdventureWorks e quindi il valore di tale proprietà viene aggiornato.

USE AdventureWorks;
GO
EXEC sp_addextendedproperty 
@name = N'NewCaption', @value = 'AdventureWorks Sample OLTP Database';
GO
USE AdventureWorks;
GO
EXEC sp_updateextendedproperty 
@name = N'NewCaption', @value = 'AdventureWorks Sample Database';
GO