Udostępnij za pośrednictwem


CREATE MONTAŻOWYCH (języka Transact-SQL)

Tworzy moduł zarządzaną aplikację zawierającą jako obiekt w wystąpieniu klasy metadane i kod zarządzany SQL Server. Odwołując się do tego modułu, funkcji środowiska wykonawczego (CLR) języka wspólnego, procedur przechowywanych, wyzwalaczy i zagregowanych przez użytkownika typów zdefiniowanych przez użytkownika mogą być tworzone w bazie danych.

Topic link iconKonwencje składni języka Transact-SQL

CREATE ASSEMBLY assembly_name
[ AUTHORIZATION owner_name ]
FROM { <client_assembly_specifier> | <assembly_bits> [ ,...n ] }
[ WITH PERMISSION_SET = { SAFE | EXTERNAL_ACCESS | UNSAFE } ]
[ ; ]

<client_assembly_specifier> :: =
        '[\\computer_name\]share_name\[path\]manifest_file_name'
  | '[local_path\]manifest_file_name'

<assembly_bits> :: =
{ varbinary_literal | varbinary_expression }

Argumenty

  • assembly_name
    To nazwa wirtualny plik dziennika.Nazwa musi być unikatowa w bazie danych i prawidłowy Identyfikator.

  • autoryzacja owner_name
    Specifies the name of a user or role as owner of the assembly.owner_namemust either be the name of a role of which the current user is a member, or the current user must have IMPERSONATE permission on owner_name.Jeśli nie zostanie określona, własność znajduje się do bieżącego użytkownika.

  • <client_assembly_specifier>
    Specifies the local path or network location where the assembly that is being uploaded is located, and also the manifest file name that corresponds to the assembly.<client_assembly_specifier> can be expressed as a fixed string or an expression evaluating to a fixed string, with variables.CREATE ASSEMBLY does not support loading multimodule assemblies.SQL Server also looks for any dependent assemblies of this assembly in the same location and also uploads them with the same owner as the root level assembly.Jeśli te zestawy zależne nie zostały znalezione i nie są już załadowany w bieżącej bazie danych, CREATE wirtualny plik dziennika kończy się niepowodzeniem.Jeżeli zależne zestawy już są załadowane w bieżącej bazie danych, właściciela tych zestawów musi być taka sama, jak właściciel nowo utworzonego wirtualny plik dziennika.

    <client_assembly_specifier> Nie można określić, jeśli zalogowany użytkownik jest są traktowane.

  • <specyfikatorze>
    Jest to lista wartości binarnych, wchodzące w skład wirtualny plik dziennika i jego zależne zestawy.Pierwsza wartość na liście jest uważany za poziomie katalogu głównego wirtualny plik dziennika.Wartości odpowiadające zależne zestawy mogą być dostarczone w dowolnej kolejności.Wszystkie wartości, które nie odpowiadają zależności wirtualny plik dziennika głównego są ignorowane.

  • varbinary_literal
    Czy varbinary literał.

  • varbinary_expression
    To wyrażenie typu varbinary.

  • PERMISSION_SET {BEZPIECZNE | EXTERNAL_ACCESS | UNSAFE}
    Określa wirtualny plik dziennika uprawnień dostępu do kodu przypisanych do wirtualny plik dziennika, gdy jest dostępny przez SQL Server. Jeśli nie zostanie określony, bezpieczne jest stosowany jako domyślny.

    Zaleca się używanie bezpiecznego.BEZPIECZNE jest najbardziej restrykcyjny zestaw uprawnień.Kod wykonywany przez wirtualny plik dziennika z bezpiecznego uprawnień nie można uzyskać dostępu zasobów systemowych zewnętrznych, takich jak pliki, w sieci, zmiennych środowiskowych lub w rejestrze.

    EXTERNAL_ACCESS umożliwia zespołów, aby uzyskać dostęp do niektórych zasobów systemowych zewnętrznych takich jak pliki, zmiennych środowiskowych, sieci i rejestru.

    Umożliwia bezpieczne zestawów nieograniczony dostęp do zasobów, zarówno wewnątrz, jak i poza wystąpienie SQL Server. Kod w UNSAFE, na którym uruchomiono z wirtualny plik dziennika mogą wywoływać kod niezarządzany.

    Security noteSecurity Note:

    Ustawienie zalecane uprawnienia dla zespołów, służące do wykonywania zadań związanych z zarządzaniem obliczeń i danych bez uzyskiwania dostępu do zasobów poza wystąpienie jest bezpieczne SQL Server.

    Zaleca się użycie EXTERNAL_ACCESS dla zestawy, które uzyskują dostęp do zasobów poza z wystąpienie SQL Server. Zestawy EXTERNAL_ACCESS zawierają niezawodność i skalowalność ochrona przed AWARYJNYM zestawów, ale z perspektywa zabezpieczeń są podobne do niebezpiecznych zespołów.Dzieje się tak, ponieważ kod w zestawach EXTERNAL_ACCESS jest uruchamiany domyślnie w obszarze SQL Server usługa tego konta, konta i uzyskuje dostęp do zasobów zewnętrznych, chyba, że kod personifikuje jawnie obiektu wywołującego. Dlatego należy przyznać uprawnienia do tworzenia zestawów EXTERNAL_ACCESS tylko do logowania, do których są uważane za zaufane na uruchomienie kodu w obszarze SQL Server konto usługa. Aby uzyskać więcej informacji o personifikacji zobacz Środowisko CLR Integracja z zabezpieczeniami.

    Określanie UNSAFE umożliwia kod w zestawie pełną swobodę do wykonywania operacji w SQL Server przestrzeni procesów, które potencjalnie mogą wpłynąć na niezawodności z SQL Server. NIEBEZPIECZNE zestawy można także potencjalnie subvert system zabezpieczeń: SQL Server lub plików wykonywalnych języka wspólnego. NIEBEZPIECZNE uprawnień należy przyznawać tylko do bardzo zaufanych zestawów.Tylko członkowie sysadmin roli serwera stałe można tworzyć i zmieniać niebezpieczne zestawów.

    Aby uzyskać więcej informacji na temat wirtualny plik dziennika zestawy uprawnień Zobacz Projektowanie zestawy.

