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

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

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

    我有一个不久前从SQL 2000实例还原到SQL 2005实例的数据库。SQL 2000实例定义了旧的、未使用的全文搜索。

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

    这使得数据库处于一种有趣的状态,FTS文件仍然与数据库相关联,但数据库知道的文件列为OFFLINE。事实证明,这使得数据库无法进行完整备份。

    那么,有人知道如何从数据库中删除文件吗? ALTER DATABASE REMOVE FILE 返回

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

    实际的备份命令会为每个不存在的文件抛出以下错误之一:

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

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

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

    这个难题的答案很简单,至少如果你不在乎你的FTS指数,我不在乎。

    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    16 年前

    你应该重新填充你的全文目录。默认情况下,SQL Server 2005不会这样做以加快安装过程。