使用ExecuteNonQuery C#时出错

时间:2018-06-26 10:46:49

标签: c# sql executenonquery

使用ExecuteNonQuery时遇到问题。

这是我的代码:

var connString = @"Data Source=serwer01;Initial Catalog=PolsatCyfrowy;Integrated Security=True";

FileInfo file = new FileInfo("C:\\Users\\azbudniewek\\source\\repos\\UM2 V2\\UM2 V2\\scripts.sql");
string script = file.OpenText().ReadToEnd();

SqlConnection conn = new SqlConnection(connString);
Server server = new Server(new ServerConnection(conn));
server.ConnectionContext.ExecuteNonQuery(script);

这是错误:

  

System.IO.FileNotFoundException:无法加载文件或设置“ Microsoft.SqlServer.BatchParser,版本= 14.100.0.0,区域性=中性,PublicKeyToken = 89845dcd8080cc91”。该文件无法下载。
  文件名:'Microsoft.SqlServer.BatchParser,版本= 14.100.0.0,文化=中性,PublicKeyToken = 89845dcd8080cc91'

     

in System.Reflection.RuntimeAssembly.GetType(RuntimeAssembly设置,字符串名称,布尔型throwOnError,布尔型ignoreCase,ObjectHandleOnStack)
  在System.Reflection.RuntimeAssembly.GetType中(字符串名称,布尔throwOnError,布尔ignoreCase)

我读了很多有问题的解决方案,但无能为力。

我应该只安装另一个SQL Server吗?我已经在计算机上安装了SQL Server 2014,并且程序集所在的文件夹如下所示:

Screenshot

我应该怎么做才能避免这个问题?我想我的Assembly文件夹中应该有14.100.0.0版本,但不知道如何更新它。也许有人知道吗?

4 个答案:

答案 0 :(得分:0)

我有一个类似的问题。我有一个使用Microsoft.SqlServer.SqlManagementObjects nuget包的SMO应用程序。

该应用程序都可以在我的PC上完美运行,但是在部署它并在我们的应用程序服务器上运行时,却出现了错误。

无法加载文件或程序集“ Microsoft.SqlServer.BatchParser.dll”或其依赖项之一。找不到指定的模块。

要解决此问题,我需要再次针对x86平台构建项目。

答案 1 :(得分:0)

您应该在项目中添加丢失的dll,如果发布项目,则必须将此dll放入bin文件夹中。

enter image description here

答案 2 :(得分:0)

使用NuGet安装SMO,然后安装VC ++ 2013 Redistributables

SMO现在为deployed via NuGetNuGet page is here

"System Requirements"下有注释-“随NetFx SMO库一起安装的某些本机二进制文件也需要安装VC 2013运行时;该运行时不包含在软件包中。”

因此,在通过NuGet安装SMO之后,手动安装用于代码体系结构(x86 / x64)的VC ++可再发行组件;这是Microsoft.SqlServer.BatchParserClient.dll所依赖的依赖项。

答案 3 :(得分:-1)

我也遇到过类似的问题。在我的设置中,我有一个WPF应用程序,该应用程序使用一个类库,该类库又通过NuGet包引用Microsoft.SqlServer.SqlManagement对象(SMO)(版本140.17283.0)。

尝试了很多事情之后,最终发现除了类库之外,WPF应用程序还需要通过NuGet引用SMO库。

因此,我刚刚通过NuGet在解决方案级别添加了SMO库,并将其安装到类库以及WPF应用程序中。瞧,它奏效了!!! (如果Microsoft.SqlServer.BatchParserClient.dll仅在怪异的类库中被引用,而它却解决了该问题,则好像没有正确引用它)