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