Utilizzo di proprietà estese su oggetti di database

Le proprietà estese consentono di aggiungere testo, ad esempio istruzioni o descrizioni, nonché maschere di input e regole di formattazione sotto forma di proprietà di oggetti inclusi in un database o del database stesso. È ad esempio possibile aggiungere una proprietà estesa a uno schema, alla vista di uno schema o a una colonna della vista. Poiché le proprietà estese vengono archiviate nel database, tutte le applicazioni che leggono le proprietà possono valutare l'oggetto nello stesso modo. In tal modo i dati verranno gestiti in modo più consistente in tutti i programmi del sistema.

È possibile utilizzare le proprietà estese per le operazioni seguenti:

  • Specifica di una didascalia per una tabella, una vista o una colonna. Le applicazioni potranno quindi utilizzare la stessa didascalia in un'interfaccia utente che visualizza informazioni di tale tabella, vista o colonna.

  • Specifica di una maschera di input per una colonna per consentire la convalida dei dati nelle applicazioni prima dell'esecuzione di un'istruzione Transact-SQL. È ad esempio possibile utilizzare la proprietà estesa per specificare il formato richiesto per una colonna relativa al codice di avviamento o al numero di telefono.

  • Specifica delle regole di formattazione per la visualizzazione dei dati in una colonna.

  • Registrazione di una descrizione di oggetti di database specifici visualizzati dalle applicazioni. È ad esempio possibile utilizzare le descrizioni in un report o in un'applicazione del dizionario dati.

  • Specifica delle dimensioni e della posizione in cui una colonna deve essere visualizzata nella finestra.

[!NOTA]

Non utilizzare le proprietà estese per nascondere informazioni riservate su un oggetto. Le proprietà estese di un oggetto possono infatti essere visualizzate da tutti gli utenti che dispongono dell'autorizzazione per l'oggetto. Un utente che dispone, ad esempio, dell'autorizzazione SELECT per una tabella potrà visualizzare le proprietà estese di tale tabella.

Definizione delle proprietà estese

Ogni proprietà estesa dispone di un nome e di un valore definiti dall'utente. Il valore di una proprietà estesa è di tipo sql_variant e può contenere fino a 7.500 byte di dati. È possibile aggiungere più proprietà estese a un unico oggetto.

Per consentire la specifica delle proprietà estese, gli oggetti inclusi in un database SQL Server sono classificati in tre livelli, ovvero 0, 1 e 2. Il livello 0 rappresenta quello più elevato e viene utilizzato per gli oggetti contenuti nell'ambito del database. Gli oggetti del livello 1 sono contenuti in un ambito utente o dello schema, mentre quelli di livello 2 in oggetti di livello 1. È possibile definire le proprietà estese per oggetti di un qualsiasi livello.

Per i riferimenti a un oggetto di un livello è necessario specificare i nomi degli oggetti di livello superiore che li posseggono o li contengono. Quando, ad esempio, si aggiunge una proprietà estesa a una colonna di tabella di livello 2, è necessario specificare anche il nome della tabella di livello 1 che contiene la colonna e lo schema di livello 0 che contiene la tabella.

Nell'esempio seguente il valore della proprietà estesa 'Minimum inventory quantity.' viene aggiunto alla colonna SafetyStockLevel nella tabella Product contenuta nello schema Production .

USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty 
@name = N'MS_DescriptionExample', 
@value = N'Minimum inventory quantity.', 
@level0type = N'SCHEMA', @level0name = Production, 
@level1type = N'TABLE',  @level1name = Product,
@level2type = N'COLUMN', @level2name = SafetyStockLevel;
GO

Aggiunta di proprietà estese a oggetti

Nelle tabelle seguenti sono elencati gli oggetti ai quali è possibile aggiungere proprietà estese. Oltre ai tipi validi di oggetti di livello 0, 1 e 2, sono indicate anche le autorizzazioni necessarie per aggiungere, eliminare o visualizzare le proprietà estese.

Funzione di aggregazione

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

Commenti

0

SCHEMA o USER

 

 

