使用SQL Server 2012 FileTable创建目录后,资源管理器不会更新

Oll*_*lly 7 sql-server explorer filestream sql-server-2012 filetable

我试图通过存储过程在SQL Server FileTable中创建目录,我调用以下代码:

INSERT INTO tblMyFiles (name, is_directory, is_archive) 
VALUES ('foldername', 1, 0); 
Run Code Online (Sandbox Code Playgroud)

调用此代码后,如果我在SQL Server Management Studio中选择行,但是如果通过Windows资源管理器浏览到文件表目录,我可以看到文件表中的行,我看不到新创建的目录.如果我刷新Windows资源管理器,则该目录仍然不会显示.如果我在资源管理器的文件表目录中创建一个文件,它似乎唤醒了资源管理器,然后出现通过存储过程创建的所有目录.

我在同一个SQL框和另一个数据库上运行它时没有遇到这个问题,我已经比较了所有的属性,它们看起来完全相同,但我必须遗漏一些东西,不知道是什么?任何帮助将非常感激.提前致谢

Sli*_*SFT 5

我已经看到了同样的问题 - 资源管理器似乎无限期地缓存了网络共享目录结构.我还注意到它不会刷新,直到我创建一个文件然后删除它 - 然后神奇地缓存刷新.删除文件必须强制刷新目录缓存.

此缓存问题似乎与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