Aracılığıyla paylaş


clr barındırılan ortamı

The Microsoft ..NET Framework ortak dil çalışma zamanı (clr) de dahil olmak üzere birçok modern programlama dilleri, yürüten bir ortam olan Microsoft Visual C# Microsoft Visual Basic ve Microsoft Visual c++.clr özellikleri bellek atık olarak toplanmış, pre-emptive threading, meta veriler Hizmetleri (yansıma türü), kod verifiability ve kod erişimi güvenliği.clr meta veriler bulup sınıflarını yüklemek, bellekte örnekleri düzenleme, yöntemi çağırmaları gidermek, doğal kodu üret, zorunlu güvenlik ve çalışma - set kullanırsaat içerik sınırları.

clr ve SQL Server Farklı Çalıştır -saat bunlar ele belleği, iş parçacığı ve eşitleme biçimini ortamlardaBu konuda, böylece tüm sistem kaynakları birörnek yönetilir, bu iki çalışma zamanları tümleşik biçimini tanımlar.Bu konuda hangi clr kod erişimi güvenliği (cas) biçiminde de kapsayan ve SQL Server tümleşik güvenlik sağlamaya yönelik bir güvenilir ve güvenli Yürütme Ortamı için kullanıcı kodu.

clr mimarisi temel kavramları

İçinde.net Framework, bir Programcı (örneğin, alanları veya sınıfının özelliklerini) yapısını ve yöntemleri tanımlayan bir sınıf uygulayan bir üst düzey dilde yazar.Bu yöntemlerden bazıları, statik fonksiyonlar olabilir.Program derleme derlenmiş kodu içeren bir derleme adlı bir dosya üretir Microsoft ara dil (MSIL) ve yapılan tüm başvurular içeren bir listebağımlı derlemelerin.

Not

Derleme clr mimarisinde önemli bir öğesi olan.Bunlar paketleme, dağıtım ve sürüm oluşturma uygulama kod birimleridir.net Framework.Montajlarý kullanarak, veritabanı içindeki uygulama kodunu dağıtmak ve yönetmek, yedeklemek için tekdüzen bir yol sağlar ve tam veritabanı uygulamaları geri yükleme yükleyebilirsiniz.

Derleme bildirimi tüm yapıları, alanları, özellikleri, sınıflar, kalıtım ilişkileri, işlevleri ve yöntemleri programda tanımlı açıklayan derleme hakkında meta veriler içerir.Bildirim derleme kimliğini kurar, montaj uygulama dosyaları belirtir, türleri ve derlemeyi oluşturan kaynakları maddeler halinde listelemektedir derleme - belirtirsaat diğer derlemeler, bağımlılıkları ve düzgün çalışması montaj için gereken izinler küme belirtir.Bu bilgiler çalışma zamanında kullanılan saat başvuruları çözümlemek için sürüm bağlama İlkesi zorlamak ve yüklenen derlemeler bütünlüğünü doğrulayın.

.net Framework özel öznitelikleri açıklanmasını için sınıfları, özellikleri, işlevleri destekler ve ek bilgi uygulama yöntemleriyle meta veriler yakalama.Tüm.net Framework derleyicileri bu açıklamaları yorumlanmadan tüketir ve derleme meta veriler olarak depolayabilirsiniz.Bu ek açıklamalar, tıpkı diğer meta veriler olarak incelenebilir.

clr yerine doğrudan işletim sistemi tarafından yürütülen MSIL yönetilen kodudur.Yönetilen kod uygulamaları Al otomatik çöp koleksiyon gibi clr Hizmetleri çalışma zamanı tür denetimive güvenlik desteği.Bu hizmetler, yönetilen kod uygulamaları tek tip platform ve dilden bağımsız davranışını sağlamak.

clr tümleştirme tasarım hedefleri

Kullanıcı kod çalıştırıldığında clr barındırılan bir ortamda içinde SQL Server (clr tümleştirme denir), aşağıdaki tasarım hedefleri uygulama:

