使用 ExecuteNonQuery c# 时出错

Error while using ExecuteNonQuery c#

我在使用 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: The file or set 'Microsoft.SqlServer.BatchParser, version = 14.100.0.0, Culture = neutral, PublicKeyToken = 89845dcd8080cc91' or one of its company can not be loaded. The file can not be downloaded.
File name: 'Microsoft.SqlServer.BatchParser, version = 14.100.0.0, Culture = neutral, PublicKeyToken = 89845dcd8080cc91'

in System.Reflection.RuntimeAssembly.GetType (RuntimeAssembly set, string name, Boolean throwOnError, Boolean ignoreCase, ObjectHandleOnStack)
in System.Reflection.RuntimeAssembly.GetType (string name, Boolean throwOnError, Boolean ignoreCase)

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

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

Screenshot

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

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

该应用程序在我的 p.c 上运行完美,但是在部署它和 运行 在我们的应用程序服务器上时,我遇到了错误。

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

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

你应该在你的项目中添加缺少的dll,如果你发布你的项目,你必须把这个dll放到bin文件夹中。

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

经过多方尝试,终于弄明白除了class库,WPF应用程序还需要通过NuGet引用SMO库。

所以我刚刚通过 NuGet 在解决方案级别添加了 SMO 库,并为 class 库和 WPF 应用程序安装了它。瞧,它奏效了! (如果 Microsoft.SqlServer.BatchParserClient.dll 仅在 class 库中被引用,那么它似乎没有被正确引用,这很奇怪,但它解决了问题)

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

SMO 现在 deployed via NuGet. The NuGet page is here

"System Requirements" 下注明 -- "Some native binaries installed with the NetFx SMO libraries also require the VC 2013 runtime to be installed; that runtime is not included in the package."

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