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:
- SQL Server 2005 unterstützt .NET Framework Bibliotheken
- Von SQL Server 2008 / 2008 R2 / 2012 / 2014 unterstützte .NET Framework-Bibliotheken
- Supportrichtlinie für ungetestete .NET Framework-Assemblys in der von SQL Server CLR gehosteten Umgebung
- Fehlermeldung beim Ausführen einer CLR-Routine oder Verwenden einer Assembly in SQL Server:„Assembly in host store has a different signature than assembly in GAC. (Exception from HRESULT:0x80131050)“
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