使用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,并且程序集所在的文件夹如下所示:
我应该怎么做才能避免这个问题?我想我的Assembly文件夹中应该有14.100.0.0版本,但不知道如何更新它。也许有人知道吗?
答案 0 :(得分:0)
我有一个类似的问题。我有一个使用Microsoft.SqlServer.SqlManagementObjects nuget包的SMO应用程序。
该应用程序都可以在我的PC上完美运行,但是在部署它并在我们的应用程序服务器上运行时,却出现了错误。
无法加载文件或程序集“ Microsoft.SqlServer.BatchParser.dll”或其依赖项之一。找不到指定的模块。
要解决此问题,我需要再次针对x86平台构建项目。
答案 1 :(得分:0)
答案 2 :(得分:0)
SMO现在为deployed via NuGet。 NuGet 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
仅在怪异的类库中被引用,而它却解决了该问题,则好像没有正确引用它)