web-dev-qa-db-ja.com

Microsoft.SqlServer.BatchParserまたはその依存関係の1つを読み込めませんでした

私はこの質問が何度も尋ねられたことを知っていて、この問題に関してGoogleで多くの情報を見つけましたが、それでも私のDEV PCに存在する問題を解決できません:(
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、processorArchitecture = AMD64

Microsoft.SqlServer.BatchParser、Version = 9.0.242.0、Culture = neutral、PublicKeyToken = 89845dcd8080cc91、processorArchitecture = AMD64

Microsoft.SqlServer.BatchParser、バージョン= 10.0.0.0、カルチャ=ニュートラル、PublicKeyToken = 89845dcd8080cc91、processorArchitecture = x86

Microsoft.SqlServer.BatchParser、Version = 9.0.242.0、Culture = neutral、PublicKeyToken = 89845dcd8080cc91、processorArchitecture = x86

Microsoft.SqlServer.BatchParserClient、Version = 10.0.0.0、Culture = neutral、PublicKeyToken = 89845dcd8080cc91、processorArchitecture = MSIL<-バージョン9.0.242.0が存在する必要があります?

私は既に約半日かけて解決策を見つけることに成功していませんでしたが、そのエラーのためにIntelliSenseが機能しない場合、VSでの作業は非常に不安定です。

VS 2010 SQL Express 2005およびSQL Server 2008がインストールされています(構成のスクリーンショットを参照) enter image description here

この依存関係の問題はどのように解決できますか?

14
Alex Dn

注:この回答は、C#プログラムからMS SQL SMO(管理オブジェクト)を使用している人を対象としています。

私は質問で言及されたエラーに苦労していました。私が得た正確なエラーはこれでした:

ファイルまたはアセンブリ 'Microsoft.SqlServer.BatchParser.dll'またはその依存関係の1つを読み込めませんでした。ダイナミックリンクライブラリ(DLL)の初期化ルーチンが失敗しました。 (HRESULTからの例外:0x8007045A)

.NET 4.0(またはそれ以上)のCLR内で.NET 2.0アセンブリを実行すると問題が発生しました。 SQLサーバーのSMOアセンブリはランタイムのv2.0.50727に対してビルドされているため、app.config(またはweb.config)に次のセクションが必要です。

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

ヒントは、MSDNフォーラムの このディスカッションスレッド にありました。

6

Management StudioまたはVisual Studioでこのエラーが発生しましたか?このエラーメッセージはいつ表示されますか?この問題は、32ビットと64ビットの相互作用が原因で発生する可能性があります。

956178 ItaniumベースバージョンのWindowsで32ビットバージョンのSQL Server 2008を実行すると、エラーメッセージ:「指定されたファイルが見つかりません」 http://support.Microsoft.com/kb/956178/EN-US

64ビットシステムを使用している場合は、更新された管理オブジェクトの64ビットバージョンがインストールされていることを確認してください。

5
Ramu

visual Studio経由でアプリケーションを実行しているときに、このエラーが発生する必要があります。私は過去にこのエラーを経験しましたが、次のような回避策の後に解決されました

1)BatchParserの不要な参照を削除します(web.configに存在する場合)。
2)いくつかのサードパーティdllが使用されているため、アプリケーションでこのエラーが発生する可能性があります。
3)他のページからaspxページをコピーして、「継承」セクションを変更するのを忘れた可能性があります。

3
NG.

アプリケーションプールの詳細設定に移動して、「32ビットアプリケーションを有効にする」をTRUEに設定する必要がありました(64ビットSQL Serverを実行していました)。

2

私はこれがかなり古い質問であることを知っていますが、これが誰かを助けるために、NugetMicrosoft.SqlServer.SqlManagementObjectsアプリケーション(v150.18208.0)でC#を使用しています。 ServerConnection.ConnectionContext.ExecuteNonQueryを使用しようとするコードに到達すると、エラーが発生しました。

