Sql 在Windows资源管理器锁定文件表中创建文件
我刚刚开始在SQLServer2012中使用FileTables。我已经在一个远程服务器上设置好了一切,一切都顺利进行。非事务性文件插入等工作绝对良好 但是,当我试图从Windows资源管理器(右键单击->新建->文本文档)在FileTable共享目录中创建新文本文件时,它完全冻结。现在,当我在FileTable中执行查询时,查询只是冻结,没有得到响应。因此,我认为我从文件系统进行的非事务性插入锁定了FileTable 无论如何,这就是我迄今为止所尝试的(没有成功):Sql 在Windows资源管理器锁定文件表中创建文件,sql,sql-server,filestream,ssms,filetable,Sql,Sql Server,Filestream,Ssms,Filetable,我刚刚开始在SQLServer2012中使用FileTables。我已经在一个远程服务器上设置好了一切,一切都顺利进行。非事务性文件插入等工作绝对良好 但是,当我试图从Windows资源管理器(右键单击->新建->文本文档)在FileTable共享目录中创建新文本文件时,它完全冻结。现在,当我在FileTable中执行查询时,查询只是冻结,没有得到响应。因此,我认为我从文件系统进行的非事务性插入锁定了FileTable 无论如何,这就是我迄今为止所尝试的(没有成功): 终止正在进行的files
- 终止正在进行的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 杀死
有什么建议可能导致这种情况?我应该小心使用文件表吗?有关如何解决此问题的任何建议?通过重新启动SQL Server实例解决了此问题。不过,这是最后的办法,因为这是我的公司使用的远程实例 我相信这个问题是由我直接在FileTable目录中创建了一个文件引起的。文件()中说明了以下内容: 可用于将文件加载到文件表中的方法包括 以下是:
- 将文件从源文件夹拖放到Windows资源管理器中的新FileTable文件夹中
- 从命令提示符或批处理中使用命令行选项,如移动、复制、XCOPY或robocy 文件或脚本
- 在C#或Visual Basic.NET中编写自定义应用程序,该应用程序使用System.IO命名空间中的方法移动或复制文件