Freigeben über


Hostschutzattribute und Programmierung der CLR-Integration

Gilt für: SQL Server

Die Common Language Runtime (CLR) stellt einen Mechanismus zum Kommentieren verwalteter Anwendungsprogrammierschnittstellen (APPLICATION Programming Interfaces, APIs) bereit, die Teil von .NET Framework mit bestimmten Attributen sind, die für einen Host der CLR von Interesse sein können, z. B. SQL Server, beginnend mit SQL Server 2005 (9.x). Beispiele für solche Hostschutzattribute sind:

  • SharedState, der angibt, ob die API die Möglichkeit zum Erstellen oder Verwalten des freigegebenen Zustands (z. B. statische Klassenfelder) verfügbar macht.

  • Die Synchronisierung gibt an, ob die API die Möglichkeit zum Ausführen der Synchronisierung zwischen Threads verfügbar macht.

  • ExternalProcessMgmt, das angibt, ob die API eine Möglichkeit zum Steuern des Hostprozesses verfügbar macht.

Aufgrund dieser Attribute gibt SQL Server eine Liste von HPAs an, die in der gehosteten Umgebung durch Codezugriffssicherheit (CAS) unzulässig sind. Die CAS-Anforderungen werden durch einen von drei SQL Server-Berechtigungssätzen angegeben: SAFE, EXTERNAL_ACCESS oder UNSAFE. Eine dieser drei Sicherheitsstufen wird angegeben, wenn die Assembly auf dem Server mithilfe der CREATE ASSEMBLY-Anweisung registriert ist. Code, der innerhalb der SAFE- oder EXTERNAL_ACCESS-Berechtigungssätze ausgeführt wird, muss bestimmte Typen oder Member vermeiden, die das Attribut System.Security.Permissions.HostProtectionAttribute angewendet haben. Weitere Informationen finden Sie unter Creating an Assembly and CLR Integration Programming Model Restrictions.

Das HostProtectionAttribute ist keine Sicherheitsberechtigung, um die Zuverlässigkeit zu verbessern, da sie bestimmte Codekonstrukte, entweder Typen oder Methoden, identifiziert, die der Host möglicherweise nicht zulassen kann. Die Verwendung von HostProtectionAttribute erzwingt ein Programmiermodell, das die Stabilität des Hosts schützt.

Hostschutzattribute

Hostschutzattribute geben die Typen oder Elemente an, die sich nicht für das Hostprogrammiermodell eignen und die folgenden Zuverlässigkeitsrisiken darstellen (ansteigende Gefährdung):

  • Sie sind andernfalls ohne Auswirkung.

  • Sie können zur Destabilisierung von serververwaltetem Benutzercode führen.

  • Sie können zur Destabilisierung des Serverprozesses führen.

SQL Server verbietet die Verwendung eines Typs oder Elements, der über ein HostProtectionAttribute verfügt, das eine System.Security.Permissions.HostProtectionResource-Aufzählung mit dem Wert "ExternalProcessMgmt", "ExternalThreading", "MayLeakOnAbort", "SecurityInfrastructure", "SelfAffectingProcessMgmnt", "SelfAffectingThreading", "SharedState", "Synchronization" oder "UI" angibt. Dies verhindert, dass Assemblys Member aufrufen, die die Freigabe des Zustands aktivieren, Synchronisierungen durchführen, möglicherweise ein Ressourcenleck bei Beendigung verursachen, oder Auswirkungen auf die Integrität des SQL Server-Prozesses haben.

Unzulässige Typen und Member

In den folgenden Themen werden Typen und Member identifiziert, deren HostProtectionResource-Werte von SQL Server nicht zulässig sind.

Hinweis

Die Listen in diesen Themen wurden von den unterstützten Assemblys generiert. Weitere Informationen finden Sie unter Unterstützte .NET Framework-Bibliotheken.

In diesem Abschnitt

Unzulässige Typen und Elemente in „Microsoft.VisualBasic.dll“
Listet die Typen und Elemente in Microsoft.VisualBasic.dll auf, deren Hostschutzattributwerte nicht zugelassen werden.

Unzulässige Typen und Elemente in „mscorlib.dll“
Listet die Typen und Elemente in mscorlib.dll auf, deren Hostschutzattributwerte nicht zugelassen werden.

Unzulässige Typen und Elemente in „System.dll“
Listet die Typen und Elemente in System.dll auf, deren Hostschutzattributwerte nicht zugelassen werden.

Unzulässige Typen und Elemente in „System.Data.dll“
Listet die Typen und Elemente in System.Data.dll auf, deren Hostschutzattributwerte nicht zugelassen werden.

Unzulässige Typen und Elemente in „System.Core.dll“
Listet die Typen und Elemente in System.Core.dll auf, deren Hostschutzattributwerte nicht zugelassen werden.

Weitere Informationen

CLR-Integration und Codezugriffssicherheit
CLR-Integration: Beschränkungen des Programmiermodells
Erstellen von Assemblys