DERLEME (Transact-SQL) oluştur
Sınıf meta veriler ve yönetilen kod örnek bir nesne olarak 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.
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
derlemeaddır.Adı veritabanı ve geçerli bir içinde benzersiz olmalıdır tanımlayıcısı.YETKİLENDİRMEowner_name
derlemesahibi olarak bir kullanıcı veya rolün adını belirtir.owner_nameya da biri geçerli kullanıcının üyeolduğu veya geçerli kullanıcı özelliklerini Al izni olması gerekir, bir rolün adını olması gerekir owner_name.Sahiplik belirtilmezse, geçerli kullanıcıya verilir.<client_assembly_specifier>
Yerel yol veya karşıya yüklenen derleme bulunduğu ağ konumunu ve ayrıca derlemeiçin karşılık gelen bildirim dosyası adını belirtir.<client_assembly_specifier> sabit bir dize veya bir ifade için bir sabit dizedeğişkenleri ile değerlendirme olarak ifade edilebilir.DERLEME oluşturma yükleme multimodule derlemeleri desteklemiyor.SQL ServerBu derleme aynı konumdaki herhangi bağımlı derlemelerin de arar ve de bunları kök düzey derlemeaynı sahibe ile yükler.Bu bağımlı derlemelerin bulunamadı ve bunlar zaten geçerli veritabanında yüklü değil, DERLEME oluşturma başarısız olur.Bu derlemeler sahibi bağımlı derlemelerin önceden yüklenen geçerli veritabanında, yeni oluşturulan derlemesahibi ile aynı olmalıdır.<client_assembly_specifier> oturum açmış olan kullanıcının kimliğine bürünülen durumunda belirtilemez.
<assembly_bits>
derleme ve onun bağımlı derlemelerin oluşturan ikili değerler listesidir.Listedeki ilk değer kökdüzey derlemeolarak kabul edilir.Bağımlı derlemelerin karşılık gelen değerlerin herhangi bir sırada sağlanabilir.Kök derleme bağımlılıklarını için karşılık gelmeyen tüm değerleri dikkate alınmaz.varbinary_literal
Olan bir varbinary değişmez.varbinary_expression
Tür bir ifade varbinary.Not { Güvenli | PERMİSSİON_SET | GÜVENSİZ}
Bir küme , tarafından erişildiğinde, derleme için verilen kod erişim izinlerini belirtir SQL Server.Belirtilmezse, varsayılan olarak güvenli uygulanır.Güvenli kullanmanızı öneririz.En kısıtlayıcı izni kümegüvenlidir.Güvenli 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.
Permission_set dosyaları, ağları, ortam değişkenleri ve kayıt gibi bazı dış sistem kaynaklarına erişmek birleştirmeleri etkinleştirir.
Güvenli olmayan kaynaklara, hem içindeki hem de dışındaki örnek derlemeler sınırsız erişim sağlar SQL Server.Gelen güvenli olmayan derleme içinde çalışan kod yönetilmeyen kodçağırabilir.
Güvenlik Notu GÜVENLİ mi örnek dışında kaynaklara erişim olmadan hesaplama ve veri yönetimi görevlerini gerçekleştirmek derlemeler için önerilen izni ayarı SQL Server.
Permission_set örnek dışındaki kaynaklara erişmek birleştirmeleri için kullanmanızı öneririz SQL Server.Permission_set derlemeler güvenli derlemeler güvenilirlik ve ölçeklenebilirlik korumalar içerir, ancak güvenlik perspektif bakıldığında, güvenli olmayan derlemeler için benzer.Bunun nedeni, varsayılan ayar olarak permission_set derlemeler kodu çalıştırır SQL Server hizmet hesabı ve kod açıkça arayan taklit sürece o hesabı altında dış kaynaklara erişir.Bu nedenle, permission_set derleme oluşturmak için yalnızca kodu altında çalıştırmak için güvenilir oturum açma için izni verilecek SQL Server hizmet hesabı.Kimliğe bürünme hakkında daha fazla bilgi için bkz: clr tümleştirme güvenlik.
Sağlayan kod işlemleri gerçekleştirmek için derleme tam bir özgürlük içinde güvenli olmayan belirtme SQL Server işlem alanı, potansiyel tehlikeye sağlamlığı SQL Server.Güvenli olmayan derlemeler de potansiyel güvenlik sistemi ya da subvert SQL Server veya ortak dil çalışma zamanı.Yalnızca son derece güvenilir 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
DERLEME oluşturma derlenen önceden yönetilen kod SQL Server örnek içinde kullanmak için bir .dll dosyası derleme karşıya yükler.
SQL Serverbir derleme farklı sürümleri aynı adı, kültür ve ortak anahtarkaydediliyor izin vermez.
Belirtilen derleme erişmeye çalışırken <client_assembly_specifier>, SQL Server taklit güvenlik bağlamında geçerli Windows oturum açma.<Client_assembly_specifier> (unc yol), ağ konumu belirtir geçerli oturumu taklidine İleri ağ konumuna temsilci sınırlamaları nedeniyle taşınan değil.Bu durumda erişim güvenlik bağlamını kullanarak yapılan SQL Server hizmet hesabı.Daha fazla bilgi için, bkz. Kimlik bilgileri (veritabanı altyapısı).
Tarafından belirtilen kök derleme yanı sıra assembly_name, SQL Server karşıya yüklenen kök derleme tarafından başvurulan derlemeler karşıya yüklemeye çalışırken.Başvuru yapılan bir derleme zaten veritabanına nedeniyle önceki bir DERLEME oluşturma deyimkarşıya, bu derleme karşıya, ancak kök derlemeiçin kullanılabilir.Bağımlı derleme karşıya daha önce ama SQL Server , bildirim dosyasını bulamıyor kaynak dizininde oluşturun DERLEME bir hata. verir
Kök derleme başvurulan herhangi bağımlı derlemelerin zaten veritabanında bulunmayan ve kök derlemeile birlikte yüklenen dolaylı olarak aynı izni küme kök düzey derlemeolarak vardır.Bağımlı derlemelerin bir farklı iznini küme kök -düzeyderlemekullanılarak oluşturulması gerekir, bunlar açıkça uygun izni kümeile kök düzeyderleme önce karşıya gerekir.
Montaj doğrulama
SQL Serveraşağıdakilerden emin olmak için DERLEME oluşturma deyim karşıya derleme ikili dosyalar üzerinde denetimleri gerçekleştirir:
derleme ikili iyi geçerli meta veriler ve kodu kesimleri ile biçimlendirilmiş ve geçerli Microsoft ara dili (MSIL) yönergeleri kod parçaları vardır.
küme , başvurduğu sistem montajları, aşağıdaki desteklenen montajlar 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 birleştirmelerine başvurulan, ancak açıkça veritabanında kayıtlı olmaları gerekir.
Güvenli veya dış erişim izni kümesi kullanılarak oluşturulmuş birleştirmeler için:
derleme kod türü uyumlu olmalıdır.Tür güvenliği derlemekarşı ortak dil çalışma zamanı doğrulama çalıştırarak kurulur.
Salt okunur olarak işaretlenmiş sürece hiçbir statik veri üyeleri kendi sınıflarında derleme içermemelidir.
derleme sınıfları sonlandırıcıyı yöntemleri içeremez.
Sınıf ya da derleme yöntemleri yalnızca izin verilen kod öznitelikler içeren açıklama.Daha fazla bilgi için, bkz. clr yordamları için özel öznitelikleri.
OLUŞTURMA assembly yürütüldüğünde gerçekleştirilir önceki denetimlerin yanı sıra, kod derlemeyürütme saat gerçekleştirilen ek denetimler vardır:
Belirli bir arama Microsoft .NET Framework API'leri gerektiren, belirli bir kod erişim izni başarısız olabilir, izin küme derleme içermez bu izni.
GÜVENLİ ve permission_set derlemeler için yapmaya çağırmak .NET Framework API'leri belirli HostProtectionAttributes ile açıklama olacak başarısız.
Daha fazla bilgi için, bkz. Assemblies tasarlama.
İzinler
DERLEME oluşturma izni gerektirir.
Varsa not = permission_set belirtilen SQL Server oturum açma sunucusu dış erişim DERLEME izni olması gerekirVarsa not güvenli olmayan = belirtilirse, üyelik sysadmin sabit sunucu rolü gereklidir.
Kullanıcı, sahibi montajları veritabanında zaten varsa, karşıya yüklenecek olan derleme başvurulan derlemeleri olmalıdır.Bir dosya yolkullanarak bir derleme karşıya için geçerli kullanıcı authenticated Windows oturum açma ya da üye olmanız gerekir sysadminsabit sunucu rolü. Windows oturumu oluşturmak assembly yürütür kullanıcı paylaşım ve ' % s'deyimi deyimiçinde yüklenen dosyaları Oku iznine sahip olmalıdır.
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 derlendi.Daha fazla bilgi için, bkz. SQL Server Örnekleri ve Örnek Veritabanlarının Yüklenmesiyle İlgili Önemli Noktalar.
CREATE ASSEMBLY HelloWorld
FROM <system_drive>:\Program Files\Microsoft SQL Server\100\Samples\HelloWorld\CS\HelloWorld\bin\debug\HelloWorld.dll
WITH PERMISSION_SET = SAFE;