繁体   English   中英

在Windows资源管理器中创建文件,锁定FileTable

[英]Create file in Windows Explorer locking FileTable

我刚刚开始在SQL Server 2012中使用FileTables。我已经在远程服务器上设置了所有内容,并且没有任何问题。 非事务性文件插入等工作绝对正常。

但是,当我尝试从Windows资源管理器(右键单击 - >新建 - >文本文档)在FileTable共享目录中创建一个新的文本文件时,它完全冻结了。 现在当我在FileTable上执行查询时,查询只是冻结而我没有得到任何响应。 所以我认为来自文件系统的非事务性插入已经锁定了FileTable。

无论如何,这是我迄今为止尝试过的(没有成功):

  • 杀死正在进行的文件流句柄( http://msdn.microsoft.com/en-us/library/gg492061.aspx#BasicsKilling ),但没有结果。 执行只是冻结。

     -- Kill all handles on database EXEC sp_kill_filestream_non_transacted_handles; GO -- Kill handles on filetable EXEC sp_kill_filestream_non_transacted_handles @table_name = 'dbo.MyFileTable'; GO -- Kill single handle EXEC sp_kill_filestream_non_transacted_handles @handle_id = <handle id>; GO 
  • 使数据库脱机。 这会导致错误消息:

     Msg 5061, Level 16, State 1, Line 2 ALTER DATABASE failed because a lock could not be placed on database 'FOO'. Try again later. 
  • 删除数据库。 这会导致错误消息:

     Msg 3702, Level 16, State 4, Line 2 Cannot drop database "FOO" because it is currently in use. 
  • 在我的数据库中杀死正在进行的会话(?):

     EXEC sp_who2 KILL <SPID> 

如上所述,我无法使用FileTable在Transactionally和非事务上进行交互。 如您所见,我甚至无法删除自己的数据库。

可能导致这种情况的任何建议? 我应该小心使用FileTables吗? 关于如何解决这个问题的任何建议?

通过重新启动SQL Server实例解决了这个问题。 这是最后的手段,因为它是我公司使用的远程实例。

我认为这个问题是由于我直接在FileTable目录中创建了一个文件。 在文档( http://msdn.microsoft.com/en-us/library/gg492083.aspx#HowToLoadNew )中声明如下:

可用于将文件加载到FileTable的方法包括以下内容:

  • 在Windows资源管理器中将文件从源文件夹拖放到新的FileTable文件夹。

  • 在命令提示符下或批处理文件或脚本中使用命令行选项,如MOVE,COPY,XCOPY或ROBOCOPY

  • 在C#或Visual Basic.NET中编写自定义应用程序,该应用程序使用System.IO命名空间中的方法来移动或复制文件。

但是,没有声明创建文件可能会导致问题。 不幸的是,它确实在我的情况下。 希望这个答案可以帮助将来遇到类似问题的人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM