SQL Server の「テキストの取得に失敗しました」 -- 解決方法は?

SQL Server の「テキストの取得に失敗しました」 -- 解決方法は?

SQL Server が権限エラー (またはその他の OS エラー) をスローすると、通常は という形式のログが記録されます"Cannot open file {blah}. Operating system error 3 (failed to retrieve text for this message)"

単純な質問です。SQL Server がエラー テキストを取得できないのはなぜでしょうか。どこかの権限の問題だとは思いますが、そもそもこれを機能させるために SQL が OS エラー コードを実際のテキスト メッセージに変換するためにどのようなメカニズムを使用しているのかはわかりません。

注記:私が尋ねているのは、「最初のエラーを修正するにはどうすればよいか」ではありません (誰かが質問を誤解した場合に備えて)。これは、「SQL Server で OS エラー番号をテキストに正常に変換して、OS エラー番号の意味を調べたり覚えたりしなくても済むようにするにはどうすればよいか」です。

これはおそらく答えは見つかりましたが、「OS エラーの意味は何ですか」という質問に埋もれてしまい、適切な Google の呪文が見つかりません...

答え1

理由はいくつかあるが、FormatMessage失敗: メモリ不足、ロケールの問題、またはOSのインストールの破損。メモリ不足によって常にこれが発生するわけではなく、エラーメッセージは適切に表示されます。時々ロケールの不一致があると、この問題が常に発生し、OS インストールが破損している場合も同様です。SQL エラーが米国英語のように見えることから、SQL インストールは米国英語であると想定します。OS インストールの言語は何ですか? フォルダーは%SystemRoot%\System32\en-US存在しますか? はどうですか%SystemRoot%\SysWOW64\en-US?SQL インスタンスは 32 ビット インストールですか?

関連情報