Как вы заметили, System.Web
это неподдерживаемая библиотека. Для ссылки System.Web
вам нужно будет позвонить на CREATE ASSEMBLY
. Кажется, вы пробовали это, но как вы указали местоположение System.Web.dll
? Вы скопировали / вставили его в другое место? SQL Server попытается найти зависимые сборки в том же месте. Другими словами, если вы ссылаетесь на расположение System.Web.dll
всех других зависимых библиотек, находящихся в одном каталоге, все должно работать нормально. Вот рабочий пример. Я смог добавить как System.Web
сборку, так и вашу сборку:
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
Вы можете видеть из сообщений клиента все другие сборки, которые загружает SQL Server. Но обратите внимание, SQL Server отображает следующее предупреждение для каждого из них:
Ваша регистрация не полностью протестирована в среде, размещенной на SQL Server, и не поддерживается. В будущем, если вы обновите или обслужите эту сборку или .NET Framework, ваша процедура интеграции CLR может перестать работать. Пожалуйста, обратитесь к электронной документации по SQL Server для получения более подробной информации.
Точно так же, но добавляя System.Web
, взгляните на следующие сборки, которые добавляются:
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
Стоит помнить о том, что на самом деле здесь происходит, и хотя другие дополнительные сборки не имеют путей для точек входа T-SQL, они теперь являются зависимостью. Я бы взвесил варианты, чтобы увидеть, нужно ли вам ссылатьсяSystem.Web
или есть другой путь, чтобы выполнить то, что вы хотите.