Seperti yang telah Anda catat, System.Web
adalah perpustakaan yang tidak didukung. Untuk referensi, System.Web
Anda perlu menelepon CREATE ASSEMBLY
. Sepertinya Anda sudah mencobanya, tapi bagaimana Anda merujuk lokasi System.Web.dll
? Apakah Anda menyalin / menempelnya ke lokasi yang berbeda? SQL Server akan mencoba menemukan majelis dependen di lokasi yang sama. Dengan kata lain, jika Anda merujuk lokasi System.Web.dll
dengan semua pustaka dependen lainnya yang tinggal di direktori yang sama, itu akan berfungsi dengan baik. Berikut ini contoh kerjanya. Saya dapat menambahkan System.Web
rakitan sekaligus rakitan Anda:
create assembly [System.Web]
from 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Web.dll'
with permission_set = unsafe;
go
create assembly SystemWebTest
from 'c:\SqlServer\SystemWebTest.dll'
with permission_set = safe;
go
Anda bisa melihat dari pesan klien semua majelis lain yang memuat SQL Server. Tetapi perhatikan, SQL Server menampilkan peringatan berikut untuk masing-masing:
Anda mendaftar tidak sepenuhnya diuji di lingkungan yang dihosting SQL Server dan tidak didukung. Di masa depan, jika Anda meningkatkan atau memperbaiki perakitan ini atau .NET Framework, rutin integrasi CLR Anda mungkin berhenti bekerja. Silakan merujuk SQL Server Books Online untuk lebih jelasnya.
Demikian juga, tetapi menambahkan System.Web
, lihatlah rakitan berikut yang ditambahkan:
select
name,
permission_set_desc,
is_visible
from sys.assemblies
where is_user_defined = 1
order by is_visible desc;
name permission_set_desc is_visible
System.Web UNSAFE_ACCESS 1
SystemWebTest SAFE_ACCESS 1
Microsoft.Build.Framework UNSAFE_ACCESS 0
System.Xaml UNSAFE_ACCESS 0
System.ComponentModel.DataAnnotations UNSAFE_ACCESS 0
System.Runtime.Caching UNSAFE_ACCESS 0
System.Web.ApplicationServices UNSAFE_ACCESS 0
System.Drawing UNSAFE_ACCESS 0
Microsoft.Build.Utilities.v4.0 UNSAFE_ACCESS 0
System.DirectoryServices UNSAFE_ACCESS 0
System.DirectoryServices.Protocols UNSAFE_ACCESS 0
System.EnterpriseServices UNSAFE_ACCESS 0
System.Runtime.Remoting UNSAFE_ACCESS 0
System.Runtime.Serialization.Formatters.Soap UNSAFE_ACCESS 0
System.Design UNSAFE_ACCESS 0
System.Windows.Forms UNSAFE_ACCESS 0
Accessibility UNSAFE_ACCESS 0
System.Drawing.Design UNSAFE_ACCESS 0
System.Web.RegularExpressions UNSAFE_ACCESS 0
Microsoft.Build.Tasks.v4.0 UNSAFE_ACCESS 0
System.ServiceProcess UNSAFE_ACCESS 0
System.Configuration.Install UNSAFE_ACCESS 0
System.Runtime.Serialization UNSAFE_ACCESS 0
System.ServiceModel.Internals UNSAFE_ACCESS 0
SMDiagnostics UNSAFE_ACCESS 0
Perlu diperhatikan tentang apa yang sebenarnya terjadi di sini, dan meskipun majelis tambahan lainnya tidak memiliki cara untuk titik masuk T-SQL, mereka sekarang menjadi ketergantungan. Saya akan mempertimbangkan opsi untuk melihat apakah Anda benar-benar perlu referensiSystem.Web
, atau jika ada rute lain untuk mencapai apa yang Anda inginkan.