Derleme (Transact-sql) oluştur

Nesne örneği olarak sınıf meta verileri ve yönetilen kod içeren bir yönetilen uygulamayı modül oluşturur SQL Server. Başvurarak bu modül, ortak dil çalışma zamanı (clr) işlevleri, saklı yordamlar, Tetikleyiciler, kullanıcı tanımlı toplamları ve kullanıcı tanımlı türler veritabanında oluşturulabilir.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

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 }

Bağımsız değişkenler

  • assembly_name
    Derleme addır. Ad veritabanını ve geçerli bir benzersiz olmalıdır tanımlayıcısı.

  • YETKİLENDİRMEowner_name
    Bir kullanıcı ya da rol sahibi derleme olarak belirtir. owner_nameya da hangi geçerli kullanıcının üyesi olduğu veya geçerli kullanıcı özelliklerini Al izni olması gerekir bir rol adı olmalıdır owner_name. Belirtilmezse, geçerli kullanıcıya sahipliği verilir.

  • <client_assembly_specifier>
    Yerel yol veya karşıya yüklenen derleme bulunduğu ağ konumunu ve ayrıca derlemesi için karşılık gelen bildirim dosyası adını belirtir. <client_assembly_specifier> sabit bir dize veya bir ifade ile değişkenler sabit bir dize değerlendirme olarak ifade edilebilir. create assembly yükleme multimodule derlemeleri desteklemiyor. SQL ServerAyrıca herhangi bağımlı derlemelerin aynı yerde bu Kurul arar ve de onları ile aynı sahibi olarak kök düzeyinde derleme yüklemeleri. Bu bağımlı derlemelerin bulunamadı ve onlar zaten geçerli veritabanında yüklü olmayan create assembly başarısız olur. Bağımlı derlemelerin önceden yüklenen geçerli veritabanında, yeni oluşturulan derleme sahibi ile aynı bu derlemeler sahibi olmalıdır.

    <client_assembly_specifier> oturum açmış olan kullanıcının bürünülen durumunda belirtilemez.

  • <assembly_bits>
    Derleme ve onun bağımlı derlemelerin oluşturan ikili değerler listesidir. İlk değer listesinde kök düzeyi Derleme kabul edilir. Bağımlı derlemelerin için karşılık gelen değerlerin herhangi bir sırada sağlanabilir. Bağımlılıkları kök derleme için karşılık gelmeyen tüm değerleri göz ardı edilir.

    [!NOT]

    Bu seçenek içerilen bir veritabanında kullanılamaz.

  • varbinary_literal
    Olan bir varbinarydeğişmez.

  • varbinary_expression
    Deyim türü varbinary.

  • PERMISSION_SET { güvenli | EXTERNAL_ACCESS | GÜVENSİZ}
    Tarafından erişildiğinde derlemesi için verilen kod erişim izinleri kümesi belirtir SQL Server. Belirtilmezse, varsayılan olarak güvenli uygulanır.

    GÜVENLİ kullanmanızı öneririz. En kısıtlayıcı izin kümesini güvenli olduğunu. GÜVENLİ izinlerine sahip bir derleme tarafından çalıştırılan kod dosyaları, ağ, ortam değişkenleri veya kayıt defteri gibi dış sistem kaynaklarına erişemiyor.

    external_access dosyaları, ağları, ortam değişkenleri ve kayıt gibi bazı dış sistem kaynaklarına erişmek birleştirmeleri etkinleştirir.

    [!NOT]

    Bu seçenek içerilen bir veritabanında kullanılamaz.

    unsafe derlemeler sınırsız erişim kaynaklara, hem içinde hem de dışında örneği sağlar SQL Server. Güvenli olmayan bir derleme içinde çalışan kod yönetilmeyen kod çağırabilir.

    [!NOT]

    Bu seçenek içerilen bir veritabanında kullanılamaz.

    Güvenlik notuGüvenlik Notu

    GÜVENLİ bir örneği dışında kaynaklara erişim olmadan hesaplama ve veri yönetimi görevlerini gerçekleştirmek derlemeler için önerilen izin ayarını SQL Server.

    Örneği dışında kaynaklara erişim derlemeler için external_access kullanmanızı öneririz SQL Server. external_access derlemeleri güvenilirlik ve ölçeklenebilirlik korumaları güvenli derlemeler içerir, ancak güvenlik açısından güvenli olmayan derlemeler için benzer. Bu varsayılan altında external_access derlemeleri kod çalışır çünkü SQL Serverkod açıkça arayan taklit sürece hizmet hesabı ve kere görüntülendi dış kaynaklar bu hesap altında. Bu nedenle, external_access derlemeleri oluşturmak için kodu altında çalıştırmak için güvenilen oturumları izni verilmesi SQL Serverhizmet hesabı. Kimliğe bürünme hakkında daha fazla bilgi için bkz: clr tümleştirme güvenlik.

    unsafe belirtme işlemleri gerçekleştirmek için derleme tam bir özgürlük içinde kod sağlar SQL Serverişlem alanı sağlamlığı tehlikeye SQL Server. Güvenli olmayan derlemeler da potansiyel ya da güvenlik sistemi yıkmak SQL Serverya da ortak dil çalışma. Yalnızca çok güvenilen derlemeler için GÜVENSİZ izinler verilmelidir. Yalnızca üyeleri sysadmin sabit sunucu rolü oluşturabilir ve güvenli olmayan derlemeler değiştirme.

    Derleme izin kümeleri hakkında daha fazla bilgi için bkz: Assemblies tasarlama.

