2017-07-24 6 views
1

I Befehl:SQL Server CREATE ASSEMBLY

CREATE ASSEMBLY [xxxx] from 'my dll path ' 
WITH PERMISSION_SET = UNSAFE; 

aber ich erhalte eine Fehlermeldung:

system.web, Version = 4.0.0.0 nicht

gefunden Warum muss ich brauche eine .net Framework dll? Ich verstehe nicht.

Der SQL Server hat das .net Framework installiert.

+1

'CREATE ASSEMBLY' erstellt ein Datenbankobjekt für eine **. NET ** Assembly - daher benötigen Sie natürlich das in SQL Server integrierte .NET Framework. Aber diese SQL CLR enthält ** nicht ** die 'System.Web'-Assembly, die hauptsächlich Webformulare-basierte GUI-Steuerelemente enthält - nichts, was Sie wirklich in SQL Server-Code benötigen. Aber wie der Fehler angibt - die Assembly, die Sie versuchen, in SQL Server zu bekommen * offensichtlich * verweist diese 'System.Web' Abhängigkeit - loswerden und Sie sollten in Ordnung sein –

+0

Vielen Dank, es ist mir jetzt klar – Ian

Antwort

2

Der SQL Server-interne CLR-Host (d. H. SQLCLR) ist eine stark eingeschränkte Umgebung. Es ist nicht so, als würde man den CLR-Host des Betriebssystems verwenden (dh Konsolen-Apps und Windows/Desktop-Apps, was die meisten Programmierer gewohnt sind) und ist näher an der Erstellung einer Web-App, wo es geteilte Ressourcen gibt und keine Dinge wie UI benutzt Funktionalität. Es gibt eine kurze Liste von Bibliotheken, die in der SQL Server-CLR enthalten sind: Supported .NET Framework Libraries. Andere .NET Framework-Bibliotheken, z. B. System.Web, müssten manuell geladen werden, wenn sie überhaupt geladen werden können. Es ist im Allgemeinen am besten, solche Dinge zu vermeiden, da Sie dabei leicht in Schwierigkeiten geraten können. Weitere Informationen zum Arbeiten mit SQLCLR im Allgemeinen finden Sie in der Artikelserie, die ich zu diesem Thema in SQL Server Central geschrieben habe (zum Lesen von Inhalten auf dieser Website ist eine kostenlose Registrierung erforderlich): Stairway to SQLCLR.

In Ihrem Fall, wenn Sie auf eine Webseite oder Web-Service verbinden müssen, sind Sie besser dran mit HttpWebRequest und HttpWebResponse, wie sie in den unterstützten Bibliotheken enthalten sind und erfordern nur EXTERNAL_ACCESS und nicht UNSAFE.

+0

Vielen Dank du, es ist mir jetzt klar – Ian

Verwandte Themen