ディストリビューション エージェントで「The distribution agent failed to create temporary files in '...' directory. System returned errorcode 5.」エラーが発生する現象について紹介します。
ディストリビューションエージェントが動作しているSQL Serverで、下記のエラーが発生します。
多くの場合、連続してエラーが発生します。
SQL Server エージェントが "C:\Program Files\Microsoft SQL Server\130\COM" に書き込みできないためエラーが発生します。
"C:\Program Files\Microsoft SQL Server\130\COM" にSQL Serverエージェントが書き込みできるよう設定します。
はじめに、SQL Server エージェントの実行アカウントを確認します。
SQL Server 構成マネージャーを起動します。下図のウィンドウが表示されます。左側のツリービューで[SQL Server のサービス]のノードをクリックします。右側にSQL Serverのサービスのリストが表示されます。
[SQL Server エージェント]の項目をクリックして選択し、右クリックします。ポップアップメニューが表示されますので[プロパティ]メニューをクリックします。
[SQL Server エージェントのプロパティ]ダイアログが表示されます。
ウィンドウの[ログオン]タブをクリックして設定内容を確認します。このSQL Server エージェントは"NT Service\SQLSERVERAGENT" アカウントで実行されていることが確認できました。
"C:\Program Files\Microsoft SQL Server\130\"ディレクトリを開きます。"COM"ディレクトリも存在しています。
COMディレクトリをクリックして選択し、右クリックでポップアップメニューを表示します。メニューの[プロパティ]をクリックします。
[COM]ディレクトリのプロパティダイアログが表示されます。
ウィンドウ上部の[セキュリティ]タブをクリックしします。下図の画面が表示されます。上部の枠の[編集]ボタンをクリックします。
アクセス権の編集モードになります。"NT Service\SQLSERVERAGENT" アカウントに "C:\Program Files\Microsoft SQL Server\130\COM" の書き込み権を追加します。アカウントが一覧にないため[追加]ボタンをクリックします。
[ユーザー または 不ループの選択]ダイアログボックスが表示されます。
[選択するオブジェクト名を入力してください]のテキストボックスに "NT Service\SQLSERVERAGENT" を入力します。入力後、右側の[名前の確認]ボタンをクリックします。
名前の確認ができました。表示が下線付きの"SQLSERVERAGENT"になります。[OK]ボタンをクリックします。
"SQLSERVERAGENT"のアカウントに書き込み権限を追加します。設定後[OK]ボタンをクリックします。
[COM]ディレクトリのプロパティダイアログに戻ります。"SQLSERVERAGENT"のアカウントが追加され、書き込み権限もあります。[OK]ボタンをクリックしてダイアログボックスを閉じます。
イベント ビューアーでエラーが発生していないか確認します。