Sql 在Windows资源管理器锁定文件表中创建文件

Sql 在Windows资源管理器锁定文件表中创建文件,sql,sql-server,filestream,ssms,filetable,Sql,Sql Server,Filestream,Ssms,Filetable,我刚刚开始在SQLServer2012中使用FileTables。我已经在一个远程服务器上设置好了一切,一切都顺利进行。非事务性文件插入等工作绝对良好 但是,当我试图从Windows资源管理器(右键单击->新建->文本文档)在FileTable共享目录中创建新文本文件时,它完全冻结。现在,当我在FileTable中执行查询时,查询只是冻结,没有得到响应。因此,我认为我从文件系统进行的非事务性插入锁定了FileTable 无论如何,这就是我迄今为止所尝试的(没有成功): 终止正在进行的files

我刚刚开始在SQLServer2012中使用FileTables。我已经在一个远程服务器上设置好了一切,一切都顺利进行。非事务性文件插入等工作绝对良好

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

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

  • 终止正在进行的filestream句柄(),但没有结果。死刑冻结了

    -- 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>
    
    EXEC sp_who2
    杀死
    
如前所述,我无法以事务性和非事务性方式与FileTable交互。正如你所看到的,我甚至不能删除我自己的数据库


有什么建议可能导致这种情况?我应该小心使用文件表吗?有关如何解决此问题的任何建议?

通过重新启动SQL Server实例解决了此问题。不过,这是最后的办法,因为这是我的公司使用的远程实例

我相信这个问题是由我直接在FileTable目录中创建了一个文件引起的。文件()中说明了以下内容:

可用于将文件加载到文件表中的方法包括 以下是:

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

  • 从命令提示符或批处理中使用命令行选项,如移动、复制、XCOPY或robocy 文件或脚本

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

但是,没有说明创建文件可能会导致问题。不幸的是,我的情况的确如此。希望这个答案能帮助将来有类似问题的人