Như bạn đã lưu ý, System.Web
là một thư viện không được hỗ trợ. Để tham khảo, System.Web
bạn sẽ cần phải thực hiện một cuộc gọi đến CREATE ASSEMBLY
. Có vẻ như bạn đã thử điều đó, nhưng làm thế nào bạn tham khảo vị trí của System.Web.dll
? Bạn đã sao chép / dán nó vào một vị trí khác? SQL Server sẽ cố gắng xác định vị trí các cụm phụ thuộc trong cùng một vị trí. Nói cách khác, nếu bạn tham chiếu vị trí của System.Web.dll
với tất cả các thư viện phụ thuộc khác sống trong cùng một thư mục, thì nó sẽ hoạt động tốt. Dưới đây là một ví dụ làm việc. Tôi đã có thể thêm cả System.Web
lắp ráp cũng như lắp ráp của bạn:
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
Bạn có thể thấy từ các thông điệp máy khách tất cả các hội đồng khác mà SQL Server tải. Nhưng hãy lưu ý, SQL Server hiển thị cảnh báo sau cho từng trường hợp sau:
bạn đang đăng ký không được kiểm tra đầy đủ trong môi trường lưu trữ SQL Server và không được hỗ trợ. Trong tương lai, nếu bạn nâng cấp hoặc bảo trì tổ hợp này hoặc .NET Framework, thói quen tích hợp CLR của bạn có thể ngừng hoạt động. Vui lòng tham khảo SQL Server Books Online để biết thêm chi tiết.
Tương tự như vậy, nhưng thêm vào System.Web
, hãy xem các hội đồng sau đây được thêm vào:
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
Điều đáng lưu tâm về những gì đang thực sự xảy ra ở đây và mặc dù các hội đồng bổ sung khác không có cách nào cho các điểm nhập T-SQL, giờ đây chúng là một phần phụ thuộc. Tôi sẽ cân nhắc các tùy chọn để xem nếu bạn thực sự cần tham khảoSystem.Web
, hoặc nếu có một tuyến đường khác để thực hiện những gì bạn muốn.