Condividi tramite


Attributi di protezione host e programmazione dell'integrazione con CLR

Common Language Runtime (CLR) fornisce un meccanismo di annotazione delle API gestite che fanno parte di .NET Framework con determinati attributi che possono interessare un host di CLR, ad esempio SQL Server, a partire da SQL Server 2005. Di seguito sono riportati alcuni esempi di attributi di protezione host:

  • SharedState, che indica se l'API espone la possibilità di creare o gestire uno stato condiviso, ad esempio campi classe statici.

  • Synchronization, che indica se l'API espone la possibilità di eseguire la sincronizzazione tra thread.

  • ExternalProcessMgmt, che indica se l'API espone una modalità per controllare il processo host.

Sulla base di tali attributi, SQL Server specifica un elenco di attributi di protezione host non consentiti nell'ambiente host attraverso la protezione dall'accesso di codice. I requisiti della protezione dall'accesso di codice sono specificati da uno dei tre set di autorizzazioni di SQL Server: SAFE, EXTERNAL_ACCESS o UNSAFE. Uno dei tre livelli di protezione viene specificato quando l'assembly viene registrato nel server, mediante l'istruzione CREATE ASSEMBLY. Durante l'esecuzione di codice nell'ambito dei set di autorizzazioni SAFE o EXTERNAL_ACCESS, è necessario evitare alcuni tipi o membri a cui è applicato l'attributo System.Security.Permissions.HostProtectionAttribute. Per ulteriori informazioni, vedere Creazione di un assembly e Restrizioni relative al modello di programmazione dell'integrazione con CLR.

HostProtectionAttribute rappresenta più una modalità per migliorare l'affidabilità che un'autorizzazione di protezione, in quanto identifica i costrutti di codice specifici, tipi o metodi, che possono essere disattivati dall'host. L'utilizzo di HostProtectionAttribute impone un modello di programmazione che consente di migliorare la stabilità dell'host.

Attributi di protezione host

Gli attributi di protezione host identificano i tipi o i membri non inclusi nel modello di programmazione host e rappresentano i livelli di pericolo per l'affidabilità, riportati di seguito in ordine crescente di gravità:

  • Sono altrimenti innocui.

  • Possono determinare la destabilizzazione del codice utente gestito dal server.

  • Possono determinare la destabilizzazione del processo del server stesso.

SQL Server non consente l'utilizzo di un tipo o un membro che include un HostProtectionAttribute che specifica un'enumerazione System.Security.Permissions.HostProtectionResource con un valore di ExternalProcessMgmt, ExternalThreading, MayLeakOnAbort, SecurityInfrastructure, SelfAffectingProcessMgmnt, SelfAffectingThreading, SharedState, Synchronization o UI. In questo modo si impedisce agli assembly di chiamare membri che attivano la condivisione dello stato, eseguono la sincronizzazione, possono determinare una perdita di risorse al termine del processo o compromettere l'integrità del processo di SQL Server.

Tipi e membri non consentiti

Negli argomenti riportati di seguito vengono identificati tipi e membri i cui valori di HostProtectionResource non sono consentiti da SQL Server.

[!NOTA]

Gli elenchi presenti in questi argomenti sono stati generati dagli assembly supportati della versione 2.0 SP1 di .NET Framework. Per ulteriori informazioni, vedere Librerie .NET Framework supportate.

Contenuto della sezione