Ошибка при использовании 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: файл или набор '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 ответа

Решение

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

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

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

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

Установите SMO с помощью NuGet, затем установите распространяемые компоненты VC++ 2013.

SMO теперь развертывается через NuGet. Страница NuGet находится здесь.

Отмечено в разделе "Системные требования" - "Некоторые встроенные двоичные файлы, установленные с библиотеками NetFx SMO, также требуют установки среды выполнения VC 2013; эта среда выполнения не включена в пакет".

Таким образом, после установки SMO ​​через NuGet вручную установите распространяемые компоненты VC++ для архитектуры вашего кода (x86 / x64); это зависимость, на которую полагается Microsoft.SqlServer.BatchParserClient.dll.

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

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

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

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

Другие вопросы по тегам