Açıklamalar

create assembly, yönetilen kod içinde bir SQL Server örneği kullanmak için bir .dll dosyası olarak önceden derlenen derleme karşıya yükler.

SQL Serverbir derlemenin farklı sürümleri aynı adı, Kültür ve ortak anahtar ile kayıt izin vermez.

Belirtilen derleme erişmeye çalışırken <client_assembly_specifier>, SQL Servergeçerli Windows oturum açma güvenlik bağlamı kimliğine bürünür. Eğer <client_assembly_specifier> (unc yolu), ağ konumu belirtir geçerli oturum açma kimliğine bürünme ileri temsilcisi sınırlamalar nedeniyle ağ konumuna taşınan değil. Bu durumda, access güvenlik bağlamını kullanarak yapılır SQL Serverhizmet hesabı. Daha fazla bilgi için, bkz. Kimlik bilgileri (veritabanı altyapısı).

Tarafından belirtilen kök derleme yanında assembly_name, SQL Serverkarşıya yüklenen kök Kurul tarafından başvurulan tüm derlemeleri dener. Başvurulan derleme zaten bir önceki create assembly deyimi nedeniyle veritabanına yüklenir, bu derleme karşıya ancak kök derlemesi için kullanılabilir. Bir bağımlı birleştirme önceden yüklenen değil, ama SQL Serveronun bildirim dosyası bulunamıyor kaynak dizininde create assembly, bir hata döndürür.

Kök Kurul tarafından başvurulan tüm bağımlı derlemelerin zaten veritabanında olmayan ve dolaylı olarak kök derleme ile birlikte yüklenen kök düzeyi derleme olarak ayarlanmış aynı izni gerekir. Bağımlı derlemelerin farklı bir izin kök düzeyi Derleme kümesi kullanılarak oluşturulması gerekir, onlar açıkça kök düzeyi Derleme ile ilgili izin kümesi önce karşıya gerekir.

Montaj doğrulama

