[英]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.