Güvenilirlik (emniyet)

Kullanıcı kodu verilmez tehlikeye işlemlerini gerçekleştirmek için bütünlük veritabanı altyapısı işlemi, işlem sonlandırma veya kullanıcıdan yanıt isteyen bir ileti kutusu gibi pencerelerinin açılmasını.Kullanıcı kodu veritabanı altyapısı bellek arabellekleri veya iç veri yapıları üzerine olanağına sahip olmalıdır.

Ölçeklenebilirlik

SQL Server and the CLR have different internal models for scheduling and memory management.SQL Server supports a cooperative, non-preemptive threading model in which the threads voluntarily yield execution periodically, or when they are waiting on locks or I/O.clr preemptive bir iş parçacığı modelini destekler.Yoksa içinde çalışan kullanıcı kodu SQL Server işletim sistemi iş parçacığı ilkel, sonra da onu iyi entegre değil doğrudan çağırabilir SQL Server Görev Zamanlayıcı ve düşmesine ölçeklenebilirliğini sistem.clr sanal ve fiziksel bellek arasında ayrım yapmaz, ancak SQL Server doğrudan, fiziksel bellek yönetir ve içinde fiziksel bellek kullanmak için gerekiryapılandırılabilir bir sınırı.

Bugünkü iş parçacığı oluşturma, zamanlama ve bellek yönetimi için farklı modelleri bir tümleştirme direnmesine binlerce eşzamanlı kullanıcı oturumlarını desteklemek için ölçekler bir ilişkisel veritabanı yönetim sistemi için (rdbms).Mimarisi, ölçeklenebilirlik sistemin kullanıcı kodu tarafından doğrudan iş parçacığı, bellek ve eşitleme ilkel uygulama programlama arabirimleri (API) çağırma tehlikeyle emin olmalısınız.

Güvenlik

Veritabanında çalışan kullanıcı kodu gerekir izleyin SQL Server kimlik doğrulaması ve Yetkilendirme kuralları, erişim gibi veri nesneleri olarak tablolar ve sütunlar.Buna ek olarak, veritabanı yöneticileri veritabanında çalışan kullanıcı kodundan dosyalara ve ağ erişimi gibi işletim sistemi kaynaklarına erişimi denetlemek görebilmeniz gerekir.Bu yönetilen programlama dilleri (aksine yönetilmeyen dilleri gibi Transact-sql) gibi kaynaklara erişmek için API sağlamak gibi önemli rol oynayacaktır.Sistem dışında makine kaynaklara erişmek için kullanıcı kodu için güvenli bir yol sağlamalısınız Veritabanı Altyapısı işlem.Daha fazla bilgi için bkz: clr tümleştirme güvenlik.

Performans

Yönetilen kullanıcı kodu tarzda Veritabanı Altyapısı bilgisayar performansı için aynı kodu karşılaştırılabilir çalıştırmak dışında server.Yönetilen kullanıcı kodundan veritabanı erişimi yerel olarak hızlı Transact-SQL.Daha fazla bilgi için bkz: clr tümleştirme performans.

clr Hizmetleri

clr Hizmetleri ile tümleştirme clr tasarım ulaşmalarında yardımcı olmak üzere bir dizi sağlar SQL Server.

Güvenlik doğrulama türü

Tür-güvenli kod yalnızca iyi tanımlanmış şekillerde bellek yapılarını erişen kodudur.Örneğin, verilen bir geçerli nesne başvurusu, tür -güvenli kod sabit uzaklıklar gerçek alan üyeler için karşılık gelen bir bellek alanına erişebilir.Kod içinde veya dışında nesneye ait bellek aralık rasgele uzaklıklar bir bellek erişirse, ancak daha sonra bunu denkliği değil.Derlemeler için MSIL önceki clr içinde yüklendiğinde just-in-saat (JIT) kullanarak Derlenmekte derleme, çalışma zamanı, tür güvenliği belirlemek için kod inceleyen bir doğrulama aşaması gerçekleştirir.Bu doğrulama başarıyla geçen kodu denilen verifiably türü -güvenli kod.

