C# 使用ExecuteOnQuery c时出错#

C# 使用ExecuteOnQuery c时出错#,c#,sql,executenonquery,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.

使用
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,version=14.100.0.0,Culture=neutral,PublicKeyToken=89845dcd8080cc91”或其公司之一。无法下载该文件。
文件名:“Microsoft.SqlServer.BatchParser,版本=14.100.0.0,区域性=中性,PublicKeyToken=89845DCD80CC91”

在System.Reflection.RuntimeAssembly.GetType中(RuntimeAssembly集合、字符串名称、布尔throwOnError、布尔ignoreCase、ObjectHandleOnStack)
在System.Reflection.RuntimeAssembly.GetType中(字符串名称、布尔throwOnError、布尔ignoreCase)

我读了很多有问题的解决方案,但什么也做不了

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


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

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

该应用程序在我的PC上运行得非常完美,但是当它部署到我们的应用程序服务器上并运行时,我发现了一个错误

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


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

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

该应用程序在我的PC上运行得非常完美,但是当它部署到我们的应用程序服务器上并运行时,我发现了一个错误

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


要解决此问题,我需要重新构建针对x86平台的项目。

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


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


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

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


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

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

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

所以我只是在解决方案级别通过NuGet添加了SMO库,并为类库和WPF应用程序安装了它。瞧,成功了!!!(如果只在类库中引用Microsoft.SqlServer.BatchParserClient.dll,则该
似乎没有正确引用,这很奇怪,但解决了问题)

使用NuGet安装SMO,然后安装VC++2013可再发行文件 SMO现在是。这个

注意--“与NetFx SMO库一起安装的某些本机二进制文件也需要安装VC 2013运行时;该运行时不包含在包中。”

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

使用NuGet安装SMO,然后安装VC++2013可再发行文件 SMO现在是。这个

注意--“与NetFx SMO库一起安装的某些本机二进制文件也需要安装VC 2013运行时;该运行时不包含在包中。”


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

为什么不使用标准SQL Server客户端相关类?使用
SQLCommand
intead
Microsoft.SqlServer.Management.Common.ServerConnection
。顺便说一句,关于microsoft连接到SQL Server的信息非常好。我认为dll应该存在于文件夹C:\Program Files(x86)\microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\microsoft\SQLCommon\130中。您需要将它从那里复制到这里。C:\Program Files(x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\Web是什么让您“认为”程序集在您的文件夹中?请检查一下。通过上下文菜单,您可以检查设置的版本。如果文件不存在,请在编辑器中检查部件设置。在assemlby/dll上的VS上下文菜单的首选项中,将“本地副本”设置为true。这样就可以将副本创建到构建文件夹中,而不是使用本地副本,而本地副本可能不存在于另一台计算机上。这违反了“保持简单”原则。如果你没有做一些有趣的事情,你应该考虑删除这些引用,并使用常规<代码> Stask.Distal.SqliClient .SqLCuths。