Microsoft.SqlServer.Management.Smo.FailedOperationException(无法加载batchparser.dll)

时间:2012-06-26 16:55:17

标签: c# .net sql-server

我有C#项目,其中我使用Microsoft.SqlServer.Management.Smo,Microsoft.SqlServer.batchparser.dll和其他一些SqlServer dll。

当我在开发框上运行代码时,它工作正常,但是当我尝试在干净的机器(客户端的机器)上运行可执行文件时,它会失败并抛出此异常:

Microsoft.SqlServer.Management.Smo.FailedOperationException:数据库'testdb'的ExecuteNonQuery失败。 ---> System.IO.FileLoadException:无法加载文件或程序集“Microsoft.SqlServer.BatchParser.dll”或其依赖项之一。此应用程序无法启动,因为应用程序配置不正确。重新安装应用程序可能会解决此问题。 (HRESULT异常:0x800736B1)    at System.Reflection.RuntimeAssembly.GetType(RuntimeAssembly assembly,String name,Boolean throwOnError,Boolean ignoreCase,ObjectHandleOnStack type)    at System.Reflection.RuntimeAssembly.GetType(String name,Boolean throwOnError,Boolean ignoreCase)    在Microsoft.SqlServer.Management.Common.ServerConnection.GetStatements(String query,ExecutionTypes executionType,Int32& statementsToReverse)    在Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand,ExecutionTypes executionType)    在Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(StringCollection sqlCommands,ExecutionTypes executionType)    在Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery(StringCollection查询,ExecutionTypes executionType)    在Microsoft.SqlServer.Management.Smo.Database.ExecuteNonQuery(StringCollection sqlCommands,ExecutionTypes executionType)

现在,如果我在客户端的计算机上安装“Microsoft SQL Server 2012共享管理对象”,它就会开始工作。

我想确切地找出导致batchparser失败的依赖项。我从“Microsoft SQL Server 2012共享管理对象”安装程序中获取程序集并将它们复制到GAC中,但仍然出现相同的错误。

我的问题是: 1 - 如何找到batchparser.dll的依赖项并将其附加到我的安装程序? 2 - 我的应用程序之前是否可以安装sql server 2012的可重新分发包。

谢谢, 阿里

1 个答案:

答案 0 :(得分:0)

对于有同样问题的人,

安装Microsoft Visual C ++ Redistributable Package ATL Security Update为我解决了这个问题。

干杯,