7

次のコードを呼び出すストアド プロシージャを使用して、SQL Server FileTable にディレクトリを作成しようとしています。

INSERT INTO tblMyFiles (name, is_directory, is_archive) 
VALUES ('foldername', 1, 0); 

このコードを呼び出した後、SQL Server Management Studio で行を選択するとファイル テーブルにある行が表示されますが、Windows エクスプローラーでファイル テーブル ディレクトリを参照すると、新しく作成されたディレクトリが表示されません。Windows エクスプローラーを更新しても、ディレクトリはまだ表示されません。エクスプローラーでファイル テーブル ディレクトリにファイルを作成すると、エクスプローラーが起動し、ストアド プロシージャによって作成されたすべてのディレクトリが表示されます。

これを同じ SQL ボックスで別のデータベースに対して実行すると、この問題は発生しません。すべてのプロパティを比較したところ、それらは同一に見えますが、何かが欠けている必要があり、何がわかりませんか? どんな助けでも大歓迎です。前もって感謝します

4

1 に答える 1

5

私はこれと同じ問題を見てきました.Explorerがネットワーク共有ディレクトリ構造を無期限にキャッシュすることに問題があるようです. また、ファイルを作成して削除するまで更新されないことにも気付きました-その後、魔法のようにキャッシュが更新されます。ファイルを削除すると、ディレクトリ キャッシュが強制的に更新される必要があります。

このキャッシュの問題はSMB関連のようです。SMB 2 ( Windows 7 ) と SMB 3 ( Windows 8 ) の両方を試しましたが、同じ問題が発生しました。SQL 2012 FileTables は SMB 3 をサポートするはずです。

この TechNet フォーラムの投稿に従った後、SMB ディレクトリ キャッシュを無効にすると、毎回更新されます ( Win7 および Win8 で検証済み)。SQL Server が適切な SMB メッセージを送信していないか、SMB クライアント スタックにバグがある可能性があると推測しています。いずれにせよ、Microsoft はクライアントとサーバーの両方の設計を管理しているため、この問題に対処する必要があります。

SMB ディレクトリ キャッシュの無効化

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters] "DirectoryCacheLifetime"=dword:00000000

于 2012-10-15T14:30:50.987 に答える