Uygulama etki alanları

clr yürütme bölgeleri içinde nerede yönetilen kod derleme yüklenen yürütülen ve bir ana bilgisayar işlemi olarak uygulama etki alanlarını kavramı destekler.Uygulama etki alanı sınırları derlemeler arasında yalıtım sağlar.Statik değişkenler ve veri üyeleri ve dinamik kod çağırmak için yeteneği açısından görünürlüğünü derlemeler yalıtılır.Uygulama etki alanlarını yükleme ve kaldırma kodu için bir düzenek de altındadır.Kodu uygulama etki alanı kaldırarak bellekten kaldırılamıyor.Daha fazla bilgi için bkz: Uygulama etki alanları ve clr tümleştirme güvenlik.

Kod erişim güvenliği (cas)

clr güvenlik sistemi, yönetilen kod için kod izinleri atayarak gerçekleştirebileceği işlemlere ne tür kontrol etmek için bir yol sağlar.Kod erişim izinleri kodu kimliğine göre atanabilir (örneğin, imzası derleme veya kod kaynağı).

clr olabilir bir bilgisayar çapındaki ilke sağlar küme bilgisayar yöneticisi tarafından.Herhangi için izin verir Bu ilkeyi tanımlar yönetilen kod makinede çalışan.Buna ek olarak, yok ana -düzey gibi ana bilgisayarlar tarafından kullanılabilecek bir güvenlik ilkesi SQL Server belirtmek ek kısıtlamalar yönetilen kod.

Yönetilen API'durumunda.net Framework üzerindeki işlemler sergiler kaynakkod erişim izni tarafından korunan s API erişmeden önce izin talep kaynak.Bu talep, kapsamlı bir onay kodu (derleme) çağırma yığınındaki her biriminin tetiklemek clr güvenlik sistemi neden olur.Tüm arama zinciri varsa için erişim izni yalnızca kaynak verilmiş.

Reflection.Emit API kullanarak yönetilen kod dinamik olarak oluşturma yeteneği içinde clr barındırılan bir ortamda desteklenmez Not SQL Server.Bu tür kodu çalıştırmak için CA'ları izinlere sahip ve bu nedenle Başlangıçta Çalıştır başarısız olur saat.Daha fazla bilgi için bkz: clr tümleştirme kod erişimi güvenliği.

Ana bilgisayar koruması öznitelikleri (HPAs)

clr yönetilen API parçası olan ek açıklama eklemek için bir mekanizma sağlar.net Framework CLR ana ilgilendirebilecek belirli niteliklere sahip.Bu tür öznitelik örnekleri şunlardır:

  • SharedState API oluşturmak veya yönetmek paylaşılan durum (örneğin, statik sınıf alanları) olanağı sunar olup olmadığını gösterir.

  • Eşitleme API iş parçacıkları arasında eşitleme gerçekleştirme olanağı sunar olup olmadığını gösterir.

  • ExternalProcessMgmt API ana bilgisayar işlemi denetlemek için bir yol sunar olup olmadığını gösterir.

Bu öznitelikler göz önüne alarak ana HPAs, barındırılan bir ortamda izin verilmemelidir SharedState öznitelik gibi listesini belirtebilirsiniz.Bu durum, clr tarafından yasaklanmış listesinde HPAs işaretiyle API'lerini çağırmak için kullanıcı kodu denemelerini reddeder.Daha fazla bilgi için bkz: Ana bilgisayar koruması öznitelikleri ve clr tümleştirme programlama.

sql Server ve clr birlikte nasıl çalışır

