SQL Server CLR tetikleyici c # kodunda bir üçüncü taraf DLL kullanmanız gerekiyor
Ancak referans eklemeye çalıştığımda sadece SQL Server'dan bazı DLL'leri gösterir.
SQL Server'a üçüncü taraf dll'imi nasıl ekleyebilirim ?
SQL Server CLR tetikleyici c # kodunda bir üçüncü taraf DLL kullanmanız gerekiyor
Ancak referans eklemeye çalıştığımda sadece SQL Server'dan bazı DLL'leri gösterir.
SQL Server'a üçüncü taraf dll'imi nasıl ekleyebilirim ?
Yanıtlar:
Yalnızca Sql Server'da kayıtlı olan derlemelere referans ekleyebilirsiniz. Kayıtlı değilse, Referans Ekle iletişim kutusunda görünmezler.
Bir DLL'i kaydetmeniz için birkaç adım vardır, önce veritabanınızı yeniden yapılandırmanız gerekir:
ALTER DATABASE [MyDatabase] SET TRUSTWORTHY ON;
sp_configure 'clr enabled', 1;
RECONFIGURE;
Bu yapıldıktan sonra Sql Server CLR etkindir. Ardından, montajınızı kaydetmeniz gerekir:
CREATE ASSEMBLY [MyAssembly] AUTHORIZATION [MyUser]
FROM 'C:\CLR\MyAssembly.dll'
WITH PERMISSION_SET = SAFE
Bu son komut dosyası düzgün çalışıyorsa, derleme şimdi kaydedilir ve Referans Ekle iletişim kutusunda görünür.
Yine de dikkate almanız gereken şey, Sql Server CLR yapılandırmanızın uygulama güvenliğidir:
SAFE
, yalnızca istisnai durumlarda EXTERNAL_ACCESS
veya kullanmanız gerektiği şekilde kaydetmeyi tercih edin UNSAFE
.Assembly.Load()
amaçlı olarak kısıtlandığı gibi dinamik olarak yüklemeye çalışmayın .UNSAFE
.context connection = true;
) bağlı kullanıcının bağlamında çalışır, bu nedenle bu kitaplığın verilerinize hangi erişimin olduğunu bildiğinizden emin olmanız gerekir.Visual Studio'dan SQL CLR derlemelerini yüklemeye alternatifler hakkında soru sorduğunuzu varsayıyorum.
Kodun Visual Studio'da olması gerekli değildir.
MSDN'de CLR Veritabanı Nesneleri dağıtmak , SQL deyimleri ve dağıtım komut dosyaları dahil seçenekleri ayrıntılı olarak açıklar.
Bir web sayfasını alıp PDF'ye dönüştüren çok büyük bir 3. taraf DLL kullanıyorum.
PDF bir dosya paylaşımına kaydedilir ve veritabanı konum ve türüne göre güncellenir.
Bu 3 adımlı bir işlemdir:
PDF'yi oluşturmak ve URL ile FilePath'i parametre olarak kabul etmek için 3. taraf DLL kullanan bir konsol uygulaması oluşturun ve PDF boyutunu ve sayfa sayısını döndürür.
Sunucuda konsol uygulamasını çağıran bir CLR saklı yordamı oluşturun
Tüm bunları PDF oluşturmak için CLR uygulamasını çağıran tek bir saklı yordam içine sarın ve sonra veritabanına bu konuda meta veri yazma.
Bunun mükemmel olmadığını ve hiçbir tetikte bu kadar çılgınca bir şey yapmamalısınız!
Ben sadece burada kendi üçüncü parti DLL's CLR kullanma hakkında sorular ile söz.
Benim umarım çöküyorsa, her şeyi in-proc çalıştırmak yerine, bir üçüncü parti DLL çalıştırmak için bir cmd.exe konsolunu döndürerek, SQL Server kadar olumsuz etkilemez olmasıdır. Umarım budur.
Bunun gerçekten kötü bir yaklaşım olup olmadığını ve nedenini açıklayınız.