Udostępnij za pośrednictwem


Zespoły projektowanie

W tym temacie opisano następujące czynniki należy rozważyć podczas projektowania zestawów:

  • Zespoły opakowań

  • Zarządzanie zabezpieczeniami wirtualny plik dziennika

  • Ograniczenia dotyczące zestawów

Zespoły opakowań

wirtualny plik dziennika może zawierać funkcje dla więcej niż jednego SQL Server rutynowych lub wpisz jego klasy i metody.Większość z czas, warto pakiet funkcji wywoływanych funkcji pokrewnych w ramach tego samego wirtualny plik dziennika, szczególnie jeśli procedury te klasy których metody wywołania siebie.Na przykład klasy, które wykonywać zadania zarządzania zapis danych, wspólne language runtime (CLR) wyzwalaczy i CLR procedury przechowywane mogą być pakowane w taki sam wirtualny plik dziennika.Jest tak, ponieważ metody te klasy są bardziej prawdopodobne jest wywoływanie wzajemnie niż te mniej powiązanych zadań.

Gdy kod opakowań do wirtualny plik dziennika, należy rozważyć następujące:

  • Typy zdefiniowane przez użytkownika CLR i indeksy, które zależą od funkcji zdefiniowanej przez użytkownika CLR może spowodować trwałe dane do bazy danych, która zależy od wirtualny plik dziennika.Modyfikowanie kodu wirtualny plik dziennika jest często bardziej złożone, gdy jest zależna od wirtualny plik dziennika w bazie danych.Dlatego ogólnie lepiej jest oddzielne kod, na którym opierają się zależności danych (na przykład typy zdefiniowane przez użytkownika i indeksów za pomocą funkcji zdefiniowanej przez użytkownika) z kodu, który nie ma zależności takich danych.Aby uzyskać więcej informacji, zobacz Implementowanie zespoły i Zmiana zestawu (Transact-SQL).

  • Jeśli fragment kod zarządzany wymaga wyższych uprawnień, lepiej podzielić ten kod na oddzielne jest wirtualny plik dziennika z kodu, który nie wymaga wyższych uprawnień.

Zarządzanie zabezpieczeniami zestawu

Można kontrolować, ile wirtualny plik dziennika dostęp do zasobów chronionych przez.NET zabezpieczenia dostępu do kodu podczas uruchamiania kod zarządzany.Można to zrobić, określając jedną z trzech zestawów uprawnień podczas tworzenia lub modyfikowania wirtualny plik dziennika: BEZPIECZNE, EXTERNAL_ACCESS, lub NIEBEZPIECZNY.

BEZPIECZNE

BEZPIECZNE jest domyślny zestaw uprawnień i jest najbardziej restrykcyjne.Kod uruchamiany przez wirtualny plik dziennika z bezpiecznego uprawnień nie można uzyskać dostępu zewnętrznego systemu zasobów, takich jak pliki, sieci, zmienne środowiskowe lub rejestru.BEZPIECZNE kodu można uzyskać dostęp do danych z lokalnym SQL Server bazy danych lub wykonywania obliczeń i logika biznesowa, które nie obejmują dostęp do zasobów poza lokalnych baz danych.

Większość zestawów wykonywać zadania zarządzania obliczeń i danych bez dostępu do zasobów poza SQL Server.Dlatego zaleca się bezpieczne jako wirtualny plik dziennika uprawnień wirtualny plik dziennika.

EXTERNAL_ACCESS

EXTERNAL_ACCESS umożliwia zestawów dostępu do niektórych zasobów systemowych zewnętrznych, takich jak pliki, sieci, usług sieci Web, zmiennych środowiskowych i rejestru.Tylko SQL Server logowania z uprawnieniami dostępu zewnętrznego można tworzyć zestawy EXTERNAL_ACCESS.

BEZPIECZNE i zestawy EXTERNAL_ACCESS może zawierać tylko kod sprawdzalny typ palety.Oznacza to, że te zestawy dostęp tylko klasy przez punkty wejścia wyraźnie określone, które są ważne dla definicji typu.Dlatego arbitralnie nie mają dostępu nie są własnością kod buforów pamięci.Ponadto nie można wykonać operacji, które może mieć negatywny wpływ na zdatność SQL Server procesu.

NIEBEZPIECZNE

NIEBEZPIECZNY daje zestawów nieograniczony dostęp do zasobów, zarówno wewnątrz, jak i poza SQL Server.Kod, który działa z w NIEBEZPIECZNY wirtualny plik dziennika można wywoływać kod niezarządzany.

Ponadto umożliwia określanie NIEBEZPIECZNY kod w wirtualny plik dziennika do wykonywania operacji, które są uważane za niebezpieczne typu przez weryfikatora CLR.Operacje te może potencjalnie uzyskać dostęp buforów pamięci w SQL Server przestrzeni procesu w sposób niekontrolowany.NIEBEZPIECZNE zestawy można także potencjalnie subvert system zabezpieczeń albo SQL Server lub wspólne środowiska wykonawczego języka.NIEBEZPIECZNE uprawnienia udzielana tylko wysoce zaufanych zestawów przez doświadczonych programistów i administratorów.Tylko członkowie sysadmin stała rola serwera można utworzyć zespoły niebezpieczne.

Ograniczenia dotyczące zestawów

SQL Server umieszcza pewne ograniczenia na kod zarządzany w zestawach, aby upewnić się, że może działać w sposób niezawodny i skalowalny.Oznacza to, że pewne operacje, które mogą wpłynąć na niezawodności serwera nie są dozwolone w zestawach bezpieczne i EXTERNAL_ACCESS.

Niedozwolone atrybuty niestandardowe

Zestawy nie adnotacje z następujących atrybutów niestandardowych:

System.ContextStaticAttribute
System.MTAThreadAttribute
System.Runtime.CompilerServices.MethodImplAttribute
System.Runtime.CompilerServices.CompilationRelaxationsAttribute
System.Runtime.Remoting.Contexts.ContextAttribute
System.Runtime.Remoting.Contexts.SynchronizationAttribute
System.Runtime.InteropServices.DllImportAttribute 
System.Security.Permissions.CodeAccessSecurityAttribute
System.STAThreadAttribute
System.ThreadStaticAttribute

Ponadto bezpieczny i EXTERNAL_ACCESS zespołów nie adnotacje z następujących atrybutów niestandardowych:

System.Security.SuppressUnmanagedCodeSecurityAttribute
System.Security.UnverifiableCodeAttribute

Niedozwolone.NET Framework API

Any Microsoft .NET Framework API that is annotated with one of the disallowed HostProtectionAttributes cannot be called from SAFE and EXTERNAL_ACCESS assemblies.

eSelfAffectingProcessMgmt
eSelfAffectingThreading
eSynchronization
eSharedState 
eExternalProcessMgmt
eExternalThreading
eSecurityInfrastructure
eMayLeakOnAbort
eUI

Obsługiwane.Zespoły NET Framework

Każdy zespół wskazanego przez użytkownika wirtualny plik dziennika niestandardowych muszą być ładowane do SQL Server za pomocą Tworzenie wirtualny plik dziennika.Następujące .NET Framework zestawy są już załadowany do SQL Server i dlatego mogą odwoływać się niestandardowe zestawy bez konieczności używania Tworzenie zestawu.

custommarshallers.dll
Microsoft.visualbasic.dll
Microsoft.visualc.dll
mscorlib.dll
system.data.dll
System.Data.SqlXml.dll
system.dll
system.security.dll
system.web.services.dll
system.xml.dll
System.Transactions
System.Data.OracleClient
System.Configuration

Zobacz także

Koncepcje

Inne zasoby