Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Die benutzerdefinierte SQL Server-CLR schlägt mit dem Fehler „Datei oder Assembly oder eine ihrer Abhängigkeiten konnte nicht geladen werden“ fehl. Die angegebene Datei wurde vom System nicht gefunden.

Was Sie versuchen, wird vom CLR-Host von SQL Server nicht unterstützt. Die CLR in SQL Server ist stark eingeschränkt, um eine Destabilisierung von SQL Server zu verhindern, da sie anders funktioniert als Apps, die auf dem Betriebssystem ausgeführt werden. Es gibt also nur eine sehr begrenzte Anzahl von DLLs, die unterstützt werden (d. h., deren Funktionsfähigkeit verifiziert wurde und die über Updates auf .NET hinweg garantiert funktionieren). WindowsBase gehört nicht dazu, also müssten Sie es manuell als UNSAFE laden in den SQL-Server. Aber das lässt Sie entweder mit dem Problem zurück, auf das Sie gestoßen sind, dass sich die Version im Haupt-GAC ändert (DLLs, die zwischen dem GAC und dem CLR-Host von SQL Server gemeinsam sind, müssen dieselbe Version haben), oder schlimmer noch, wenn die DLL „gemischt“ wird. (sowohl nicht verwaltetes C++ als auch verwalteter Code) und ist nicht mehr "rein". In diesem Fall wird die neue Version nicht geladen und die alte Version erhält den Fehler "Falsche Version", also haben Sie etwas zu tun.

Ausführlichere Informationen finden Sie in den folgenden Artikeln / Dokumentationen:

Diese Links stammen aus dem Abschnitt „Zusätzliche Lektüre“ eines Artikels, den ich geschrieben habe:Stairway to SQLCLR Level 5:Development (Using .NET within SQL Server) .

Weitere Informationen zum Arbeiten mit SQLCLR im Allgemeinen finden Sie auf meiner Website:SQLCLR-Info