2010-11-04 6 views
5

Uruchomienie tego polecenia:Dlaczego nie mogę zarejestrować System.Web w SQL Server 2008?

CREATE ASSEMBLY 
[System.Web] from 
'C:\Windows\Microsoft.NET\Framework\v2.0.50727\system.web.dll' 
with permission_set = UNSAFE 

daje mi ten błąd:

Msg 10300, Level 16, State 2, Line 1

Assembly 'System.Web' references assembly 'system.web, version=2.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a.', which is not present in the current database. SQL Server attempted to locate and automatically load the referenced assembly from the same location where referring assembly came from, but that operation has failed (reason: version, culture or public key mismatch). Please load the referenced assembly into the current database and retry your request.

... brzmi to trochę głupie. Wygląda na to, że SQL Server uważa, że ​​zestaw System.Web odwołuje się do siebie. Jak mogę to naprawić?

+1

Korzystanie System.Web z procedurami SQLCLR jest jeden pewny sposób, aby zatrzymać swoją SQL służyć r. Użyj zewnętrznego procesu. –

+0

Używamy WCF (z którego SystemWeb jest zależnością), który działa dobrze na naszej drugiej maszynie programistycznej. –

+0

Jaki jest twój cel rejestrowania zarządzanej i systemowej (niestandardowej) biblioteki dll z niezarządzanego (a także niestandardowego) serwera SQL? –

Odpowiedz

0

Okazało się, że System.web.dll nie jest do tego obsługiwany. W rzeczywistości okazało się, że ładowanie bibliotek DLL do SQL Server w ten sposób (dla CLR) było złym pomysłem na wielu poziomach (jednym z nich było 64/32-bitowe wsparcie między wdrożeniami).

+0

UTWÓRZ ZESPÓŁ [system.web] FROM 'C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ system.web.dll' Z PERMISSION_SET = niebezpieczny - EXTERNAL_ACCESS; – elle0087

0

Wygląda na to, że musisz zainstalować środowisko .Net 2.0 na serwerze bazy danych.

Ponadto, nie dodaję bezpośrednio odniesienia do System.Web.dll. Twój inny niestandardowy kod CLR powinien się do tego odwoływać. (Lub, jeśli nie masz niestandardowego kodu .Net, powinieneś utworzyć niestandardowy projekt .Net do interfejsu w zestawie System.Web.)

+0

. Net 2.0 został zainstalowany. –

+0

Ładna pamięć! Nie pamiętam, co moja maszyna zainstalowała od 11 miesięcy! – Richard

+0

Jeśli inny kod .NET CLR odwołuje się do zespołu * System.Web *, to również musi zostać zarejestrowany (utworzony) w SQL Server. –

7

Spróbuj z Framework64 zespołów (64-bitowy serwer SQL 2008)

TWORZENIE MONTAŻ

[system.Web] z

„C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ System.Web.dll” z permission_set = UNSAFE

GO

+0

To działało dla mnie dla 64-bitowej instancji SQL 2005 –

+0

ja też działa dobrze! – elle0087