SQL Server でディストリビューション エージェントを実行すると、"ディストリビューション エージェントが一時ファイルを作成できませんでした" というエラー メッセージが表示される
この記事は、SQL Server でディストリビューション エージェントを実行するときの問題を回避するのに役立ちます。
元の製品バージョン: SQL Server
元の KB 番号: 956032
現象
Windows Server ベースのコンピューターにインストールされている Microsoft SQL Server のインスタンスでは、トランザクション パブリケーションを構成します。 ディストリビューション エージェントにはDistribution Profile for OLEDB streaming
プロファイルを使用します。 ディストリビューション エージェントを実行すると、次のようなエラー メッセージが表示されます。
ディストリビューション エージェントは、 C:\Program Files\Microsoft SQL Server\<nnn>\COM ディレクトリに一時ファイルを作成できませんでした。 システムからエラー コード 5 が返されました。
Note
<nnn> は SQL Server のバージョンを識別します。 詳細については、「 SQL Server の既定のインスタンスおよび名前付きインスタンスのファイルの場所」を参照してください。
原因
ディストリビューション エージェントにDistribution Profile for OLEDB streaming
プロファイルを使用する場合、またはカスタム プロファイルで OLEDB ストリーミングを使用する場合、SQL Server 2019 より前のディストリビューション エージェントでは、ディレクトリに一時ファイル (C:\Program Files\Microsoft SQL Server\<nnn>\COM が作成されます。
Note
SQL Server 2019 以降のバージョンでは、これらの一時ファイルは、ディストリビューション エージェントを実行しているアカウントの下に作成されるようになりました。そのため、ディレクトリ C:\Program Files\Microsoft SQL Server\<nnn>\COM の代わりに、これらのファイルはディレクトリ C:\Users\DistributionAgentAccount\AppData\Temp にあります。DistributionAgentAccount
は、ディストリビューション エージェントが実行されているアカウントです。
実行中のアカウントSQL Server エージェント COM フォルダーへの書き込みアクセス権がない場合、ジョブとして実行しているときにディストリビューション エージェントは失敗します。 COM フォルダーへの書き込みアクセス権を持たないアカウントを使用してコマンド ラインからディストリビューション エージェントを実行すると、同じエラーが発生します。
回避策
この問題を回避するには、SQL Server エージェント サービスを実行しているアカウントの COM フォルダーに書き込みアクセス許可を付与します。 コマンド ラインからディストリビューション エージェントを実行する場合は、ディストリビューション エージェントの実行に使用するアカウントの COM フォルダーに書き込みアクセス許可を付与します。
Note
レプリケーション ジョブに割り当てられているアカウントを変更する場合、アカウントには COM フォルダーへの書き込みアクセス許可が必要です。
これらの手順に従った後も断続的にこの問題が発生する場合は、COM フォルダーがシステムで発生するウイルス対策スキャンから除外されていることを確認する必要があります。
詳細
エラー コード 5 は、エラーが "アクセスが拒否されました" であることを示します。