Remarks

CREATE MONTAŻOWYCH wysyła wirtualny plik dziennika został wcześniej skompilowany jako plik .dll z kod zarządzany wewnątrz wystąpienie serwera SQL do użytku.

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

Podczas próby dostępu do wirtualny plik dziennika, określonego w <client_assembly_specifier>, SQL Server personifikuje w kontekście zabezpieczeń bieżącego logowania systemu Windows. Jeśli <client_assembly_specifier> Określa, w lokalizacji sieciowej (ścieżka UNC), personifikacja bieżącego logowania jest nie przeniesione do lokalizacji w sieci ze względu na ograniczenia delegowania. W takim przypadek dostęp odbywa się za pomocą kontekstu zabezpieczeń SQL Server konto usługa. Aby uzyskać więcej informacji zobaczCredentials (Database Engine).

Oprócz wirtualny plik dziennika katalogu głównego, określonego przez assembly_name, SQL Server próbuje przesłać wszystkie zestawy, do których odwołuje się zespół główny przekazywanych. Jeśli wirtualny plik dziennika, którego dotyczy odwołanie już zostało przesłane do bazy danych z powodu wcześniejszych instrukcja SQL CREATE MONTAŻOWYCH, tego wirtualny plik dziennika nie jest załadowany, ale jest dostępna dla zespołu głównego.Jeśli wcześniej nie został przekazany wirtualny plik dziennika zależnego, ale SQL Server Nie można zlokalizować jego manifestu pliku w katalogu źródłowym CREATE MONTAŻOWYCH zwraca błąd.

Jeśli wszystkie zależne zestawy odwołuje się zespół główny nie są już w bazie danych, są domyślnie ładowane wraz z zestawem głównym mają te same uprawnienia, jako wirtualny plik dziennika poziom głównego.Jeśli zestawy zależne muszą być tworzone przy użyciu różnych uprawnień ustawić niż wirtualny plik dziennika poziomie katalogu głównego, ich musi można przekazać jawnie przed wirtualny plik dziennika poziom głównego z wirtualny plik dziennika odpowiednich uprawnień.

Sprawdzanie poprawności wirtualny plik dziennika

