2010-11-04 6 views
5

esecuzione di questo comando:Perché non posso registrare System.Web in SQL Server 2008?

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

mi dà questo errore:

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.

... questo suona un po 'sciocco. Sembra che SQL Server pensi che l'assembly System.Web faccia riferimento a se stesso. Come posso risolvere questo?

+1

using System.Web dalle procedure SQLCLR è l'unico modo sicuro per congelare il vostro SQL servire r. Usa un processo esterno. –

+0

Stiamo usando WCF (di cui System.Web è una dipendenza), che funziona bene sulla nostra altra macchina di sviluppo. –

+0

Qual è il tuo punto di registrazione della dll gestita e di sistema (non personalizzata) da SQL Server non gestito (e anche non personalizzato)? –

risposta

0

Risulta che System.web.dll non è supportato per questo. In effetti, si è scoperto che caricare DLL in SQL Server come questo (per CLR) era una cattiva idea su molti livelli (uno dei quali era il supporto 64/32-bit tra le distribuzioni).

+0

CREATE ASSEMBLY [system.web] DA 'C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ system.web.dll' WITH PERMISSION_SET = non sicuro - EXTERNAL_ACCESS; – elle0087

0

Sembra che sia necessario installare il framework .Net 2.0 sul server del database.

Inoltre, non aggiungere direttamente un riferimento a System.Web.dll. L'altro codice CLR personalizzato dovrebbe fare riferimento a questo. (Oppure, se non si dispone di codice .Net personalizzato, è necessario creare un progetto .Net personalizzato per interfacciarsi nell'assembly System.Web.)

+0

. È stato installato .NET 2.0. –

+0

Bel ricordo! Non ricordo quale sia stata la mia macchina installata da 11 mesi! – Richard

+0

Se un altro codice CLR .NET fa riferimento all'assembly * System.Web *, deve anch'esso essere registrato (creato) in SQL Server. –

7

Prova con Framework64 assemblee (SQL Server a 64 bit 2008)

CREATE ASSEMBLY

[System.Web] dal

'C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ System.Web.dll' con PERMISSION_SET = UNSAFE

GO

+0

Questo ha funzionato per me per un'istanza a 64 bit di SQL 2005 –

+0

anch'io, funziona perfettamente! – elle0087

Problemi correlati