Share via


Assemblies tasarlama

Bu konuda aşağıdaki etkenler derlemeler tasarlarken göz önünde bulundurmalısınız açıklanmaktadır:

  • Ambalaj birleştirmeler

  • Derleme güvenliği yönetme

  • Derlemeler kısıtlamalar

Ambalaj birleştirmeler

Derleme için birden fazla işlevleri içerebilir SQL Server alışılmış veya yazıyla kendi sınıfları ve yöntemleri.Çoğu saat, mantıklıdır paket işlevselliği özellikle bu yordamlar sınıfları, yöntemleri çağırmayı birbirine paylaşıyorsanız aynı derlemenin içinde ilgili işlevleri gerçekleştirme yordamları.Örneğin, ortak dil çalışma zamanı (clr) Tetikleyiciler ve clr Saklı yordamlar için veri girişi yönetim görevlerini gerçekleştirme sınıfları aynı paketlenebilir derleme.Bunun nedeni bu sınıfı yöntemleri birbirine olanlar daha az ilgili görevler'den çağrı daha yüksektir.

Ambalaj kodu derleme içinde olduğunda, aşağıdakileri dikkate almanız gerekir:

  • clr kullanıcı tanımlı türler ve clr kullanıcı tanımlı işlevler üzerinde bağımlı olan dizinler bağlıdır veritabanında kalıcı veri neden olabilir derleme.Veritabanı derleme bağlıdır kalıcı veri olduğunda kod derleme değiştirme sık daha karmaşıktır.Bu nedenle, bu tür tutarlı veriler bağımlılıkları olan kod üzerinde tutarlı veriler bağımlılıkları (kullanıcı tanımlı türleri ve kullanıcı tanımlı işlevler kullanarak dizinleri gibi) kullanan kod ayırmak genellikle iyidir.Daha fazla bilgi için bkz: Assemblies uygulama ve alter assembly (Transact-sql).

  • Yönetilen kod parçasının daha yüksek izin gerektiriyorsa, bu kodu daha yüksek izin gerektiren kodundan ayrı bir derleme içine ayırmak daha iyidir.

Derleme güvenliği yönetme

Ne kadar bir derleme tarafından korunan kaynaklara ulaşabileceği kontrol edebilirsiniz.Yönetilen kod çalıştırıldığında, net kod erişimi güvenliği.Oluşturduğunuzda veya bir derleme değiştirme izni üç kümelerinden birini belirterek bunu: GÜVENLİ, permission_set, ya da güvenli olmayan.

GÜVENLİ

Güvenli varsayılan izin küme ve en kısıtlayıcı olan.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.Güvenli kod, verileri yerel bilgisayardan erişebileceğiniz SQL Server veritabanları veya gerçekleştirmek hesaplamaları ve iş mantığı, içermeyen dışında kaynaklara erişmeyerel veritabanlarını.

Çoğu derlemeleri dışındaki kaynaklara erişmek zorunda kalmadan hesaplama ve veri yönetimi görevlerini gerçekleştirmek SQL Server.Bu nedenle, güvenli derleme izin küme öneririz.

PERMİSSİON_SET

Permission_set dosyaları, ağları, Web Hizmetleri, ortam değişkenleri ve kayıt gibi bazı dış sistem kaynaklarına erişmek derlemeleri sağlar.Sadece SQL Server oturumları dış erişim izinleri ile oluşturup permission_set derlemeler.

GÜVENLİ ve permission_set derlemeler verifiably denkliği olan kodu içerebilir.Bu Bu derlemeleri yalnızca sınıf türü tanımı için geçerli olan iyi tanımlanmış giriş noktaları üzerinden erişebileceğiniz anlamına gelir.Bu nedenle, bunlar koduna göre sahip olduğu bellek arabellekleri Ranges erişemiyor.Ayrıca, sağlamlık olumsuz bir etkisi olabilir işlemleri gerçekleştiremezsiniz SQL Server işlem.

GÜVENLİ OLMAYAN

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

Ayrıca, güvenli olmayan belirleme kodunu sağlar derleme tarafından clr doğrulayıcı türü güvenli olmadığı düşünülen işlemlerini gerçekleştirmek için.Bu işlemler içinde bellek arabellekleri olabilecek erişebilirsiniz SQL Server işlem alanında denetlenmeyen bir şekilde.Güvenli olmayan derlemeler de potansiyel güvenlik sistemi ya da subvert SQL Server veya ortak dil çalışma zamanı.GÜVENSİZ izinler yalnızca son derece güvenilir derlemeler için deneyimli geliştiriciler veya yöneticiler tarafından verilmelidir.Yalnızca üyeleri sysadmin sabit sunucu rolü, güvenli olmayan birleştirmeler oluşturabilirsiniz.

Derlemeler kısıtlamalar

SQL Server güvenilir ve ölçeklenebilir bir şekilde çalıştırabilirsiniz emin olmak için derleme içinde yönetilen kod üzerinde bazı kısıtlamalar koyar.Bu, Sunucu Sağlamlığı tehlikeye belirli işlemler için güvenli ve permission_set derlemeleri izin verilmeyen anlamına gelir.

İzin verilmeyen özel öznitelikleri

Derlemeleri aşağıdaki özel öznitelikler içeren ek açıklama yapamazsınız:

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

Ayrıca, güvenli ve permission_set derlemeleri aşağıdaki özel öznitelikler içeren ek açıklama yapamazsınız:

System.Security.SuppressUnmanagedCodeSecurityAttribute
System.Security.UnverifiableCodeAttribute

İzin verilmedi.net Framework API'ları

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

Desteklenen.net Framework birleştirmeler

Kendi özel bir derleme tarafından başvurulan derleme içine yüklenen SQL Server kullanarak create assembly.Aşağıdaki .NET Framework birleştirmeleri halinde önceden yüklenen SQL Server ve bu nedenle, başvuru yapabilirsiniz tarafından kullanılacak kalmadan özel derlemelercreate assembly.

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

Ayrıca bkz.

Kavramlar

Diğer Kaynaklar