Ошибка при использовании ExecuteNonQuery c # - PullRequest
0 голосов
/ 26 июня 2018

У меня проблема при использовании 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, Culture = нейтральный, PublicKeyToken = 89845dcd8080cc91' или одна из его компаний не могут быть загружены. Файл не может быть загружен.
Имя файла: 'Microsoft.SqlServer.BatchParser, версия = 14.100.0.0, культура = нейтральная, PublicKeyToken = 89845dcd8080cc91'

в System.Reflection.RuntimeAssembly.GetType (набор RuntimeAssembly, имя строки, логическое значение throwOnError, логическое значение ignoreCase, ObjectHandleOnStack)
в System.Reflection.RuntimeAssembly.GetType (имя строки, логическое значение throwOnError, логическое значение ignoreCase)

Я прочитал много решений с проблемой, но ничего не могу сделать.

Должен ли я просто установить другой SQL Server? Я установил SQL Server 2014 на свой компьютер, и папка со сборкой выглядит следующим образом:

Скриншот

Что я должен сделать, чтобы избежать этой проблемы? Я думаю, что у меня должна быть версия 14.100.0.0 в папке сборки, но я не знаю, как ее обновить. Может кто знает?

Ответы [ 3 ]

0 голосов
/ 26 июня 2018

Вы должны добавить отсутствующую dll в свой проект, и если вы публикуете свой проект, вы должны поместить эту dll в папку bin.

enter image description here

0 голосов
/ 28 ноября 2018

Я столкнулся с подобной проблемой. В моей настройке у меня есть приложение WPF, которое использует библиотеку классов, которая в свою очередь ссылается на объекты Microsoft.SqlServer.SqlManagement (SMO) (версия 140.17283.0) через пакет NuGet.

Попробовав много вещей, наконец-то выяснил, что в дополнение к библиотеке классов приложение WPF также должно ссылаться на библиотеку SMO через NuGet.

Поэтому я просто добавил библиотеку SMO через NuGet на уровне решения и установил ее для библиотеки классов, а также для приложения WPF. Вуаля, это сработало !!! (Похоже, что на Microsoft.SqlServer.BatchParserClient.dll неправильно ссылаются, если на него ссылаются только в библиотеке классов, что странно, но это решило проблему)

0 голосов
/ 26 июня 2018

У меня была похожая проблема. У меня есть приложение SMO, которое использует пакет nuget Microsoft.SqlServer.SqlManagementObjects.

Приложение отлично работает на моем компьютере, однако, когда дело дошло до его развертывания и запуска на нашем сервере приложений, я получал сообщение об ошибке.

Не удалось загрузить файл или сборку «Microsoft.SqlServer.BatchParser.dll» или одну из ее зависимостей. Указанный модуль не найден.

Чтобы решить эту проблему, мне нужно было собрать проект заново для платформы x86.

...