代码之家  ›  专栏  ›  技术社区  ›  Josef

如何从SQL Server 2005数据库中删除脱机文件

  •  2
  • Josef  · 技术社区  · 15 年前

    我有一个数据库,一段时间前从一个SQL 2000实例恢复到了一个SQL 2005实例。SQL 2000实例定义了旧的、未使用的全文搜索。

    文件恢复后,全文搜索似乎没有恢复,只是被删除了。

    这使数据库处于一种有趣的状态,FTS文件仍然与数据库关联,但数据库知道的文件列为脱机。事实证明,这会阻止数据库进行完整备份。

    那么,有人知道如何从数据库中删除这些文件吗? ALTER DATABASE REMOVE FILE 收益率

    消息5009,级别16,状态2,行1 语句中列出的一个或多个文件找不到或无法初始化。

    对于不存在的每个文件,实际的backup命令将引发以下错误之一:

    消息9987,级别16,状态1,行1 不允许备份全文目录“”,因为它未联机。检查错误日志文件,找出全文目录脱机的原因,并将其联机。或者,可以使用filegroup或file子句执行备份,以限制选择仅包括联机数据。

    有人知道如何解决这个问题吗?

    3 回复  |  直到 12 年前
        1
  •  4
  •   Josef    15 年前

    这个难题的答案很简单,至少如果你不关心你的富时指数,我不关心。

    EXEC master.dbo.sp_detach_db @dbname = N'dbname', @keepfulltextindexfile=N'false'
    

    这里的关键是第二个标志, @keepfulltextindexfile ,默认为true。通过将其设置为false,然后重新附加数据库,将删除所有FTS数据,并且备份可以按照它们应该的方式工作。

        2
  •  2
  •   Linger    12 年前

    我将报告问题修改如下

    1. 将数据库置于单用户模式。
    2. 分离数据库。但在单击“确定”进行分离之前,请取消选中 保留全文目录。
    3. 重新附加数据库
        3
  •  0
  •   MarlonRibunal    15 年前

    你应该重新填充你的全文目录。默认情况下,SQLServer2005不会这样做,以促进安装过程。