it-swarm.asia

Dll pihak ke-3 di SQL Server CLR

Saya perlu menggunakan pihak ketiga DLL dalam pemicu kode c # di SQL Server CLR

Tetapi ketika saya mencoba untuk menambahkan referensi itu hanya menunjukkan beberapa DLL dari SQL Server.

Bagaimana saya bisa menambahkan dll pihak ketiga saya ke SQL Server?

14
AVEbrahimi

Anda hanya dapat menambahkan referensi ke majelis-majelis yang telah terdaftar di Sql Server. Jika mereka tidak terdaftar, mereka tidak akan muncul di dialog Tambah Referensi.

Ada beberapa langkah yang perlu Anda lakukan untuk mendaftarkan DLL, pertama Anda harus mengkonfigurasi ulang basis data Anda:

ALTER DATABASE [MyDatabase] SET TRUSTWORTHY ON;
sp_configure 'clr enabled', 1;
RECONFIGURE;

Setelah ini selesai, Sql Server diaktifkan CLR. Selanjutnya, Anda harus mendaftarkan Majelis Anda:

CREATE Assembly [MyAssembly] AUTHORIZATION [MyUser]
FROM 'C:\CLR\MyAssembly.dll'
WITH PERMISSION_SET = SAFE

Jika skrip terakhir ini berjalan dengan benar, Majelis sekarang terdaftar, dan akan muncul di dialog Tambah Referensi.

Yang perlu Anda pertimbangkan adalah keamanan aplikasi konfigurasi Sql Server CLR Anda:

  1. Lebih suka mendaftarkan Majelis sebagai SAFE, hanya dalam keadaan luar biasa Anda harus menggunakan EXTERNAL_ACCESS Atau UNSAFE.
  2. Jangan berharap dapat melakukan semua yang Anda bisa pada CLR Kepercayaan Penuh (mis., Bukan CLR yang diselenggarakan oleh Sql Server) - SQLCLR adalah runtime kotak pasir.
  3. Jangan mencoba dan memuat majelis secara dinamis, karena Assembly.Load() sengaja dibatasi.
  4. Anda mungkin perlu memastikan perpustakaan pihak ke-3 ditandatangani dengan kunci publik jika Anda berencana menggunakan UNSAFE.
  5. Eksekusi kode berjalan dalam konteks identitas layanan yang menjalankan Sql Server (saya pikir!)
  6. Akses basis data yang dibuat dari Majelis yang dihosting (mis. Via context connection = true;) Berjalan dalam konteks pengguna yang terhubung, jadi Anda perlu memastikan bahwa Anda mengetahui akses apa yang dimiliki perpustakaan ke data Anda.
15
Matthew Abbott

Saya berasumsi Anda bertanya tentang alternatif untuk menginstal rakitan SQL CLR dari Visual Studio.

Tidak diperlukan kode di Visual Studio.

Menyebarkan Objek Database CLR pada MSDN merinci opsi, termasuk pernyataan SQL dan skrip penerapan.

5
Oded

Saya menggunakan pihak ke-3 yang sangat besar DLL yang mengambil halaman web dan mengubahnya menjadi PDF.

PDF disimpan pada berbagi file dan database diperbarui ke lokasi dan jenisnya.

Ini adalah proses 3 langkah:

  1. Buat aplikasi konsol yang menggunakan pihak ke-3 DLL untuk membuat PDF dan terima URL dan FilePath sebagai parameter dan kembalikan PDF ukuran dan jumlah halaman.

  2. Buat prosedur tersimpan CLR yang kemudian memanggil aplikasi konsol di server

  3. Saya membungkus ini semua menjadi satu prosedur tersimpan yang memanggil aplikasi CLR untuk membuat PDF dan kemudian saya menulis meta-data tentang itu ke database.

Saya menyadari ini tidak sempurna dan tidak berarti Anda harus melakukan sesuatu yang begitu gila di dalam pemicu!

Saya hanya menyebutkannya di sini untuk orang lain dengan pertanyaan tentang penggunaan DLL Pihak ke-3 di CLR mereka.

Harapan saya adalah dengan memutar konsol cmd.exe untuk menjalankan DLL Pihak ke-3, alih-alih menjalankan semuanya di-proc, jika crash, itu tidak akan terlalu mempengaruhi SQL Server. Itulah yang saya harap.

Berikan komentar jika ini adalah pendekatan yang sangat buruk dan mengapa.

1
MikeTeeVee