È consigliabile utilizzare SCHEMA anziché USER. Vedere la sezione dedicata al confronto tra Schema e User di seguito in questo argomento.

1

AGGREGATE

ALTER per OBJECT funzione di aggregazione

Qualsiasi per OBJECT

Si applica a funzioni di aggregazione CLR definite dall'utente.

Chiave asimmetrica

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

0

ASYMMETRIC KEY

ALTER in CERTIFICATE

Una qualsiasi in KEY

1

Nessuno

 

 

2

Nessuno

 

 

Assembly

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

0

ASSEMBLY

ALTER per ASSEMBLY

Qualsiasi per ASSEMBLY

1

Nessuno

 

 

2

Nessuno

 

 

Certificato

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

0

CERTIFICATE

ALTER in CERTIFICATE

Una qualsiasi in CERTIFICATE

1

Nessuno

 

 

2

Nessuno

 

 

Contratto (Service Broker)

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

0

CONTRACT

ALTER per CONTRACT

Qualsiasi per CONTRACT

1

Nessuno

 

 

2

Nessuno

 

 

Database

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

Commenti

0

Nessuno

ALTER per DATABASE

CONTROL per DATABASE

oppure

TAKE OWNERSHIP per DATABASE

oppure

VIEW DEFINITION per DATABASE

oppure

ALTER ANY DATABASE per SERVER

oppure

CREATE DATABASE per SERVER

La proprietà si applica al database stesso.

1

Nessuno

 

 

 

2

Nessuno

 

 

 

Esempio

Nell'esempio seguente una proprietà estesa viene aggiunta al database di esempio AdventureWorks .

USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty 
@name = N'MS_DescriptionExample', 
@value = N'AdventureWorks Sample OLTP Database';
GO

Valore predefinito

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

Commenti

0

SCHEMA o USER

 

 

 

1

DEFAULT

ALTER per SCHEMA

HAS_DBACCESS = 1

Disponibile solo per garantire la compatibilità con le versioni precedenti. Per ulteriori informazioni, vedere Funzionalità del Motore di database obsolete in SQL Server 2008.

2

Nessuno

 

 

 

Notifica degli eventi

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

Commenti

0

EVENT NOTIFICATION

ALTER ANY DATABASE EVENT NOTIFICATION ON DATABASE

Proprietario della notifica degli eventi

oppure

CONTROL, ALTER, TAKE OWNERSHIP o VIEW DEFINITION per il database

oppure

ALTER ANY DATABASE EVENT NOTIFICATION

Si applica alle notifiche degli eventi a livello di database interessate dal database.

Non è possibile aggiungere proprietà estese a notifiche degli eventi a livello del server.

1

Nessuno

 

 

 

2

Nessuno

 

 

 

Filegroup o nome di file

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

0

FILEGROUP

ALTER per DATABASE

HAS_DBACCESS = 1

1

LOGICAL FILE NAME

ALTER per DATABASE

HAS_DBACCESS = 1

2

Nessuno

 

 

Esempio

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

USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty 
@name = N'MS_DescriptionExample', 
@value = N'Primary filegroup for the AdventureWorks sample database.', 
@level0type = N'FILEGROUP', @level0name = [PRIMARY];
GO

Nell'esempio seguente una proprietà estesa viene aggiunta al nome di file logico AdventureWorks_Data nel filegroup PRIMARY.

USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty 
@name = N'MS_DescriptionExample', 
@value = N'Primary data file for the AdventureWorks sample database.', 
@level0type = N'FILEGROUP', @level0name = [PRIMARY],
@level1type = N'Logical File Name', @level1name = AdventureWorks_Data;
GO

Funzione

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

Commenti

0

SCHEMA o USER

 

 

È consigliabile utilizzare SCHEMA anziché USER. Vedere la sezione dedicata al confronto tra Schema e User di seguito in questo argomento.

1

FUNCTION

ALTER per OBJECT funzione

Qualsiasi per COLUMN

oppure

Qualsiasi per OBJECT

Si applica alle funzioni definite dall'utente riportate di seguito:

  • CLR scalari

  • CLR valutate a livello di tabella

  • Transact-SQL scalari

  • Transact-SQL inline valutate a livello di tabella

  • Transact-SQL valutate a livello di tabella

