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 が返されました。

注:

<nnn> は、SQL Serverのバージョンを識別します。 詳細については、「SQL Serverの既定のインスタンスと名前付きインスタンスのファイルの場所」を参照してください。

原因

ディストリビューション エージェントのプロファイルをDistribution Profile for OLEDB streaming使用する場合、またはカスタム プロファイルで OLEDB ストリーミングを使用する場合、SQL Server 2019 より前のディストリビューション エージェントでは、ディレクトリに一時ファイル (C:\Program Files\Microsoft SQL Server\nnn>\<COM) が作成されます。

注:

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 フォルダーに書き込みアクセス許可を付与します。

注:

レプリケーション ジョブに割り当てられているアカウントを変更する場合、アカウントには COM フォルダーへの書き込みアクセス許可が必要です。

これらの手順を実行した後もこの問題が断続的に発生する場合は、COM フォルダーがシステム上で発生するすべてのウイルス対策スキャンから除外されていることを確認する必要があります。

詳細

エラー コード 5 は、エラーが "アクセスが拒否されました" であることを示します。