2010-10-20 39 views
16

Escribí una aplicación web asp.net que utiliza SMO contra SQL Server 2008 para poder ejecutar algunas secuencias de comandos DB. Se hace referencia a estos montajes (en el directorio C: \ Archivos de programa \ Microsoft SQL \ 100 \ SDK \ Assemblies carpeta del servidor):No se puede encontrar microsoft.sqlserver.batchparser.dll

Microsoft.SqlServer.ConnectionInfo 
Microsoft.SqlServer.Management.Sdk.Sfc 
Microsoft.SqlServer.Smo 

El microsoft.sqlserver.batchparser.dll no se encuentra en esta carpeta. Localmente (máquina de 32 bits, IIS7) No tengo ningún problema.

Cuando publico la aplicación a mi proveedor de alojamiento (discountasp.net, SQL Server 2008, IIS 7, 32 bits también), me sale este error:

Could not load file or assembly 'Microsoft.SqlServer.BatchParser, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system cannot find the file specified.

busqué mi máquina local y no puedo encuentra esta asamblea Sin embargo, funciona bien en esta máquina.

La herramienta "Informe de descubrimiento de Microsoft SQL Server 2008" informa que tengo v10.1.2531.0 instalado localmente.

Gracias

Respuesta

10

Para obtener esta DLL, tendrá que instalar los objetos de administración de Microsoft SQL Server 2008 (disponible en here). Ese dll en particular se instala en el GAC, por lo que probablemente no pueda encontrarlo mediante una búsqueda.

Como está utilizando un proveedor de hosting, parece que no lo tienen instalado. Sus opciones son conseguir que lo instalen ellos (lo que probablemente sea improbable) o implementar manualmente el dll (que puede estar en una base de licencia dudosa).

+0

Cuando intento instalar SMO, el instalador dice que ya tengo una versión más alta instalada. Como puedo hacer referencia a Microsoft.SqlServer.Smo desde mi proyecto, supongo que esto lo confirma. –

+1

@Nicolas: sí, lo tendrá instalado localmente.Sin embargo, no está instalado en su proveedor de alojamiento, de ahí el problema que está teniendo. – adrianbanks

+0

Llamar a gacutil/l me muestra que el batchparser está en el GAC, sin embargo, el cuadro de diálogo de referencias en VS2010 no me lo mostrará. Pasar manualmente al GAC para extraer el ensamblaje y está en la carpeta GAC_32, no en GAC_MSIL. De todos modos, agregar esto a Reflector muestra que tiene una referencia a Microsoft.VisualC .... bastante extraño. –

2

También necesita tener los componentes SMO instalados en su proveedor de hosting. Puede descargarlos here.

+0

Bueno, obviamente no puedo instalar un msi en un host compartido. Permítanme llamarlos para saber lo que dicen sobre SMO. –

+0

discountasp no lo instalará, ¿significa que tengo que extraer el dll + su dependencia (Microsoft.VisualC) y ponerlo en mi carpeta bin? –

5

primer lugar es necesario habilitar la exploración del GAC carpeta:

1. ir al Registro Editor (RUN> regedit)
2. Vaya a HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Fusión
3. Haga clic derecho Fusión> NUEVO> DWORD
4. Tipo DisableCacheViewer
5. Haga doble clic DisableCacheViewer
6. valor ajustado a 1 012
entonces usted puede encontrar aquí
C: \ Windows \ assembly \ GAC_32 \ Microsoft.SqlServer.BatchParser \ 10.0.0.0__89845dcd8080cc91

0

Se puede instalar la característica de conexión de cliente de SQL desde el DVD de SQL Server también. Lo instalé así como los componentes SDK para resolver este problema al instalar SolarWinds.

0

Tenía instalado SMO x64, pero se requería SMO x86 en el servidor de compilación.

Cuestiones relacionadas