"ファイルまたはアセンブリ 'Microsoft.SqlServer.BatchParser、Version = 15.100.0.0、Culture = neutral、PublicKeyToken = 89845dcd8080cc91'またはその依存関係の1つを読み込めませんでした。指定されたファイルが見つかりません。": "Microsoft.SqlServer.BatchParser 、Version = 15.100.0.0、Culture = neutral、PublicKeyToken = 89845dcd8080cc91 "

これは、Nugetパッケージで修正される予定のバグです。

Microsoft.SqlServer.BatchParserのv15.0.600.33をGACに手動で追加して、エラーを回避しました。 C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\Extensions\Microsoft\SQLCommon\150dllを見つけました。このパスは、Visual Studioのインストールによって異なる場合があります。

配布していて、ユーザーがこれをGACに追加する必要がない場合は、C#プロジェクトの参照としてdllを含めます。

1
tmwoods

Nugetから最新のSMO取得を使用している場合は、同様の問題が発生する可能性があります。

ファイルまたはアセンブリ 'Microsoft.SqlServer.BatchParser、Version = 15.100.0.0、Culture = neutral、PublicKeyToken = 89845dcd8080cc91'またはその依存関係の1つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。

またはバージョン番号を知らせずにメッセージ

ファイルまたはアセンブリ 'Microsoft.SqlServer.BatchParser.dll'またはその依存関係の1つを読み込めませんでした。指定されたモジュールが見つかりませんでした。

エラーがバージョン番号に記載されていないものである人にとっては、SMOを実行するためにvc2013ランタイムが必要だからです。 Microsoftの説明とダウンロードリンクはこちらをご覧ください。

上記のバージョン番号でエラーが発生している人のために、jendevが a repoこの説明 で提供されていることを確認しました。これは、コンパイル後にdllを複製して取得できます。 Visual Studioがない場合は、 my fork を実行してください。これには、正確なDLLが既に含まれています。

1
蕭為元

Installshieldプロジェクトをアップグレードした後(2008から2017)、このエラーが発生しました。

  • MSIを通じてインストールされる2008 SMOからアップグレードしました
  • それらをインストールするプロジェクトからMSIを削除しました
  • Nugetパッケージで提供される2017にアップグレード
  • インストールして、プロジェクトにすべてのdllを追加しました
  • パッケージが提供するDLLをinstallshieldに追加しました

Installshieldがプログラムをインストールした後、BatchPaser.dllについて文句を言ってすぐに爆発しました。

"ファイルまたはアセンブリ 'Microsoft.SqlServer.BatchParser、Version = 15.100.0.0、Culture = neutral、PublicKeyToken = 89845dcd8080cc91'またはその依存関係の1つを読み込めませんでした。指定されたファイルが見つかりません。": "Microsoft.SqlServer.BatchParser 、Version = 15.100.0.0、Culture = neutral、PublicKeyToken = 89845dcd8080cc91 "

しばらくデバッグした後、サイトからnugetパッケージをダウンロードしました。新しいSMOがパッケージに組み込まれているため、msiをインストールする代わりに、それらをGACに追加することはお勧めしません(ご参考までに)。

[ファイルとバージョン番号]ページで述べたように、SMOアセンブリをGACにインストールしないでください。これを行うと、それらのバージョンのSMOを使用する他のアプリケーション(SQL Server Management Studioなど)で問題が発生する可能性があります。

https://docs.Microsoft.com/en-us/sql/relational-databases/server-management-objects-smo/installing-smo?view=sql-server-ver15

https://docs.Microsoft.com/en-us/sql/relational-databases/server-management-objects-smo/files-and-version-numbers?view=sql-server-ver15

あなたがする必要があるのは、サイトからnugetパッケージをダウンロードしてruntimes/win-x86/nativeに移動することです。次に、BatchParser.dllが表示されます。それをプロジェクトのインストール/ディレクトリまたはどこにでも追加します。私のために働いて、エラーメッセージが私に言っていたこととほとんど同じでした。 Nugetはこのファイルをプロジェクトにインストールしませんでした。

https://www.nuget.org/packages/Microsoft.SqlServer.SqlManagementObjects/150.18178.

0
csharpersean