Se non viene specificato un tipo di livello 2, la proprietà si applica alla funzione stessa.

2

COLUMN

ALTER per OBJECT funzione

Qualsiasi per COLUMN

oppure

Qualsiasi per OBJECT

 

2

CONSTRAINT

ALTER per OBJECT funzione

Qualsiasi per COLUMN

oppure

Qualsiasi per OBJECT

 

2

PARAMETER

ALTER per OBJECT funzione

Qualsiasi per COLUMN

oppure

Qualsiasi per OBJECT

 

Esempio

Nell'esempio seguente una proprietà estesa viene aggiunta alla funzione definita dall'utente ufnGetStock.

USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty 
@name = N'MS_DescriptionExample', 
@value = N'Scalar function returning the quantity of inventory for a specified ProductID.', 
@level0type = N'SCHEMA', @level0name = [dbo],
@level1type = N'FUNCTION', @level1name = ufnGetStock;
GO

Nell'esempio seguente una proprietà estesa viene aggiunta al parametro @ProductID specificato nella funzione definita dall'utente ufnGetStock.

USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty 
@name = N'MS_DescriptionExample', 
@value = N'Input parameter. Enter a valid ProductID.', 
@level0type = N'SCHEMA', @level0name = [dbo],
@level1type = N'FUNCTION', @level1name = ufnGetStock,
@level2type = N'PARAMETER', @level2name ='@ProductID';
GO

Tipo di messaggio

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

0

MESSAGE TYPE

ALTER per MESSAGE TYPE

HAS_DBACCESS = 1

1

Nessuno

 

 

2

Nessuno

 

 

Funzione di partizione

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

0

PARTITION FUNCTION

ALTER ANY DATASPACE per DATABASE

HAS_DBACCESS = 1

1

Nessuno

 

 

2

Nessuno

 

 

Schema di partizione

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

0

PARTITION SCHEME

ALTER ANY DATASPACE per DATABASE

HAS_DBACCESS = 1

1

Nessuno

 

 

2

Nessuno

 

 

Guida di piano

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

0

PLAN GUIDE

ALTER ANY DATASPACE per DATABASE

VIEW DEFINITION, ALTER, TAKE OWNERSHIP o CONTROL in Database per SQL o guide TEMPLATE e VIEW DEFINITION, ALTER, TAKE OWNERSHIP o CONTROL nell'oggetto delle guide di OBJECT

1

Nessuno

 

 

2

Nessuno

 

 

Nel seguente esempio viene aggiunta una proprietà estesa viene aggiunta alla guida di piano TemplateGuide1.

USE AdventureWorks;
GO
EXECUTE sp_addextendedproperty @name=N'PlanGuideGroup', @value = N'MyTest', 
@level0type = N'Plan Guide', @level0name = 'TemplateGuide1';

Procedura

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

Commenti

0

SCHEMA o USER

 

 

È consigliabile utilizzare SCHEMA anziché USER. Vedere la sezione dedicata al confronto tra Schema e User di seguito in questo argomento.

1

PROCEDURE

ALTER per OBJECT procedura

NotaNota
Solo i membri del ruolo predefinito del server sysadmin possono aggiungere proprietà estese alle stored procedure estese.

Qualsiasi per OBJECT

Si applica alle stored procedure definite dall'utente riportate di seguito:

  • CLR

  • Transact-SQL

  • Filtro di replica

Se non viene specificato un tipo di livello 2, la proprietà si applica alla procedura stessa.

2

PARAMETER

ALTER per OBJECT procedura

Qualsiasi per OBJECT

 

Coda (Service Broker)

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

Commenti

0

SCHEMA o USER

 

 

È consigliabile utilizzare SCHEMA anziché USER. Vedere la sezione dedicata al confronto tra Schema e User di seguito in questo argomento.

1

QUEUE

ALTER per OBJECT coda

Qualsiasi per OBJECT

 

2

EVENT NOTIFICATION

ALTER per OBJECT coda