SQL Server przeprowadza kontrole przekazany przez instrukcję CREATE MONTAŻOWYCH, aby zagwarantować następujące pliki binarne wirtualny plik dziennika:

  • Binarne wirtualny plik dziennika został dobrze uformowany prawidłowe metadane i segmenty kodu i segmenty kodu mieć prawidłowych instrukcji języka (MSIL) pośredniego firmy Microsoft.

  • Zestaw zestawy systemu odwołuje się on jest jedną z następujących obsługiwanych zestawów w SQL Server: Microsoft.visualbasic.dll Mscorlib.dll, System.Data.dll, System.dll, System.Xml.dll, Microsoft.visualc.dll, Custommarshallers.dll, System.Security.dll, System.Web.Services.dll, System.Data.SqlXml.dll, System.Core.dll i System.Xml.linq.dll. Odwołania do innych zestawów systemowych, ale musi być jawnie zarejestrowane w bazie danych.

  • Do zespołów utworzonych za pomocą bezpiecznego lub EXTERNAL dostępu zestawy uprawnień:

    • wirtualny plik dziennika Kod powinien być typu palety.Typ bezpieczeństwa jest określany przez uruchomione wspólne weryfikator środowiska wykonawczego języka dla wirtualny plik dziennika.

    • wirtualny plik dziennika nie powinna zawierać żadnych elementów członkowskich danych statycznych w jej klas, o ile są oznaczone jako tylko do odczytu.

    • Klasy w wirtualny plik dziennika nie może zawierać metody finalizatora.

    • Klasy i metody wirtualny plik dziennika powinna być odnotowany wyłącznie z atrybutami dozwolonych kodu.Aby uzyskać więcej informacji zobaczNiestandardowe atrybuty dla środowiska CLR procedur.

Oprócz poprzednich kontroli, które są wykonywane po CREATE wirtualny plik dziennika wykonuje, istnieją dodatkowe kontrole przeprowadzane w czasie wykonywania kodu w wirtualny plik dziennika:

  • Calling certain Microsoft .NET Framework APIs that require a specific Code Access Permission may fail if the permission set of the assembly does not include that permission.

  • BEZPIECZNE i EXTERNAL_ACCESS zestawów jedną próbę wywołania .NET Framework Interfejsów API, które są odnotowany z niektórych HostProtectionAttributes nie powiedzie się.

Aby uzyskać więcej informacji zobaczProjektowanie zestawy.

Uprawnienia

Wymaga uprawnienia CREATE wirtualny plik dziennika.

Jeśli PERMISSION_SET = EXTERNAL_ACCESS jest określony, SQL Server Identyfikator logowania musi mieć dostępu EXTERNAL wirtualny plik dziennika uprawnień na serwerze. Jeśli PERMISSION_SET = UNSAFE jest określony, członkostwo w grupie sysadmin stała rola serwera jest wymagana.

Użytkownik musi być właścicielem dowolnych zestawów aparatów, do których odwołuje się do wirtualny plik dziennika do przekazywania, jeżeli zestawów już istnieje w bazie danych.Aby przekazać wirtualny plik dziennika przy użyciu ścieżka do pliku, bieżący użytkownik musi być identyfikator logowania systemu Windows, uwierzytelniony lub członkiem sysadmin ustalić roli serwera.Identyfikator logowania systemu Windows użytkownika, który wykonuje MONTAŻOWYCH CREATE musi odczytać uprawnienia udziału i plików, w instrukcja ładowania.

Aby uzyskać więcej informacji na temat wirtualny plik dziennika zestawy uprawnień Zobacz Projektowanie zestawy.

Przykłady

W poniższym przykładzie założono, że SQL Server Database Engine przykłady są instalowane w domyślnej lokalizacji na komputerze lokalnym i HelloWorld.csproj przykładowej aplikacji jest skompilowany. Aby uzyskać więcej informacji zobaczHello World Sample.

DECLARE @SamplesPath nvarchar(1024)
SELECT @SamplesPath = REPLACE(physical_name, 
    'Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\master.mdf', 
    'Microsoft SQL Server\90\Samples\Engine\Programmability\CLR\') 
FROM master.sys.database_files 
WHERE name = 'master';
CREATE ASSEMBLY HelloWorld 
FROM @SamplesPath + 'HelloWorld\CS\HelloWorld\bin\debug\HelloWorld.dll'
WITH PERMISSION_SET = SAFE;