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 客户端堆栈中的错误。不管怎样——微软需要解决这个问题,因为他们同时管理客户端和服务器设计。

禁用 SMB 目录缓存

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

于 2012-10-15T14:30:50.987 回答