언급했듯이 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
있는지 또는 당신이 원하는 것을 성취 할 수있는 다른 길이 있는지 알아보기 위해 옵션을 평가할 것 입니다.