2009-02-11 30 views
12

Ok, he fregado la tela, BOL, diversos foros y yo soy no más cercano a una respuesta ... es de esperar que gente fina puede echar una mano ...SQL Server SMO se queja de falta de DLL

Tenemos una docena de servidores SQL (unos 2k, algunos de 2005) en una red. Estoy usando objetos SMO en una aplicación .NET para obtener información estándar. Mi problema parece reducirse a una DLL faltante: Microsoft.SqlServer.BatchParser.dll. Sin embargo, esta DLL no viene con las otras DLL de SQL (Microsoft.SqlServer.ConnectionInfo.dll, Microsoft.SqlServer.Smo.dll, Microsoft.SqlServer.SmoEnum.dll, Microsoft.SqlServer.SqlEnum.dll, etc.) . También descargué el paquete de características SS2005 del sitio de Microsoft que incluye los objetos SMO, pero aún no tuve suerte.

El siguiente código funciona, a menos que elimine la línea que se comenta en la actualidad, en cuyo caso se produce el error a continuación:

protected void btnArchive_Click(object sender, EventArgs e) 
{ 
    ServerConnection conn = new ServerConnection("my_server"); 

    conn.LoginSecure = false; 
    conn.Login = "my_login"; 
    conn.Password = "my_password"; 

    Server s = new Server(conn); 
    Database d = s.Databases["my_database"]; 
    //Table tbl = d.Tables["my_table"]; 

    Response.Write(s.Name + " " + s.Information.RootDirectory + " " + d.CreateDate.ToShortDateString()); 
    conn.Disconnect(); 
} 

error: no puede cargar el archivo o ensamblado 'Microsoft.SqlServer.BatchParser , Versión = 9.0.242.0, Cultura = neutral, PublicKeyToken = 89845dcd8080cc91 'o una de sus dependencias. El sistema no puede encontrar el archivo especificado.

Nota, también he intentado esto desde SSIS usando VB.NET, el mismo comportamiento.

Cualquier pensamiento sería apreciado.

Gracias.

Respuesta

0

Para que entendamos correctamente el problema, Microsoft.SqlServer.BatchParser.dll no está instalado en la Caché de ensamblados global en su máquina de desarrollo. Si es así, puede comenzar con la reinstalación de .NET Framework (la versión del Framework al que está apuntando) para ver si eso resuelve el problema.

También puede intentar usar la herramienta de configuración de .NET Framework para ver si el ensamblaje está realmente presente en la memoria caché de ensamblaje global (GAC). Esta MSDN Article describe cómo usar esta herramienta.

(Una búsqueda en mi disco duro no devolvió el ensamblado Microsoft.SqlServer.BatchParser.dll aunque puedo verlo usando la herramienta de configuración de .NET Framework).

+0

Gracias por la respuesta. Sin embargo, no sé específicamente dónde se encuentra el Caché de la Asamblea Global, he buscado todo el disco y ese dll no existe. También he vuelto a instalar el último framework (3.5 SP1). –

+0

El GAC por lo general está en% windir% \ assembly – kristianp

6

¿Está ejecutando un sistema operativo x64 en su caja? Parece que hay problemas con BatchParser.dll en entornos de 64 bits; por lo general, se recomienda descargar el SMO x64 Package (SQLServer2005_XMO_x64.msi) de Microsoft.

Ver información sobre esto here.

9

Pude ejecutar correctamente su código utilizando las versiones 10. * de los ensamblados "Microsoft.SqlServer.ConnectionInfo", "Microsoft.SqlServer.Management.Sdk.Sfc" y "Microsoft.SqlServer.Smo". Intente descargar el 2008 version of the SMO components, tal vez fue un error que han solucionado.

+3

Esto me funcionó. Añadiré, sin embargo, que en mi caso tuve que usar la versión de 32 bits porque mi Grupo de aplicaciones se estaba ejecutando con el modo de 32 bits habilitado. Tomó una eternidad para resolver el problema, así que espero que esto ayude a otra persona. – esteuart

+1

@esteuart necesita tener esto como su propia respuesta! horas más tarde, esto finalmente me salvó (para v 12.0.0.0) – SumGuy

0

viene como parte del asesor de actualización 2005 u 2008.

3

Necesita instalar siguiente paquete para resolver el problema, he resuelto este problema dos veces con este paquete espero que funcione para todo el mundo también ...

Microsoft SQL Server 2005 objetos de administración de la colección La colección de objetos de gestión paquete incluye varios elementos clave de la API de administración de SQL Server 2005, incluidos los objetos de administración de análisis (AMO), los objetos de administración de replicación (RMO) y los objetos de administración de SQL Server (SMO).Los desarrolladores y administradores de bases pueden usar estos componentes para administrar mediante programación de SQL Server 2005.

Usted puede obtener de Feature Pack para Microsoft SQL Server 2005 - Diciembre 2008 desde el sitio de Microsoft

http://www.microsoft.com/en-us/download/details.aspx?id=11988

Pero la ubicación del enlace de la página cambia de descarga siempre, si no encuentra recursos, puede descargarlos de mi blog también.

que también han proporcionado algunos consejos y recursos sobre esto en mi blog si quieres http://rndp-android.blogspot.com/p/missing-microsoftsqlservermanagementsdk.html

4

Sé que soy muy tarde a la fiesta aquí, pero esto sigue siendo el primer resultado cuando buscas en Google "batchparser smo ".

Al instalar SMO 2014 (12.0.x) algunos archivos DLL solo se instalan en el GAC. Para hacer que su aplicación funcione sin tener que instalar manualmente SMO en el servidor de destino, debe copiar estos archivos DLL con su aplicación. Aquí están los caminos de donde los obtuve.

C:\Program Files\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.ConnectionInfo.dll

C:\Program Files\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.Management.Sdk.Sfc.dll

C:\Program Files\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.Smo.dll

C:\Program Files\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.SmoExtended.dll

C:\Program Files\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.SqlEnum.dll

C:\Windows\assembly\GAC_64\Microsoft.SqlServer.BatchParser\12.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.BatchParser.dll

C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.BatchParserClient\12.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.BatchParserClient.dll

C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.SqlClrProvider\12.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.SqlClrProvider.dll

Para acceder a los archivos del GAC que tendrá que desactivar las ventanas visor incorporado en el uso de las instrucciones proporcionadas por this article.

Un extracto del artículo por conveniencia:

Open the registry editor and add/set the HKLM\Software\Microsoft\Fusion\DisableCacheViewer DWORD value: 1

+0

El dll de BatchParser finalmente causa este error: "Intenta cargar un ejecutable no verificable con correcciones (IAT con más de 2 secciones o una sección TLS). HRESULT: 0x80131019". – Jerther

+0

Horas después: podría deberse a una aplicación creada con cualquier CPU, pero con "Prefer 32 bits" activado. – Jerther

Cuestiones relacionadas