我正在尝试通过存储过程在SQL Server FileTable中创建目录,我调用以下代码:
INSERT INTO tblMyFiles (name, is_directory, is_archive)
VALUES ('foldername', 1, 0);
调用此代码后,如果我在SQL Server Management Studio中选择行,但是如果我通过Windows资源管理器浏览到文件表目录,我可以看到文件表中的行,我看不到新创建的目录。如果我刷新Windows资源管理器,则该目录仍然不会显示。如果我在资源管理器的文件表目录中创建一个文件,它似乎唤醒了资源管理器,然后显示通过存储过程创建的所有目录。
我在同一个SQL框和另一个数据库上运行它时没有遇到这个问题,我已经比较了所有的属性,它们看起来完全相同,但我必须遗漏一些东西,不知道是什么?任何帮助将非常感激。提前致谢
答案 0 :(得分:5)
我已经看到了同样的问题 - 资源管理器无限期地缓存网络共享目录结构似乎存在问题。我还注意到它不会刷新,直到我创建一个文件然后删除它 - 然后神奇地缓存刷新。删除文件必须强制刷新目录缓存。
此缓存问题似乎与 SMB 相关 - 我尝试了SMB 2( Windows 7 )和SMB 3( Windows 8 )和遇到了同样的问题。 SQL 2012 FileTables are supposed to support SMB 3。
在following this TechNet forum post之后,disabling the SMB directory cache每次都会刷新(在Win7和Win8上验证)。我猜测它可能是SQL Server没有发送正确的SMB消息或SMB客户端堆栈中的错误。无论哪种方式 - 微软都需要解决它,因为它们管理客户端和服务器设计。
[HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \服务\ LanmanWorkstation \参数] “DirectoryCacheLifetime”= DWORD:00000000