无法删除SQL文件表

时间:2014-08-29 14:54:44

标签: sql-server tsql sql-server-2012 filestream

我们在删除SQL Filetable时遇到问题。每当我跑

select * from <MY SQL FILE TABLE>

我收到此错误消息

  

从服务器接收结果时发生传输级错误。 (提供者:共享内存提供者,错误:0 - 管道的另一端没有进程。)

当我看到sp_readerrorlog时,我看到了此消息

  

SQL Server内部错误。 FILESTREAM管理器无法继续使用当前命令。

当我运行此查询时

ALTER DATABASE XXX
REMOVE FILEGROUP FStream1

我收到此消息:

  

无法删除文件组'FStream1',因为它不为空。

我尝试删除SQL Filetable

drop table `SQLFiletable_bck`

但是我收到了这个错误:

  

FILESTREAM文件组'FileStreamGroup1'没有分配给它的文件。在添加文件之前,无法在此文件组中填充FILESTREAM数据。

然后我尝试了这个选项

ALTER TABLE SQLFiletable_bck 
SET (FILESTREAM_ON = "NULL")

但我收到此错误

  

由于表'SQLFiletable_bck'具有FILESTREAM列,因此无法删除FILESTREAM文件组或分区方案。

我无法删除SQL文件表

有人能告诉我在SQL Server 2012中强行清理FileStream及其FileGroup的方法吗?

1 个答案:

答案 0 :(得分:1)

为了解决问题

ALTER TABLE TableName SET (FILESTREAM_ON = "NULL")

您必须使用FILESTREAM删除列。为了能够做到这一点,你可能也必须放弃一些约束:

ALTER TABLE TableName DROP CONSTRAINT DF_TableName_ColumnName;
ALTER TABLE TableName DROP COLUMN ColumnName;
ALTER TABLE TableName SET (filestream_on = "NULL");
ALTER DATABASE DatabaseName REMOVE FILE 'DatabaseFileName');
ALTER DATABASE DatabaseName REMOVE FILEGROUP "FilegroupName";