错误消息:
System.Data.SqlClient.SqlError: 不允许对文件或文件组 "sysft_pk_dnt_posts1_msg" 进行备份,因为它没有联机。可以使用 FILEGROUP 或 FILE 子句执行 BACKUP,以限制在选项中只包括联机数据。
解决方法(4种):
1、备份时选择存在的文件组。
原因:
因为你有数据文件已经设置为OFFLINE了,所以你只能通过从备份文件中还原,才能使它恢复为联机状态.
本身没有ALTER 语句使其ONLINE.
所以你在备份的时候,应该选择使用文件组或这文件选项的参数备份你的数据库,整个备份是会抛出错误的.
在备份的时候,不要选择数据库,要选择文件组,不存在的那个文件组不要打勾,就能够顺利备份了!
我的情形是存在两个文件组,一个是ChangeHope_B2C_Data,另外一个是sysft_pk_dnt_posts1_msg,不明白是啥玩意。
2、在数据库中删除sysft_pk_dnt_posts1_msg这个东西。
根据经验,应该是sql server 2005在还原sql server 2000备份文件的时候,把一些附加信息还原了。只要找到这些不需要使用到得信息,删除掉就可以了。
找到数据库下面的 存储,全文目录,sysft_pk_dnt_posts1_msg,把这个sysft_pk_dnt_posts1_msg删除,就可以正常备份了。
3、使用命令。
备份的数据库中存在offline状态的文件/文件组
1.你可以通过文件(组)备份来备份数据,在备份时不要指定offline状态的文件/文件组
2.可以将offline状态的文件组从数据库中移除掉,这样就可以进行数据库的备份
e.g. ALTER DATABASE 数据库名 REMOVE FILEGROUP 文件组名
点击新建查询后,
运行ALTER DATABASE 数据库名 REMOVE FILEGROUP 文件组名
4、创建全文目录
/*
这是因为数据库中全文目录是未联机。 要执行完整备份, SQL Server 2005 需要所有数据库文件和将联机数据库中全文目录。
因为一个或多个下列条件都满足全文目录可能联机:
? 全文目录文件夹删除或者损坏。
? 您没有启用全文索引数据库。
? 是从 Microsoft SQL Server 2000 数据库备份还原数据库。 因此, 文件夹是全文目录数据库中不存在其中还原数据库服务器上。
? 从 SQL Server 2000 升级 SQL Server 2005, 您运行的实例。 但是, 全文搜索服务无法访问在升级过程。
? 从位置附加数据库。 期间附件但是, 您指定为该全文目录文件夹正确位置。
解决问题:
1、创建全文索引
xx数据库—>属性—>文件—>使用全文索引
2、重新执行完整备份
*/
希望以上至少有一种方法可以帮助您解决了问题。