100分:如何恢复带全文索引的数据库

bobzhu 2010-10-20 06:53:52
从一台数据库服务器上备份了一个带全文索引的数据库(.bak文件),现在想在另一台机器上重新建立该备份文件的数据库,利用MMC控制管理台恢复时,提示全文索引文件找不到相关的错误。不知道如何解决?谢谢
...全文
236 点赞 收藏 16
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
bobzhu 2010-10-27
提示的错误信息是:
描述:
系统断定检查已失败。有关详细信息,请查看 SQL Server 错误日志。通常,断定失败是由软件错误或数据损坏导致的。若要检查数据库是否已损坏,请考虑运行 DBCC CHECKDB。如果您同意在安装过程中将转储发送到 Microsoft,则将向 Microsoft 发送微型转储。更新可能在 Microsoft 的最新 Service Pack 或技术支持部门的 QFE 中提供。
回复
bobzhu 2010-10-27
[Quote=引用 10 楼 liangck 的回复:]
引用 6 楼 bobzhu 的回复:
引用 4 楼 claro 的回复:
BAK中不会包含你所需要的全文索引目录,所以备份时应该保留包含全文索引的目录和文件。

在恢复时同样建立包含全文索引的库再进行相应的恢复。

现在的问题是,原来服务器上建立的索引文件所在的盘符和目录在G盘,而新的服务器上没有G盘,所以就没办法根据原来服务器的目录来创建新服务器上的全文检索目录。
所以没有办法操作……
[/Quote]
我现在用SQL命令:
restore database CNPrice from disk='d:\cnprice.bak'
with move 'CNPrice' to 'd:\CNPrice.mdf',
move 'CNPrice_Log' to 'd:\CNPrice.ldf';
move 'sysft_FT_Product' to 'd:\FT\a',
move 'sysft_FT_Products' to 'D:\FT\b',
move 'sysft_FT_MyProducts' to 'd:\FT\c';

其中'sysft_FT_Product' 'sysft_FT_Products' 'sysft_FT_MyProducts' 是源数据库的全文索引文件。可最后系统还是提示错误,我现在的目的是只想还原mdf和ldf文件而对全文索引不需要还原,我可以手工再重建,还请高手指教
回复
--小F-- 2010-10-20
[Quote=引用 9 楼 liangck 的回复:]
路径不存在可以使用move来指定新的位置.
sql server 2005是备份数据库是可以把全文索引一起备份的.

move的用法

restore database 数据库名 from disk='x:\xx.bak'
with move 文件逻辑名 to '物理地址',
move 文件逻辑名 to '物理地址';
[/Quote]

学习
回复
billpu 2010-10-20
我一般都重建,备份的总感觉不太可靠
回复
claro 2010-10-20
BAK中不会包含你所需要的全文索引目录,所以备份时应该保留包含全文索引的目录和文件。

在恢复时同样建立包含全文索引的库再进行相应的恢复。
回复
zsh0809 2010-10-20
看这篇文章的第11页 下面第5点---14页,有图解,或许能帮到你。
http://wenku.baidu.com/view/93ac5a1cfad6195f312ba65f.html
回复
bobzhu 2010-10-20
ok实验成功后给分,哈哈。
回复
guguda2008 2010-10-20
move to正解
回复
liangCK 2010-10-20
[Quote=引用 6 楼 bobzhu 的回复:]
引用 4 楼 claro 的回复:
BAK中不会包含你所需要的全文索引目录,所以备份时应该保留包含全文索引的目录和文件。

在恢复时同样建立包含全文索引的库再进行相应的恢复。

现在的问题是,原来服务器上建立的索引文件所在的盘符和目录在G盘,而新的服务器上没有G盘,所以就没办法根据原来服务器的目录来创建新服务器上的全文检索目录。
所以没有办法操作,而且现在服务器上只有这个备份文件,原来……
[/Quote]

如果sql server连这个也做不到.那还备份数据库干嘛?
回复
liangCK 2010-10-20
路径不存在可以使用move来指定新的位置.
sql server 2005是备份数据库是可以把全文索引一起备份的.

move的用法

restore database 数据库名 from disk='x:\xx.bak'
with move 文件逻辑名 to '物理地址',
move 文件逻辑名 to '物理地址';
回复
bobzhu 2010-10-20
[Quote=引用 7 楼 billpu 的回复:]
那就重建吧,也不复杂

