Не удалось загрузить Microsoft.SqlServer.BatchParser или одну из его зависимостей

Я знаю, что этот вопрос задавался много раз, и я нашел много информации в Google относительно этой проблемы, но я все еще не могу решить проблему, которая существует на моем ПК DEV :(
I have that ugly error message on every page

Не удалось загрузить файл или сборку Microsoft.SqlServer.BatchParser

Я установил коллекцию объектов управления Microsoft SQL Server 2005, как советовали многие интернет-ресурсы, но это не помогло.

Затем я попытался установить объекты управления Microsoft SQL Server 2008, но он говорит, что установить его нельзя, поскольку уже существует более новая версия (у меня установлен SQL Server 2008).

Затем я пошел в GAC и обнаружил следующие строки:

Microsoft.SqlServer.BatchParser, версия = 10.0.0.0, культура = нейтральная, PublicKeyToken = 89845dcd8080cc91, процессор архитектуры = AMD64

Microsoft.SqlServer.BatchParser, версия = 9.0.242.0, культура = нейтральная, PublicKeyToken = 89845dcd8080cc91, процессор архитектуры = AMD64

Microsoft.SqlServer.BatchParser, версия = 10.0.0.0, культура = нейтральная, PublicKeyToken = 89845dcd8080cc91, processorArchitecture = x86

Microsoft.SqlServer.BatchParser, версия = 9.0.242.0, культура = нейтральная, PublicKeyToken = 89845dcd8080cc91, processorArchitecture = x86

Microsoft.SqlServer.BatchParserClient, версия = 10.0.0.0, культура = нейтральная, PublicKeyToken = 89845dcd8080cc91, processorArchitecture = MSIL <- должна ли существовать версия 9.0.242.0?

Я уже потратил около полдня, чтобы найти решение без успеха, и было очень дерьмово работать с VS, когда IntelliSense не работает из-за этой ошибки.

У меня установлена VS 2010 SQL Express 2005 и SQL Server 2008 (см. Скриншот конфигурации) enter image description here

Пожалуйста, помогите мне решить это! Благодарю.

Ответ 1

ПРИМЕЧАНИЕ. Этот ответ предназначен для людей, которые используют MS SQL SMO (объекты управления) из программы на С#.

Я боролся с ошибкой, упомянутой в вопросе. Точная ошибка, которую я получил, была такова:

Не удалось загрузить файл или сборку "Microsoft.SqlServer.BatchParser.dll" или одну из ее зависимостей. Сбой процедуры инициализации библиотеки динамической компоновки (DLL). (Исключение из HRESULT: 0x8007045A)

В результате возникла проблема с запуском сборок .NET 2.0 в .NET 4.0 (или более поздней) CLR. Сборки SMO сервера SQL создаются на основе v2.0.50727 среды выполнения, поэтому в app.config (или web.config) требуется следующий раздел.

  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>

Подсказка была в этой ветке обсуждения на форумах MSDN.

Ответ 2

Вы видите эту ошибку в Management studio или Visual Studio? Когда вы получаете это сообщение об ошибке? Проблема может быть вызвана 32-битным или 64-битным взаимодействием, как указано в

956178 Сообщение об ошибке при запуске 32-разрядной версии SQL Server 2008 в версии Windows на базе Itanium: "Системе не удается найти указанный файл" http://support.microsoft.com/kb/956178/EN-US

Если вы используете 64-битную систему, убедитесь, что вы установили 64-битную версию обновленных объектов управления.

Ответ 3

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

1) удалите ненужную ссылку BatchParser (если она существует в web.config).
2) используется некоторая сторонняя dll, которая может вызвать приложение через эту ошибку.
3) Возможно, вы скопировали свою страницу aspx с другой страницы и забыли изменить раздел "inherits".

Ответ 4

Мне нужно было перейти в расширенные настройки пула приложений и установить "включить 32-разрядные приложения" в TRUE (я запускал 64-разрядный SQL Server).