Proprietario della notifica degli eventi

oppure

CONTROL, ALTER, TAKE OWNERSHIP o VIEW DEFINITION per la coda

oppure

ALTER ANY DATABASE EVENT NOTIFICATION

È possibile che il proprietario della notifica degli eventi sia diverso da quello della coda.

Associazione al servizio remoto (Service Broker)

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

0

REMOTE SERVICE BINDING

ALTER per REMOTE SERVICE BINDING

Qualsiasi su REMOTE SERVICE BINDING

1

Nessuno

 

 

2

Nessuno

 

 

Route (Service Broker)

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

0

ROUTE

ALTER per REMOTE SERVICE BINDING

Qualsiasi per ROUTE

1

Nessuno

 

 

2

Nessuno

 

 

Regola

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

Commenti

0

SCHEMA o USER

 

 

 

1

RULE

ALTER per SCHEMA

HAS_DBACCESS = 1

Disponibile per compatibilità con le versioni precedenti. Per ulteriori informazioni, vedere Funzionalità del Motore di database obsolete in SQL Server 2008.

2

Nessuno

 

 

 

Schema o utente

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

Commenti

0

SCHEMA o USER

ALTER per SCHEMA o ALTER per USER

Qualsiasi per APPLICATION ROLE

oppure

Qualsiasi per ROLE

oppure

Qualsiasi per USER

Se non viene specificato un tipo di livello 1, la proprietà si applica allo schema o all'utente stesso.

I possibili valori di USER sono i seguenti:

  • Ruolo dell'applicazione

  • Ruolo del database

  • Utente SQL Server

  • Gruppo di Windows

  • Utente di Windows

Utilizzare USER solo per l'aggiunta di una proprietà estesa a un utente.

Nota importanteImportante
L'opzione USER come tipo di livello 0 definito nei tipi di oggetti di livello 1 o 2 verrà rimossa in una versione futura di SQL Server. Evitare pertanto di utilizzarla in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui questa funzione è stata implementata. In alternativa, utilizzare SCHEMA come tipo di livello 0.

1

Variabile

 

 

 

2

Variabile

 

 

 

Servizio

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

0

SERVICE

ALTER per SERVICE

ALTER per SERVICE

oppure

CONTROL per SERVICE

oppure

TAKE OWNERSHIP per SERVICE

oppure

VIEW DEFINITION per SERVICE

1

Nessuno

 

 

2

Nessuno

 

 

Chiave simmetrica

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

0

SYMMETRIC KEY

ALTER in CERTIFICATE

Una qualsiasi in KEY

1

Nessuno

 

 

2

Nessuno

 

 

Sinonimo

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

Commenti

0

SCHEMA o USER

 

 

È consigliabile utilizzare SCHEMA anziché USER. Vedere la sezione dedicata al confronto tra Schema e User di seguito in questo argomento.

1

SYNONYM

CONTROL per SYNONYM

Qualsiasi per OBJECT

 

2

Nessuno

 

 

 

Tabella

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

Commenti

0

SCHEMA o USER

 

 

È consigliabile utilizzare SCHEMA anziché USER. Vedere la sezione dedicata al confronto tra Schema e User di seguito in questo argomento.

1

TABLE

ALTER per OBJECT tabella

Qualsiasi per COLUMN

oppure

Qualsiasi per OBJECT

Si applica a tabelle definite dall'utente. Se non viene specificato un tipo di livello 2, la proprietà si applica alla tabella stessa.

2

COLUMN

ALTER per OBJECT tabella

Qualsiasi per COLUMN

oppure

Qualsiasi per OBJECT

 

2

CONSTRAINT

ALTER per OBJECT tabella

ALTER per OBJECT

oppure

CONTROL per OBJECT

oppure

TAKE OWNERSHIP per OBJECT

oppure

VIEW DEFINITION per OBJECT

Si applica ai vincoli seguenti:

  • CHECK

  • DEFAULT

  • FOREIGN KEY

  • PRIMARY KEY

  • UNIQUE

2

INDEX

ALTER per OBJECT tabella

Qualsiasi per COLUMN

oppure

