Udostępnij za pośrednictwem


Tworzenie zestawu

Zarządzane obiekty takie jak procedury przechowywane lub wyzwalacze, są kompilowane i następnie wdrożony na jednostki nazywane wirtualny plik dziennika.Managed DLL assemblies must be registered in Microsoft SQL Server before the functionality the assembly provides can be used.Aby zarejestrować wirtualny plik dziennika w SQL Server bazy danych, należy użyć instrukcja tworzenia wirtualny plik dziennika.W tym temacie omówiono sposoby zarejestrować wirtualny plik dziennika w bazie danych za pomocą instrukcja tworzenia wirtualny plik dziennika oraz określić ustawienia zabezpieczeń dla wirtualny plik dziennika.

Tworzenie instrukcji montażu

Tworzenie wirtualny plik dziennika instrukcja jest używany do tworzenia wirtualny plik dziennika w bazie danych.Oto przykład:

CREATE ASSEMBLY SQLCLRTest
FROM 'C:\MyDBApp\SQLCLRTest.dll'

Klauzula FROM Określa nazwę ścieżki do utworzenia wirtualny plik dziennika.Ta ścieżka może być ścieżką uniwersalnej konwencji nazewnictwa (UNC) lub ścieżki fizycznej pliku lokalnego komputera.

SQL Server nie umożliwia rejestrowanie różnych wersjach wirtualny plik dziennika o takiej samej nazwie, kultura i klucz publiczny.

Istnieje możliwość tworzenia zespołów, które odwołuje się do innych zestawów.Podczas tworzenia wirtualny plik dziennika w SQL Server, SQL Server tworzy również zespoły odwołuje się do zgromadzenia poziom katalogu głównego, jeśli nie jest jeszcze utworzone zestawy odwołanie do bazy danych

Bazy danych użytkowników lub role użytkowników są podane uprawnienia do tworzenia i tym samym własne, zespoły w bazie danych.Aby utworzyć zespoły, bazy danych użytkownika lub rolę powinny mieć uprawnienie Tworzenie zestawu.

wirtualny plik dziennika można tylko poprawne w odwoływanie się do innych zespołów, jeśli:

  • O nazwie lub odwołanie do wirtualny plik dziennika jest własnością tego samego użytkownika lub roli.

  • wirtualny plik dziennika o nazwie lub odwołanie do utworzonego w tej samej bazy danych.

Określanie zabezpieczeń podczas tworzenia zestawów

Podczas tworzenia wirtualny plik dziennika do SQL Server bazy danych, można określić jedną z trzech różnych poziomów zabezpieczeń, w którym można uruchomić kod: SAFE, EXTERNAL_ACCESS, or UNSAFE.Gdy CREATE ASSEMBLY instrukcja jest uruchamiany, niektóre kontrole są przeprowadzane na zgromadzenie kodu, co może spowodować wirtualny plik dziennika nie rejestrują się do serwera.Aby uzyskać więcej informacji zobacz próbki personifikacji w witrynie CodePlex; zobacz SQL ServerPrzykładowe aparat bazy danych więcej informacji.

SAFE jest to zestaw uprawnień domyślnych i works dla większości scenariuszy.Aby określić poziom zabezpieczeń, należy zmodyfikować Składnia instrukcja tworzenia zestawu w następujący sposób:

CREATE ASSEMBLY SQLCLRTest
FROM 'C:\MyDBApp\SQLCLRTest.dll'
WITH PERMISSION_SET = SAFE

Jest również możliwe utworzenie wirtualny plik dziennika z SAFE uprawnień zestaw przez pominięcie trzeci wiersz kodu powyżej:

CREATE ASSEMBLY SQLCLRTest
FROM 'C:\MyDBApp\SQLCLRTest.dll'

Podczas wykonywania kodu w wirtualny plik dziennikaie pod SAFE uprawnień wirtualny plik dziennika, można to zrobić tylko obliczeń i dostęp do danych na serwerze za pośrednictwem dostawca zarządzanych w trakcie.

Tworzenie EXTERNAL_ACCESS i zespoły niebezpieczne

EXTERNAL_ACCESS adresy scenariusze, w których kod musi uzyskać dostęp do zasobów spoza serwera, takich jak pliki, sieci, rejestru i zmienne środowiskowe.Ilekroć serwer uzyskuje dostęp do zasób zewnętrznych, personifikuje w kontekście zabezpieczeń użytkownika wywoływanie kod zarządzany.

UNSAFEkod uprawnień jest dla tych sytuacji, w których nie jest bezpieczne sprawdzalny wirtualny plik dziennika lub wymaga dodatkowych dostępu do ograniczonych zasobów, takich jak Microsoft API Win32.