SQL ServerAşağıdaki garanti create assembly deyimi tarafından yüklenen Derleme ikili dosyalar üzerinde denetimleri gerçekleştirir:

  • Derleme ikili geçerli meta verileri ve kodu kesimleri ile iyi biçimlendirilmiş ve geçerli Microsoft ara dili (MSIL) yönerge kodu kesimleri vardır.

  • Sistem derlemeler başvuran kümesi içinde aşağıdaki desteklenen derlemeler biridir 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 ve System.Xml.Linq.dll. Diğer sistem derlemeler başvurulabilir, ama onlar açıkça veritabanında kayıtlı olmalıdır.

  • GÜVENLİ veya dış ERİŞİME izin kümesi kullanılarak oluşturulmuş birleştirmeler için:

    • Derleme kod türü uyumlu olmalıdır. Tür güvenliği derleme karşı ortak dil çalışma zamanı doğrulama çalıştırarak kurulur.

    • Salt okunur olarak işaretlenmiş sürece derleme sınıflardan herhangi bir statik veri üye içermemelidir.

    • Derleme sınıflarda finalizer yöntemleri içeremez.

    • Sınıf ya da derleme yöntemleri yalnızca izin verilen kod öznitelikleri ile açıklama. Daha fazla bilgi için, bkz. clr yordamları için özel öznitelikleri.

create assembly yürütüldüğünde gerçekleştirilir önceki denetimleri yanı sıra, assembly kodunun yürütülmesi sırasında gerçekleştirilen ek denetimler vardır:

  • Belirli arama Microsoft .NET Frameworkderleme izin kümesi izni yoksa belirli bir kod erişim izni gerektiren API'ler başarısız olabilir.

  • EXTERNAL_ACCESS ve GÜVENLI derlemeler için herhangi bir girişimi aramak .NET Frameworkaçıklamalı API belirli HostProtectionAttributes ile başarısız olur.

Daha fazla bilgi için, bkz. Assemblies tasarlama.

İzinler

create assembly izni gerektirir.

Eğer PERMISSION_SET = external_access belirtilirse, SQL Serveroturum açma sunucu üzerindeki dış erişim derleme izni olması gerekir. Eğer PERMISSION_SET = unsafe belirtilen üyelik sysadmin sabit sunucu rolü gereklidir.

Kullanıcı tüm derlemeleri Kurul tarafından başvurulan derlemeler veritabanında zaten varsa yüklenecek olan sahibi olmalıdır. Bir dosya yolu kullanarak bir derleme karşıya için geçerli kullanıcı authenticated Windows oturum açma veya bir üyesi olmanız sysadmin sunucu rolü. create assembly yürütür kullanıcı Windows oturum açma izni paylaşım ve beyanı yüklenen dosyaları okumak gerekir.

Derleme izin kümeleri hakkında daha fazla bilgi için bkz: Assemblies tasarlama.

Örnekler

Aşağıdaki örnek varsayar SQL Server Veritabanı Altyapısıörnekleri yerel bilgisayarın varsayılan konuma yüklenir ve HelloWorld.csproj örnek uygulama derlenmektedir. Daha fazla bilgi için, bkz. Hello World örnek.

CREATE ASSEMBLY HelloWorld 
FROM <system_drive>:\Program Files\Microsoft SQL Server\100\Samples\HelloWorld\CS\HelloWorld\bin\debug\HelloWorld.dll
WITH PERMISSION_SET = SAFE;

CREATE ASSEMBLY HelloWorld 
FROM <system_drive>:\Program Files\Microsoft SQL Server\100\Samples\HelloWorld\CS\HelloWorld\bin\debug\HelloWorld.dll
WITH PERMISSION_SET = SAFE;

Ayrıca bkz.

Başvuru

alter assembly (Transact-sql)

drop assembly (Transact-sql)

CREATE FUNCTION (Transact-SQL)

procedure (Transact-sql) oluştur

CREATE TRIGGER (Transact-SQL)

CREATE TYPE (Transact-SQL)

Toplam (Transact-sql) oluştur

eventdata (Transact-sql)

Kavramlar

Kullanım senaryoları ve ortak dil çalışma zamanı (clr) tümleştirme örnekleri