To, co próbujesz zrobić, nie jest obsługiwane przez hosta CLR programu SQL Server. Środowisko CLR w programie SQL Server jest mocno ograniczone, aby zapobiec destabilizacji programu SQL Server, ponieważ działa inaczej niż aplikacje działające w systemie operacyjnym. Tak więc istnieje bardzo ograniczony zestaw bibliotek DLL, które są obsługiwane (tj. zweryfikowane pod kątem działania i gwarantowane, że będą działać w ramach aktualizacji .NET). WindowsBase nie jest jednym z nich, więc musisz załadować go ręcznie jako UNSAFE
na serwer SQL. Ale to pozostawia cię albo problem, który napotkałeś w wersji w głównej zmianie GAC (pliki DLL, które są wspólne dla hosta CLR GAC i SQL Server muszą być tej samej wersji), albo gorzej, jeśli biblioteka DLL stanie się „mieszana” (zarówno niezarządzany C++, jak i kod zarządzany) i nie jest już „czysty”. W takim przypadku nowa wersja nie zostanie załadowana, a stara wersja otrzymuje błąd „niewłaściwa wersja”, więc masz trochę pracy do wykonania.
Więcej szczegółowych informacji można znaleźć w następujących artykułach/dokumentacji:
- Obsługiwane przez SQL Server 2005 .NET Framework Biblioteki
- Obsługiwane biblioteki .NET Framework dla SQL Server 2008/2008 R2/2012/2014
- Zasady pomocy technicznej dla nieprzetestowanych zestawów .NET Framework w środowisku SQL Server hostowanym przez CLR
- Komunikat o błędzie podczas wykonywania procedury CLR lub używania zestawu w SQL Server:„Zespół w magazynie hosta ma inny podpis niż zestaw w GAC. (Wyjątek od HRESULT:0x80131050)”
Ten zestaw linków pochodzi z sekcji „Dodatkowe czytanie” artykułu, który napisałem:Schody do SQLCLR Poziom 5:Programowanie (Użycie .NET w SQL Server) .
Aby uzyskać więcej informacji na temat ogólnej pracy z SQLCLR, odwiedź moją witrynę:Informacje o SQLCLR