Wie Sie bemerkt haben, System.Web
handelt es sich um eine nicht unterstützte Bibliothek. Um zu referenzieren, müssen System.Web
Sie einen Anruf tätigen CREATE ASSEMBLY
. Es scheint, als hätten Sie das versucht, aber wie haben Sie auf den Standort von verwiesen System.Web.dll
? Haben Sie es an einen anderen Ort kopiert / eingefügt? SQL Server versucht, abhängige Assemblys am selben Speicherort zu finden. Mit anderen Worten, wenn Sie auf den Speicherort System.Web.dll
aller anderen abhängigen Bibliotheken verweisen, die sich im selben Verzeichnis befinden, sollte dies einwandfrei funktionieren. Hier ist ein Arbeitsbeispiel. Ich konnte sowohl die System.Web
Baugruppe als auch Ihre Baugruppe hinzufügen :
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
In den Clientnachrichten können Sie alle anderen Assemblys sehen, die SQL Server lädt. Beachten Sie jedoch, dass SQL Server für jede dieser Funktionen die folgende Warnung anzeigt:
Die Registrierung wird in der von SQL Server gehosteten Umgebung nicht vollständig getestet und nicht unterstützt. Wenn Sie diese Assembly oder das .NET Framework in Zukunft aktualisieren oder warten, funktioniert Ihre CLR-Integrationsroutine möglicherweise nicht mehr. Weitere Informationen finden Sie in den SQL Server-Onlinedokumenten.
System.Web
Schauen Sie sich die folgenden hinzugefügten Assemblys an , aber fügen Sie sie hinzu:
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
Es lohnt sich, sich darüber im Klaren zu sein, was hier tatsächlich passiert, und obwohl die anderen zusätzlichen Assemblys keine Möglichkeiten für T-SQL-Einstiegspunkte haben, sind sie jetzt eine Abhängigkeit. Ich würde die Optionen abwägen, um zu sehen, ob Sie wirklich referenzierenSystem.Web
müssen oder ob es einen anderen Weg gibt, um das zu erreichen, was Sie wollen.