5

SQL Server データベースからデータを取得し、そのデータを含む Word ドキュメントを生成する C# プログラムを開発しました。Windows Server 2003 ボックスで SSIS ジョブの一部として実行するようにプログラムをセットアップしました。プログラムは、管理者権限を持たないユーザー SQLSVC として実行されます。SQLSVC としてログインしてプログラムを実行すると、正しく実行されます。ただし、プログラムが SSIS ジョブとして自動的に実行されると、次のコード行でフリーズします。

Microsoft.Office.Interop.Word.Application word =
    new Microsoft.Office.Interop.Word.Application();

プロセスを強制終了すると、次のエラー メッセージが生成されます。

Error Message: System.Runtime.InteropServices.COMException (0x80080005):
Retrieving the COM class factory for component
with CLSID {000209FF-0000-0000-C000-000000000046}
failed due to the following error: 80080005.
   at IepGlance.Program.CreateNewIepFiles(Dictionary`2
       iepDictionary, EasyIepDataContext dbContext)
   at IepGlance.Program.Main(String[] args)

私が把握できる限り、問題は DCOM 権限にあります。dcomcnfg を使用して、可能なすべての DCOM 権限をユーザー SQLSVC に追加しましたが、これは役に立ちませんでした。他に考えられる解決策はありますか?

4

4 に答える 4

8

プログラム「dcomcnfg -32」を実行します。(64 ビットで実行されている場合、Word および Excel コンポーネントは見つかりません) 「Console Root/Component Services/Computer/My Computer/DCOM Config/」に移動します。Microsoft Word および Excel を検索し、プロパティを選択します。[セキュリティ] に移動し、[構成アクセス許可] の下の [カスタマイズ] を選択します (必要に応じて、他のアクセス許可も変更する必要があるかもしれませんが、私はその必要はありませんでした)。 「アイデンティティ」を選択し、「インタラクティブなユーザー」を選択します。

于 2014-12-01T00:12:57.760 に答える
4

ここにいくつかのことがあります。

まず、SOに関するこのスレッドが役立つ場合があります。

次に、 Microsoftは、Office を無人プロセスで自動化すると、「合併症」が発生する可能性があると警告しています。オチは次のとおりです(元の太字):

Office が不安定な動作を示したり、/または、この環境で Office を実行するとデッドロックが発生します。

リンクされた記事では、回避策について説明しています。

于 2009-11-06T16:56:56.920 に答える
3

64ビットマシンを使用しているか、32ビットOfficeか64ビットOfficeかによって異なりますが、どちらのシナリオでも、[管理ツール]> [コンポーネントサービス]に移動し、DCOM構成で'Microsoftを見つける必要があります。 Word 97-2003 Document'を実行し、アプリプールを実行しているユーザーに'identity'を設定します。または単にセキュリティを無効にします。

32ビットOfficeで64ビットサーバーを実行している場合、このDCOM設定を見つけるのに問題が発生する可能性があります。コマンドプロンプトから「MMC-32」を実行して32ビットMMCを起動し、「ファイル」>「スナップインの追加と削除」メニューから「コンポーネントサービス」を追加する必要があります。

これがお役に立てば幸いです

于 2011-09-02T15:32:43.800 に答える