5

Microsoft.SqlServer.Smo アセンブリを参照する小さなアプリがあります (そのため、接続できるサーバーとデータベースのリストをユーザーに表示できます)。

私のアプリケーションは、もともと Microsoft.SqlServer.Smo と Microsoft.SqlServer.ConnectionInfo を参照していました。私の開発ボックスでは、物事は期待どおりに機能しました。

アプリケーションをテスト マシンにインストールすると、System.IO.FileNotFoundExceptionが発生しました。メッセージの詳細には、次のものが含まれていました: ファイルまたはアセンブリを読み込めませんでした Microsoft.SqlServer.SmoEnum

上記のアセンブリに加えて、次のアセンブリを参照することで、最終的に問題を解決しました。

  • Microsoft.SqlServer.SmoEnum
  • Microsoft.SqlServer.SqlEnum
  • Microsoft.SqlServer.BatchParser
  • Microsoft.SqlServer.Replication

これらの追加のアセンブリのそれぞれをアプリケーションに含める (したがって、ユーザーのマシンにインストールする) 必要があることを誰かが確認できますか?

4

4 に答える 4

4

ターゲット マシンに 2 つの MSI ファイルをインストールする必要があります。

1) SQLSysClrTypes.msi [これは C# -> SMO GAC に必要です]

2) SharedManagementObjects.msi

SQL Server 2014 の場合は、こちらからダウンロードできます。

また、バージョンが正しいことを確認する必要があります。これらの 2 つのファイルは、ちょっとしたグーグル検索で見つけることができます。この方法では、何もローカルにコピーせず、GAC から解決されます。

これは古い質問であることは知っていますが、答えは満足のいくものではありませんでした。

于 2014-05-13T14:29:25.177 に答える
2

はい、含める必要があります。開発マシンにはおそらく SQL Server がインストールされており、これらのアセンブリがグローバル アセンブリ キャッシュに配置されます。ビルドするたびに、Visual Studio は GAC からそれらをプルするだけです。また、デプロイ先のコンピューターの GAC にもこれらのファイルがあることを前提としています。そうでない場合は、FileNotFound 例外をスローします。

于 2008-09-16T21:34:15.230 に答える
0

私にとって、この答えは真実ではないことがわかりました。上記の参照を追加しましたが、解決策はありません。最終的に、私は参照だけが必要であることがわかりました。

Microsoft.SqlServer.Smo

...および次の解決策:

SQLServerレプリケーションプロジェクトで「誤った形式のプログラムを読み込もうとしました」というエラーが表示されます

要約すると、IIS 6を有効にして、IISアプリプールで32ビットアプリケーションを有効にする必要がありました。これは、Win 7 x64を使用していたが、SQLx86をインストールしたためです。残念ながら、エラーメッセージをより具体的にすることはできません。

于 2011-04-27T17:58:26.017 に答える
0

JIT は実行時に外部アセンブリにリンクするため、コードを分析し、何を呼び出しているか、それらの呼び出しが何を呼び出しているかなどを確認しなければ、この質問に答えることはできません。

これを自分で分析したい場合は、必要なアセンブリのみを参照し、例外と内部例外から何が起こったかを学ぶのが最善の策です。

あなたが調べるべきもう1つのことは、言及した4つのアセンブリがGACにない理由です。確かにそうあるべきだと思われます。

于 2008-09-16T21:31:18.590 に答える