2010-11-04 11 views
5

ejecución de esta orden:¿Por qué no puedo registrar System.Web en SQL Server 2008?

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

me da este error:

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.

... esto suena un poco tonto. Parece que SQL Server piensa que el ensamblado System.Web hace referencia a sí mismo. ¿Cómo puedo arreglar esto?

+1

el uso de procedimientos System.Web SQLCLR es la única forma segura de congelar su SQL servir r. Use un proceso externo. –

+0

Estamos usando WCF (del cual System.Web es una dependencia), que funciona bien en nuestra otra máquina de desarrollo. –

+0

¿Qué sentido tiene registrar dll administrado y de sistema (no personalizado) desde SQL Server no administrado (y también no personalizado)? –

Respuesta

0

Desactiva System.web.dll no es compatible con esto. De hecho, resultó que cargar archivos DLL en SQL Server de esta manera (para CLR) era una mala idea en muchos niveles (uno de los cuales era el soporte de 64/32 bits entre implementaciones).

+0

CREAR ENSAMBLE [system.web] FROM 'C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ system.web.dll' WITH PERMISSION_SET = inseguro - EXTERNAL_ACCESS; – elle0087

0

Parece que necesita instalar .Net 2.0 framework en su servidor de base de datos.

Además, no agregaría directamente una referencia a System.Web.dll. Su otro código CLR personalizado debe hacer referencia a eso. (O bien, si no tiene un código .Net personalizado, debe crear un proyecto .Net personalizado para la interfaz en el ensamblado System.Web)

+0

.Net 2.0 fue instalado. –

+0

¡Buena memoria! ¡No puedo recordar qué máquina había instalado desde hace 11 meses! – Richard

+0

Si otro código .NET CLR hace referencia al ensamblado * System.Web *, también debe registrarse (crearse) en SQL Server. –

7

Pruebe con Framework64 asambleas (servidor SQL de 64 bits 2008)

CREATE ASSEMBLY

[System.Web] de

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

GO

+0

Esto funcionó para mí para una instancia de 64 bits de SQL 2005 –

+0

yo también, ¡funciona bien! – elle0087

Cuestiones relacionadas