Qualsiasi per OBJECT

Si applica agli indici relazionali e XML.

2

TRIGGER

ALTER per OBJECT tabella

ALTER per OBJECT

oppure

CONTROL per OBJECT

oppure

TAKE OWNERSHIP per OBJECT

oppure

VIEW DEFINITION per OBJECT

Si applica ai trigger DML seguenti:

  • CLR

  • Transact-SQL

Non si applica ai trigger DDL.

Esempio

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

USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty 
@name = N'MS_Description', 
@value = N'Street address information for customers, employees, and vendors.', 
@level0type = N'SCHEMA', @level0name = Person, 
@level1type = N'TABLE',  @level1name = Address;
GO

Nell'esempio seguente una proprietà estesa viene aggiunta all'indice IX_Address_StateProviceID della tabella Address nello schema Person.

USE AdventureWorks;
GO
EXEC sys.sp_addextendedproperty 
@name = N'MS_DescriptionExample', 
@value = N'Nonclustered index on StateProvinceID.', 
@level0type = N'SCHEMA', @level0name = Person, 
@level1type = N'TABLE',  @level1name = Address,
@level2type = N'INDEX',  @level2name = IX_Address_StateProvinceID;
GO

Trigger

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

Commenti

0

TRIGGER

ALTER ANY TRIGGER per DATABASE

ALTER ANY TRIGGER per DATABASE

Si applica solo ai trigger DDL.

1

Nessuno

 

 

 

2

Nessuno

 

 

 

Tipo

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

Commenti

0

TYPE

CONTROL per TYPE

Qualsiasi per TYPE

Si applica a tipi definiti dall'utente creati nelle versioni precedenti di SQL Server.

Disponibile per compatibilità con le versioni precedenti. Per ulteriori informazioni, vedere Funzionalità del Motore di database obsolete in SQL Server 2008.

1

Nessuno

 

 

 

2

Nessuno

 

 

 

Tipo

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

Commenti

0

SCHEMA o USER

 

 

È consigliabile utilizzare SCHEMA anziché USER. Vedere la sezione dedicata al confronto tra Schema e User di seguito in questo argomento.

1

TYPE

CONTROL per TYPE

Qualsiasi per TYPE

 

2

Nessuno

 

 

 

Vista

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

Commenti

0

SCHEMA o USER

 

 

È consigliabile utilizzare SCHEMA anziché USER. Vedere la sezione dedicata al confronto tra Schema e User di seguito in questo argomento.

1

VIEW

ALTER per OBJECT vista

Qualsiasi per COLUMN

oppure

Qualsiasi per OBJECT

Si applica a viste definite dall'utente. Se non viene specificato un tipo di livello 2, la proprietà si applica alla vista stessa.

2

COLUMN

ALTER per OBJECT vista

Qualsiasi per COLUMN

oppure

Qualsiasi per OBJECT

 

2

INDEX

ALTER per OBJECT vista

Qualsiasi per COLUMN

oppure

Qualsiasi per OBJECT

Si applica agli indici relazionali e XML.

2

TRIGGER

ALTER per OBJECT vista

ALTER ANY TRIGGER per DATABASE

oppure

ALTER per OBJECT

oppure

CONTROL per OBJECT

oppure

TAKE OWNERSHIP per OBJECT

oppure

VIEW DEFINITION per OBJECT

Si applica ai trigger DML seguenti:

  • CLR

  • Transact-SQL

Non si applica ai trigger DDL.

Insieme di schemi XML

Livello

Tipo di livello

Autorizzazioni necessarie per aggiungere o eliminare una proprietà estesa

Autorizzazioni necessarie per visualizzare una proprietà estesa

Commenti

0

SCHEMA o USER

 

 

È consigliabile utilizzare SCHEMA anziché USER. Vedere la sezione dedicata al confronto tra Schema e User di seguito in questo argomento.

1

XML SCHEMA COLLECTION

ALTER per XML SCHEMA COLLECTION

ALTER per XML SCHEMA COLLECTION

oppure

CONTROL per XML SCHEMA COLLECTION

oppure

REFERENCES per XML SCHEMA COLLECTION

