Como ha notado, System.Web
es una biblioteca no compatible. Para hacer referencia System.Web
, deberá llamar a CREATE ASSEMBLY
. Parece que lo intentaste, pero ¿cómo hiciste referencia a la ubicación de System.Web.dll
? ¿Lo copió / pegó en una ubicación diferente? SQL Server intentará ubicar ensamblados dependientes en la misma ubicación. En otras palabras, si hace referencia a la ubicación de System.Web.dll
todas las demás bibliotecas dependientes que viven en el mismo directorio, debería funcionar bien. Aquí hay un ejemplo de trabajo. Pude agregar tanto el System.Web
ensamblaje como tu ensamblaje:
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
Puede ver desde los mensajes del cliente todos los demás ensamblados que carga SQL Server. Pero tenga en cuenta que SQL Server muestra la siguiente advertencia para cada uno de estos:
no está completamente probado en el entorno alojado de SQL Server y no es compatible. En el futuro, si actualiza o da servicio a este ensamblado o .NET Framework, su rutina de integración CLR puede dejar de funcionar. Consulte los Libros en pantalla de SQL Server para obtener más detalles.
Del mismo modo, pero agregando System.Web
, eche un vistazo a los siguientes conjuntos que se agregan:
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
Vale la pena tener en cuenta lo que realmente está sucediendo aquí, y aunque los otros ensamblados adicionales no tienen formas para los puntos de entrada T-SQL, ahora son una dependencia. Consideraría las opciones para ver si realmente necesita hacer referenciaSystem.Web
, o si hay otra ruta para lograr lo que desea.