Aby utworzyć EXTERNAL_ACCESS lub UNSAFE wirtualny plik dziennika w SQL Server, być spełniony jeden z następujących warunków:

  1. wirtualny plik dziennika jest silna nazwa podpisane lub Authenticode podpisany przy użyciu certyfikat.Ta silna nazwa (lub certyfikat), jest tworzony wewnątrz SQL Server asymetrycznej klucz (lub certyfikat), i posiada odpowiednie logowania z EXTERNAL ACCESS ASSEMBLY uprawnienia (zestawów zewnętrzny dostęp) lub UNSAFE ASSEMBLY uprawnienia (zestawów niebezpieczne).

  2. Właściciel bazy danych (DBO) ma EXTERNAL ACCESS ASSEMBLY (dla EXTERNAL ACCESS zespołów) lub UNSAFE ASSEMBLY (dla UNSAFE zespołów) ma uprawnienia i bazy danych WIARYGODNY właściwości bazy danych zestaw do ON.

Dwóch wymienionych powyżej warunków również są sprawdzane przy obciążeniu wirtualny plik dziennika czas (która obejmuje wykonanie).Co najmniej jeden z warunków muszą być spełnione w celu ładowania wirtualny plik dziennika.

Zalecane jest WIARYGODNY właściwości bazy danych bazy danych nie zestaw ON tylko do uruchamiania wspólnej runtime (CLR) kodu języka procesu serwera.Zalecany utworzenia klucz asymetrycznego z pliku wirtualny plik dziennika w baza danych master.Logowania mapowanego do tego klucz asymetrycznego, mogą zostać utworzony i muszą być udzielone logowania EXTERNAL ACCESS ASSEMBLY lub UNSAFE ASSEMBLY uprawnienia.

Następujące Transact-SQL instrukcji wykonywania czynności, które są wymagane do utworzenia klucz asymetrycznego, mapowania identyfikatora logowania do tego klucz, a następnie przydziel EXTERNAL_ACCESS uprawnień do logowania.Należy uruchomić następujące Transact-SQL sprawozdania przed uruchomieniem Tworzenie zestawu instrukcja.

USE master 
GO  
 
CREATE ASYMMETRIC KEY SQLCLRTestKey FROM EXECUTABLE FILE = 'C:\MyDBApp\SQLCLRTest.dll'   
CREATE LOGIN SQLCLRTestLogin FROM ASYMMETRIC KEY SQLCLRTestKey   
GRANT EXTERNAL ACCESS ASSEMBLY TO SQLCLRTestLogin 
GO 

Ostrzeżenie

Należy utworzyć nowe logowanie do skojarzenia z klucz asymetrycznego.Tego identyfikatora logowania jest używany tylko do przyznawania uprawnień; nie ma być skojarzone z użytkownikiem lub używane w aplikacji.

Aby utworzyć EXTERNAL ACCESS wirtualny plik dziennika, twórca musi mieć EXTERNAL ACCESS uprawnienia.Jest to określone podczas tworzenia wirtualny plik dziennika:

CREATE ASSEMBLY SQLCLRTest
FROM 'C:\MyDBApp\SQLCLRTest.dll'
WITH PERMISSION_SET = EXTERNAL_ACCESS

Następujące Transact-SQL instrukcji wykonywania czynności, które są wymagane do utworzenia klucz asymetrycznego, mapowania identyfikatora logowania do tego klucz, a następnie przydziel UNSAFE uprawnień do logowania.Należy uruchomić następujące Transact-SQL sprawozdania przed uruchomieniem Tworzenie zestawu instrukcja.

USE master 
GO  
 
CREATE ASYMMETRIC KEY SQLCLRTestKey FROM EXECUTABLE FILE = 'C:\MyDBApp\SQLCLRTest.dll'   
CREATE LOGIN SQLCLRTestLogin FROM ASYMMETRIC KEY SQLCLRTestKey   
GRANT UNSAFE ASSEMBLY TO SQLCLRTestLogin 
GO

Aby określić, że zespół ładuje z UNSAFE określić uprawnienie, UNSAFE uprawnień zestaw podczas ładowania wirtualny plik dziennika do serwera:

CREATE ASSEMBLY SQLCLRTest
FROM 'C:\MyDBApp\SQLCLRTest.dll'
WITH PERMISSION_SET = UNSAFE

Aby uzyskać więcej informacji o uprawnieniach dla każdego ustawienia, zobacz CLR integracji zabezpieczeń.