SQL code
一、如何在SQL中启用全文检索功能
1、验证全文检索服务是否安装
通过储存过程FULLTEXTSERVICEPROPERTY(返回有关全文服务级别属性的信息)来验证搜索服务(全文组件)是否安装。如Select fulltextserviceproperty (‘IsFullTextInstalled’):返回1表示已安装全文组件;返回0表示未安装……
[/Quote]
现在问题是我只有这个BAK文件,还没有把BAK文件恢复到新的数据库服务器上呢,好像不好重建全文索引吧,我现在的问题是因为原数据库有全文索引,而且原索引文件所在的磁盘目录在新的服务器上不存在。所以无法把BAK文件恢复到数据库中。若恢复成功了,就可以重建全文索引了。
所以请您多指教
回复
billpu 2010-10-20
那就重建吧,也不复杂
一、如何在SQL中启用全文检索功能
1、验证全文检索服务是否安装
通过储存过程FULLTEXTSERVICEPROPERTY(返回有关全文服务级别属性的信息)来验证搜索服务(全文组件)是否安装。如Select fulltextserviceproperty (‘IsFullTextInstalled’):返回1表示已安装全文组件;返回0表示未安装全文组件;返回Null表示输入无效或发生错误。
2、启动全文检索服务(MircoSoft Search)
3、打开数据库全文索引的支持
为全文索引启用数据库:
Use Northwind
Exec sp_fulltext_database ‘enable’
从数据库中删除所有目录:
Use Northwind
Exec sp_fulltext_database ‘disable’
二、建立全文目录
1、创建全文目录
Use Northwind
Exec sp_fulltext_catalog 'ft_ Catalog ', 'create'
2、重建全文目录
Use Northwind
Exec sp_fulltext_catalog 'ft_ Catalog ', ' rebulid'
3、启动全文目录的填充
Use Northwind
Exec sp_fulltext_catalog 'ft_ Catalog ', 'start_full'
4、停止全文目录的填充
Use Northwind
Exec sp_fulltext_catalog 'ft_ Catalog ', 'stop'
5、删除全文目录
Use Northwind
PK_Products
Exec sp_fulltext_catalog 'ft_ Catalog ', 'drop'
三、为表建立全文索引数据元
1、建立的唯一索引
Use Northwind
Exec sp_fulltext_table 'Products','create', 'ft_ Catalog', ' PK_Products '
2、设置全文索引列名
Use Northwind
Exec sp_fulltext_table 'Products','create', 'ft_ Catalog', ' PK_Products '
3、设置全文索引列名
Use Northwind
Exec sp_fulltext_column ' Products ', ProductName', 'add'
Go
Exec sp_fulltext_column ' Products ', QuantityPerUnit', 'add'
Go
4、激活全文索引
Use Northwind
Exec sp_fulltext_table 'Products','activate
5、填充全文索引目录
Use Northwind
Exec sp_fulltext_catalog 'ft_ Catalog ', 'start_full'
四、使用Transact-SQL进行全文检索,我们使用CONTAINS、FREETEXT等谓词
1、检索ProductName中,即包含b又包含c的所有列
Use Northwind
SELECT *
FROM Products
WHERE CONTAINS(ProductName, '"c*" and "b*" ')
2、检索ProductName中,即包含chai chang tofu之一的所有列
Use Northwind
SELECT *
FROM Products
WHERE FREETEXT(ProductName, 'chai chang tofu ')
五、全文查询有关的系统存储过程
(1)启动数据库的全文处理功能(sp_fulltext_datebase);
(2)建立全文目录(sp_fulltext_catalog);
(3)在全文目录中注册需要全文索引的表(sp_fulltext_table);
(4)指出表中需要全文检索的列名(sp_fulltext_column)
(5)为表创建全文索引(sp_fulltext_table);
(6)填充全文索引(sp_fulltext_catalog)。
回复
bobzhu 2010-10-20
[Quote=引用 4 楼 claro 的回复:]
BAK中不会包含你所需要的全文索引目录,所以备份时应该保留包含全文索引的目录和文件。

在恢复时同样建立包含全文索引的库再进行相应的恢复。
[/Quote]
现在的问题是,原来服务器上建立的索引文件所在的盘符和目录在G盘,而新的服务器上没有G盘,所以就没办法根据原来服务器的目录来创建新服务器上的全文检索目录。
所以没有办法操作,而且现在服务器上只有这个备份文件,原来的服务器被移除掉了。所以现在只能依靠这个BAK文件进行数据库的还原了。
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-10-20 06:53
社区公告
暂无公告