【问题标题】:How to refresh unc path cache?如何刷新unc路径缓存?
【发布时间】:2019-09-25 03:35:29
【问题描述】:

我遇到了以下问题。

我有一个连接到远程 sql 服务器的数据库。 所有需要的模拟操作都已完成 - 换句话说,我拥有对文件系统和 sql server 的所有需要​​的访问权限。

假设我有FileStreanDB1 sql 数据库:

\\server\C$\MSSQL\Data\FileStreamDB1.mdf
\\server\C$\MSSQL\Data\FileStreamDB1_log.ldf
\\server\C$\MSSQL\Data\FileStreamDB1

有时我想删除这个数据库。 所以我只使用下面的sql语句(我用c#调用这段代码):

DROP DATABASE [FileStreamDB1]

之后数据库被删除,所有文件也被删除(如果我去那个服务器我找不到它们 - 文件和目录真的被删除了)。 但不幸的是,下面的代码告诉我\\server\C$\MSSQL\Data\FileStreamDB1 仍然存在。

new DirectoryInfo(@"\\server\C$\MSSQL\Data\FileStreamDB1").Exists // returns true
Directory.Exists(@"\\server\C$\MSSQL\Data\FileStreamDB1")         // returns true

看起来有关目录的信息已缓存,我需要清理该现金 (SMB2 目录缓存,我不想禁用它)

我也尝试过这样做:

new DirectoryInfo(@"\\server\C$\MSSQL\Data\FileStreamDB1").Refresh().Exists // return true

有什么想法可以使用 c# 清理有关 unc 路径的 Windows 缓存吗?

【问题讨论】:

  • 现在,我不知道 MSSQL 如何在其控制下处理与 DB 相关的文件的具体细节,但您究竟是如何查找服务器上正在删除的 FileStreamDB1 的?它可能只是被隐藏了,因此它对您的眼睛(和文件管理工具)是不可见的,而它在技术上仍然存在。您是否确保用于查找文件的任何工具确实显示了设置了隐藏和/或系统属性的文件?
  • @elgonzo 所有 db 文件和目录都被删除(我可以访问此服务器,我只是转到该文件夹​​但找不到 db 文件 - 在 drop database 之前我看到它们并在 @ 之后987654328@他们被删除了)我猜这是使用unc路径访问文件的问题
  • 您是否在数据库上启用了 FileStream 功能?
  • @NiklasM。肯定是的
  • 试试这个Directory.Exists(@"\\server$NOCSC$\C$\MSSQL\Data\FileStreamDB1")$NOCSC$ 这将绕过客户端缓存。

标签: c# .net directory filesystems unc


【解决方案1】:

问题是远程信息被缓存了一段时间,可在注册表中配置。

所有代码将首先从缓存中读取,导致File.Exists=true 结果,直到缓存失效。

我找到了几种从代码中绕过此缓存的方法。

尝试访问服务器unc $NOCSC$,这将绕过client-side cache(注意:这在 Windows Server 上不起作用)

像这样:Directory.Exists(@"\\server$NOCSC$\C$\MSSQL\Data\FileStreamDB1")

此外,FileSystemWatcher 查看指定文件夹似乎也将绕过缓存。 (我自己没试过,如果我错了,请纠正我)

注意:从 Windows 资源管理器查看 unc 路径也会绕过缓存,但仅针对该窗口,而不针对正在运行的任何其他代码。

来源:

【讨论】:

  • 不幸的是,$NOCSC$ 是不受支持的功能,并非所有 Windows 系统都支持此功能(win server 2016)=(还有其他想法吗?
  • 寻找如何使用 c# 以编程方式清除此缓存
  • @isxaker 你试过 FileSystemWatcher 的建议了吗?只需将其指向要绕过缓存的共享目录即可。我自己没有尝试过,但我在某个地方遇到了这个建议,如果它有效,请告诉我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-25
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
  • 1970-01-01
  • 2018-03-15
相关资源
最近更新 更多