こんにちは、Office サポート チームの中村です。
今回の記事では、Windows Server Failover Cluster (WSFC) 構成のファイル サーバー上に作成した共有フォルダーで、継続的可用性 (Continuous Availability
(CA)) 設定を有効にすると、このフォルダー配下の Office ファイルを開くときに時間がかかる、という動作について説明します。なお、このときに要する時間は数十分となる場合があるため、ユーザーが開き終わるまで待機することなく「Office ファイルを開くことができず、Office アプリの応答がなくなる」といった現象として報告されることが想定されます。
1. 発生条件
以下をすべて満たす場合に発生します。
Office デスクトップ アプリ バージョン 1812 以降
WSFC 構成のファイル サーバーで、共有フォルダーの継続的可用性 (CA) を有効にしている
共有フォルダーの名前に NFKC 形式での Unicode正規化により、別の文字に置き換わる文字を使用している (例: 全角アルファベット)
Unicode 正規化の詳細は以下をご参照ください。
Using Unicode Normalization to Represent Strings
https://docs.microsoft.com/en-us/windows/win32/intl/using-unicode-normalization-to-represent-strings※ サブ フォルダーは影響しません。共有ルート フォルダーの名前のみです。
2. 原因
WSFC 構成の継続的可用性 (CA) は、一般的に可用性が重要なスケールアウト ファイル サーバーなどの構成で利用され、ファイルへのアクセス中にフェイル オーバーが発生したときにも、フェイル オーバー後にそのままアクセスを継続することを実現します。
本機能の詳細は、以下の公開情報をご参照ください。
Windows Server 2012 Continuous Availability File Server feature
https://docs.microsoft.com/en-us/archive/blogs/davguents_blog/windows-server-2012-continuous-availability-file-server-feature
この仕組みの実現のため、継続的可用性が有効な共有フォルダーが検出されると、SMB クライアントはそのファイル サーバーへのアクセスが失敗した場合も、しばらくの間リトライを繰り返します。このリトライによって、フェイル オーバー後に自動的に再接続され、継続アクセスが可能となります。
一方で、先述の発生条件に記載したバージョン以降の Office アプリケーションでは、セキュリティ脆弱性への対応のため、ファイルが格納されているネットワーク フォルダー パスを Unicode 正規化してアクセスする処理を追加しました。
例えば、「share」という全角英字を Unicode 正規化すると、半角英字「share」となります。したがって、「\\server\share\test.xlsx」という全角英字フォルダー内のファイルを開くときに、「\\server\share」 (半角英字) へのアクセスが発生することになります。
半角英字の「share」フォルダーが存在せず、そのようなフォルダーは存在しない旨のエラーが返されても以後の処理は正常に動作しますが、継続的可用性が有効な場合は、存在しないことによるエラーであってもこのエラーがすぐに Office に返らず、リトライが繰り返されます。
この結果、リトライ オーバーまで Office は待機し続け、ファイルを開くまでに長い時間を要します。
Windows OS の継続的可用性によるリトライ、Office アプリケーションのファイル オープン時の Unicode 正規化ともに、想定された仕組みであり、本動作は現在の製品動作上の制限事項です。
3. 回避策
以下のいずれかの方法による回避をご検討ください。
共有フォルダーの名前に Unicode 正規化で別の文字となる文字を使用しない
共有フォルダーをネットワーク ドライブに割り当てて使用する
(この場合、Office が Unicode 正規化してアクセスするのはネットワーク ドライブを用いたパスとなるため、現象を回避できます)共有フォルダーの継続的可用性を無効にする
今回の投稿は以上です。
本情報の内容 (添付文書、リンク先などを含む) は、作成日時点でのものであり、予告なく変更される場合があります。