以前、ネットワーク共有上のファイルを Windows 認証で BULK INSERT する際の考慮点 という投稿をしました。
この投稿の中では委任の設定をした後に再起動を実施して、設定を反映していますが、再起動をしなくても設定を反映することはできないかについて確認をしてみました。
CIFS の委任の設定が反映されるタイミング
冒頭に記載したワークロードでは、次のようなアクセスパターンで、Windows 認証をして、Bulk Insert を実行しています。
- アプリケーションサーバー -> SQL Server -> ファイルサーバー
- アプリケーションサーバー: Bulk Insert ステートメントを実行
- SQL Server: ファイルサーバーにアクセス
- ファイルサーバー: Bulk Insert で取り込みをするファイルが格納されている
これらのワークロードをドメインに参加しているメンバーサーバーで実行しようとした場合、SQL Server のコンピューターアカウントの設定として、ファイルサーバーのコンピューターアカウントの CIFS の委任が必要となるケースがあります。
CIFS の委任の設定を実施しても、設定直後は次の画像のように、エラーの発生は解消せず、委任をしてもエラーが継続しています。
CIFS の委任の設定の反映ですが、私の環境では「最大 15 分」かかるようでした。
次の画像はエラーが出ているタイミングで取得した klist の実行結果です。
(「klist sessions | findstr "Network"」で情報を取得し、Windows 認証で使用しているドメインユーザーの情報を取得したものです)
S4U のチケットの有効期間が 15 分となっており、この時間が経過した後にチケットの再取得が行われ、CIFS 向けの内容となっていることが確認できます。
22:28:58 までが有効期間となっていますので、上述のエラーの画面キャプチャの処理を継続して実行していると、この時間付近から正常に処理が完了していることが確認できます。
Windows 認証で使用しているアカウントで、CIFS についてのチケットも確認ができました。
Windows の Kerberos プロトコル レジストリ エントリと KDC 構成キー では、「S4UTicketLifetime」の有効期間はデフォルトでは 15 分となっているようですので、これに依存しているのかもしれませんね。
SQL Server のサーバーの再起動を実施すれば、再起動後は変更後の委任の設定状態となっていますが、サーバーの再起動を実施できない場合は、15 分程度、時間をおいてみると状況が変化するかもしれません。