sp_kill_filestream_non_transacted_handles (Transact-SQL)

适用范围:SQL Server

将非事务性文件句柄关闭到 FileTable 数据。

Transact-SQL 语法约定

语法

sp_kill_filestream_non_transacted_handles [
    [ @table_name = ] 'table_name'
    , [ [ @handle_id = ] handle_id ]
    ]

参数

[ @table_name = ] 'table_name'

要在其中关闭非事务句柄的表的名称。

无需handle_id即可传递table_name以关闭 FileTable 的所有打开的非事务句柄。

可以传递NULLtable_name的值以关闭当前数据库中所有 FileTable 的所有打开的非事务句柄。 默认值为 NULL

[ @handle_id = ] handle_id

要关闭的各个句柄的可选 ID。 可以从sys.dm_filestream_non_transacted_handles动态管理视图获取handle_id。 每个 ID 在 SQL Server 实例中都是唯一的。 如果指定handle_id,则还必须为table_name提供值

可以传递NULLhandle_id的值以关闭由table_name指定的 FileTable 的所有打开的非事务句柄。 默认值为 NULL

返回代码值

0(成功)或 1(失败)。

结果集

无。

注解

所需的handle_id与其他kill命令中使用的工作单位无关session_id sp_kill_filestream_non_transacted_handles

有关详细信息,请参阅 管理 FileTables

元数据

有关打开非事务性文件句柄的信息,请查询动态管理视图 sys.dm_filestream_non_transacted_handles

权限

必须具有 VIEW DATABASE STATE 权限才能从 sys.dm_filestream_non_transacted_handles 动态管理视图获取文件句柄并运行 sp_kill_filestream_non_transacted_handles

示例

以下示例演示如何调用 sp_kill_filestream_non_transacted_handles 关闭 FileTable 数据的非事务性文件句柄。

-- Close all open handles in the current database.
sp_kill_filestream_non_transacted_handles;

-- Close all open handles in myFileTable.
sp_kill_filestream_non_transacted_handles @table_name = 'myFileTable';

-- Close a specific handle in myFileTable.
sp_kill_filestream_non_transacted_handles @table_name = 'myFileTable', @handle_id = 0xFFFAAADD;

以下示例演示如何使用脚本获取 handle_id 并关闭它。

DECLARE @handle_id VARBINARY(16);
DECLARE @table_name SYSNAME;

SELECT TOP 1 @handle_id = handle_id,
    @table_name = Object_name(table_id)
FROM sys.dm_FILESTREAM_non_transacted_handles;

EXEC sp_kill_filestream_non_transacted_handles @dbname,
    @table_name,
    @handle_id;
GO