oppure

TAKE OWNERSHIP per XML SCHEMA COLLECTION

oppure

VIEW DEFINITION per XML SCHEMA COLLECTION

Non è possibile aggiungere proprietà estese a uno spazio dei nomi XML.

2

Nessuno

 

 

 

Oggetti che non supportano le proprietà estese

Gli oggetti seguenti non supportano le proprietà estese:

  • Oggetti dell'ambito del database non elencati nelle tabelle precedenti, ad esempio gli oggetti full-text.

  • Oggetti non compresi nell'ambito del database, ad esempio gli endpoint HTTP.

  • Oggetti senza nome, ad esempio parametri della funzione di partizione.

  • Certificati, chiavi simmetriche, chiavi asimmetriche e credenziali.

  • Oggetti definiti dal sistema, ad esempio tabelle di sistema, viste del catalogo e stored procedure di sistema.

Confronto tra Schema e User

Nelle versioni precedenti di SQL Server gli utenti sono proprietari degli oggetti di database quali tabelle, viste e trigger. Era quindi consentito sia aggiungere una proprietà estesa a uno di tali oggetti che specificare un nome utente come tipo di livello 0. Gli oggetti di database sono contenuti in schemi che non dipendono dai rispettivi proprietari.

Se si specifica USER come tipo di livello 0, l'applicazione di una proprietà estesa a un oggetto di database può determinare un'ambiguità nella risoluzione dei nomi. Si supponga, ad esempio che l'utente Mary sia proprietaria di due schemi, Mary e MySchema, e che entrambi gli schemi includano una tabella denominata MyTable. Se l'utente Mary aggiunge una proprietà estesa alla tabella MyTable e specifica @level0type = N'USER', @level0name = Mary, non sarà possibile identificare con certezza la tabella a cui viene applicata la proprietà estesa. Per mantenere la compatibilità con le versioni precedenti, SQL Server applicherà la proprietà alla tabella inclusa nello schema denominato Mary. Per ulteriori informazioni su utenti e schemi, vedere Separazione tra schema e utente.

Confronto tra maschere di input e vincoli CHECK

Per specificare lo schema dei dati previsti per colonne di tabelle o viste, è possibile utilizzare sia vincoli CHECK che proprietà estese che forniscono una maschera di input. La maggior parte dei siti sceglierà la prima o la seconda soluzione finché non si verifica una delle situazioni seguenti:

  • I vincoli CHECK sono stati utilizzati come misura ad interim fino a quando non è stato possibile modificare tutti i programmi che utilizzano questa tabella in modo che utilizzino le proprietà della maschera di input.

  • Il sito supporta anche gli utenti che possono aggiornare i dati tramite strumenti ad hoc che non prevedono la lettura delle proprietà estese.

La maschera di input presenta un indubbio vantaggio rispetto al vincolo CHECK in quanto consente di applicare la logica nelle applicazioni, che potranno generare errori di carattere maggiormente informativo se vengono specificati dati non formattati correttamente. La maschera di input richiede tuttavia una chiamata distinta a fn_listextendedproperty o sys.extended_properties per ottenere la proprietà e l'aggiunta della logica per l'applicazione della maschera in tutti i programmi.

Replica delle proprietà estese

Le proprietà estese vengono replicate solo durante la 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 ulteriori informazioni sulla replica degli oggetti di database, vedere Pubblicazione di dati e oggetti di database.

Utilizzo delle proprietà estese nelle applicazioni

Le proprietà estese costituiscono unicamente una posizione denominata per l'archiviazione dei dati. È quindi necessario codificare tutte le applicazioni in modo che eseguano la query sulla proprietà e scegliere l'operazione appropriata. L'aggiunta di una proprietà di didascalia a una colonna non implica, ad esempio, la creazione di una didascalia visualizzabile in un'applicazione. È quindi necessario codificare ciascuna applicazione in modo da leggere e visualizzare correttamente la didascalia.

Per aggiungere una proprietà estesa

Per aggiornare una proprietà estesa

Per eliminare una proprietà estesa

Per visualizzare una proprietà estesa