Bu bölümde anlatılmaktadır nasıl SQL Server tümleştirir threading, planlama, eşitleme ve bellek yönetimi modelleri, SQL Server ve clr.In particular, this section examines the integration in light of scalability, reliability, and security goals.SQL Server essentially acts as the operating system for the CLR when it is hosted inside SQL Server.clr düşük - çağırandüzey yordamları uygulanan tarafından SQL Server threading, planlama, eşitleme, ve bellek yönetimi.Bunlar aynı ilkel, geri kalan SQL Server altyapısı kullanır.Bu yaklaşım, birkaç ölçeklenebilirlik, güvenilirlik ve güvenlik avantajları sağlar.

Ölçeklenebilirlik: Ortak iş parçacığı oluşturma, zamanlama ve eşitleme

clr çağrıları SQL Server API'leri oluşturma iş parçacıkları, her ikisi de çalışan kullanıcı kodu ve iç kendi kullanılıyor.Birden çok iş parçacığı arasında eşitlemek için clr çağıran SQL Server eşitleme nesnesi.Böylece, SQL Server olduğunda, bir iş parçacığı bekleyen bir eşitleme nesnesi diğer görevleri zamanlama zamanlayıcıÖrneğin, ne zaman clr başlatan atık koleksiyon, tüm iş parçacıklarını beklemek atık koleksiyon tamamlamak için.clr iş parçacıkları ve bunların üzerinde bekleyen eşitleme nesneler için bilindiği SQL Server Zamanlayıcı, SQL Server ilgili değil diğer veritabanı görevler çalışan iş parçacıkları zamanlayabilirclr. Bu da sağlar SQL Server algılamak kilitlenmeleri olan bağlantılar kilitleri çekilen clr eşitleme nesneleri ve çoğunluğunda geleneksel teknikleri çıkmaz kaldırma.

Yönetilen kod çalışır preemptively söz SQL Server.The SQL Server scheduler has the ability to detect and stop threads that have not yielded for a significant amount of time.clr kanca yeteneği iş parçacıkları SQL Server iş parçacığı anlaşılacağı SQL Server Zamanlayıcı "kaçak" tanımlamak clr iş parçacıkları ve öncelikleri yönetin.Bu tür kaçak iş parçacığı askıya alınmış ve geri sırasına konması.Sürekli kaçan iş parçacıkları olarak tanımlanan iş parçacığı yürütülen diğer çalışanlara çalıştırabilmeniz için belirli saat boyunca çalışmasına izin verilir.

Not

Verilere erişen veya tetiklemek için yeterli bellek ayırır uzun süre çalışan yönetilen kod atık koleksiyon otomatik olarak ortaya çıkarır.Tetiklemek için bellek tarafından yönetilen veri erişim veya yeterli tahsis uzun süre çalışan yönetilen kod atık koleksiyon açıkça System.Thread.Sleep() işlevini çağırarak verim.net Framework.

Ölçeklenebilirlik: Ortak bellek yönetimi

clr çağrıları SQL Server ilkel ayrılıyor ve de-allocating kendi bellek.Because the memory used by the CLR is accounted for in the total memory usage of the system, SQL Server can stay within its configured memory limits and ensure the CLR and SQL Server are not competing with each other for memory.SQL Server can also reject CLR memory requests when system memory is constrained, and ask CLR to reduce its memory use when other tasks need memory.

Güvenilirlik: Uygulama etki alanları ve kurtarılamaz özel durumlar

Zaman yönetilen kodda.net Framework API'ları karşılaştığı kritik durumlar, bellek yetersiz veya yığın taşması gibi her zaman bu tür hatalardan kurtarmak ve tutarlı ve doğru emin olmak mümkün değildir semantik kendi uygulama için.Bu API'ler Yükselt bir iş parçacığı özel durum bu hatalarına yanıt iptal etmek.

