ご指摘のとおり、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 Books Onlineを参照してください。
同様に、を追加して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
参照する必要があるかどうか、または目的を達成するための別のルートがあるかどうかを確認するために、オプションを比較検討します。