Tutulmasını, SQL Server, bu tür iş parçacığı iptalleri gibi işlenir: clr uygulamada herhangi bir paylaşılan durum algılar etki alanı içinde iş parçacığı iptal oluşur.clr eşitleme nesnesi olup olmadığını kontrol ederek yapar.Uygulamada paylaşılan durum ise etki alanı, uygulama etki alanı kendisini kaldırılır.Uygulama etki alanı kaldırma bu uygulama etki alanında çalışmakta olan veritabanı işlemleri durdurur.Paylaşılan durum varlığını etkisi kullanıcı oturumları için kritik gibi özel durumlar dışında özel durum tetikleyen bir genişletebilirsiniz çünkü SQL Server ve clr olasılığını azaltmak için adımlar alınmışpaylaşılan durumu. Daha fazla bilgi için bkz.net Framework belgeleri.

Güvenlik: İzin kümeleri

SQL Server dağıtılan veritabanına kod güvenilirliği ve güvenliği gereksinimlerini belirlemek kullanıcılara izin verir.Ne zaman birleştirmelerini karşıya veritabanı, yazarı derleme üç izin kümeleri için belirtebilirsiniz derleme: Permission_set için güvenli ve güvenli olmayan.

İzin küme

GÜVENLİ

PERMİSSİON_SET

GÜVENLİ OLMAYAN

Kod erişim güvenliği

Yalnızca yürütme

Yürütme + dış kaynaklara erişim

Sınırsız

Programlama modeli kısıtlamaları

Evet

Evet

Kısıtlama yok

Verifiability gereksinimi

Evet

Evet

Hayır

Yerel kod çağırmak için yeteneği

Hayır

Hayır

Evet

En güvenilir ve güvenli mod izin verilen bir programlama modeli açısından ilgili kısıtlamalar ile uyumludur.Güvenli derlemeler çalıştırmak leştirmek ve yerel veritabanı erişimi için yeterli izni verilir.Güvenli derlemeler olması verifiably yazın güvenli gerekir ve çağrı izin verilir yönetilmeyen kod.

Güvenli olmayan yalnızca veritabanı yöneticileri tarafından oluşturulan çok güvenilen kod içindir.Bu kod var Hayır güvenilir kod erişimi güvenliği kısıtlamaları ve (doğal) yönetimsiz kod çağırabilir.

Permission_set, kaynaklara erişmek için kod dış veritabanına izin verme, ancak yine de güvenli, güvenilirlik garantilerini sahip bir ara güvenlik seçeneği sağlar.

SQL Serverkullandığı ana -düzey üç izin küme birini verir bir ana bilgisayar ilkesini ayarlamak için CA ilke katmanı içinde saklı küme izni esas SQL Server katalogları.Yönetilen kod içinde veritabanı her zaman çalışan bu kod erişim izni kümelerinden birini alır.

Programlama modeli kısıtlamaları

Yönetilen kod programlama modelini SQL Server kapsar yazma işlevleri, yordamları ve türleri, genellikle gerek duymuyorsanız kullanılması durumunda tutulan birden fazla çağırmaları veya paylaşımı il genelinde birden çok kullanıcı oturumları.Daha fazla, daha önce açıklandığı gibi paylaşılan durum varlığını ölçeklenebilirlik ve güvenilirlik uygulamanın etkileyen kritik durumlar neden olabilir.

Bu noktalar göz önüne alarak biz statik değişkenlerin kullanımını ve statik veri kullanılan sınıfların üyesi vazgeçirmek SQL Server.GÜVENLİ ve permission_set derlemeler için SQL Server meta veriler derlemenin DERLEME oluşturma saat inceler ve bu tür derlemeleri, statik veri üyeleri ve bulduğu oluşturulması başarısızdeğişkenleri.

SQL ServerAyrıca çağrı izin vermez.net Framework API ile açıklama SharedState, Synchronization ve ExternalProcessMgmt ana bilgisayar koruması öznitelikleri.Bu güvenli önler ve tüm API'lerini çağıran dan permission_set birleştirmeleri etkinleştirmek paylaşım durumu eşitlemesi gerçekleştiriliyor ve etkileyen bütünlük , SQL Server işlem.Daha fazla bilgi için bkz: clr tümleştirme programlama modeli kısıtlamaları.