有用SQL2000中的image字段做过全文检索的专家请在下面跟帖 向各位高手想请教您一个棘手的问题:我把htm文件和doc文件(里面有文本、图片和表格等信息)存储到SQL数据库的image字段中,现在可以写入和读出,但是建立全文索引后却检索不出结果,请问这可能是什么原因?非常感谢大家的帮助。帮着分析一下可能是什么原因?解决成功加分到100。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、启动 Microsoft Search 服务 开始菜单-->SQL程序组-->服务管理器-->下拉筐-->Microsoft Search 服务-->启动它2、 ..\Microsoft SQL Server\MSSQL\FTDATA\SQLServer\Config\目录里建一个非空noise.chs文件 非空noise.chs文件,也有人说是空的noise.chs文件,但我每次都往里写几个没用的字母。3、建立环境 打开查询分析器-->执行下列脚本:--------------------------------------------create database test ---创建test数据库use test ---选择test数据库create table dali (ID int not null primary key,MyImage image,FileType varchar(255),FileNmae varchar(255)) ---创建dali表--dali表中 Id,MyImage,FileType 三列是必须的,因为要对image列索引的话,必须要有一个主键列,一个image列,一个存放文件类型的列--我们知道在windows系统中文件类型是靠扩展名来区分的所以FileType列也就是用来放 文件的扩展名--------------------------------------------sp_fulltext_database 'enable' --为全文索引启用数据库sp_fulltext_catalog 'My_FullDir', 'create' ---创建一个叫My_FullDif的全文目录declare @Key sysname ; select @Key=c.name from syscolumns a,sysconstraints b,sysobjects c where a.id=object_id('dali') and a.name='ID' and a.id=b.id and b.constid=c.id and c.name like 'PK%'exec sp_fulltext_table 'dali','create','My_FullDir',@Key ----这两句是为全文索引,对表进行标记sp_fulltext_column 'dali','MyImage','add',0x0804,'FileType' ---这句是指定MyImage列为全文索引列,FileType是类型列------------------------------------------------4、在c盘下放一个扩展名为doc的word文件,一个扩展名为xls的excel文件,一个扩展名为htm的网页文件,个扩展名为bmp的图片 共4个,大家可根据实际情况放入!5、插入数据 建立下面这个存储过程--------------------------------------------------CREATE PROCEDURE sp_textcopy @srvname varchar (30), @login varchar (30), @password varchar (30), @dbname varchar (30), @tbname varchar (30), @colname varchar (30), @filename varchar (30), @whereclause varchar (40), @direction char(1) AS /* 这是使用textcopy工具将文件插入到数据库中,如果有前台工具可以用前台开发工具将文件插入,这里为了演示 */DECLARE @exec_str varchar (255) SELECT @exec_str='textcopy /S '+@srvname+' /U '+@login+' /P '+@password+' /D '+@dbname+' /T'+@tbname+' /C '+@colname+' /W"'+@whereclause+'" /F"'+@filename+'" /'+@directionEXEC master..xp_cmdshell @exec_str----------------------------------------------------insert dali values(1,0x,'doc','大力的doc') ---其中第二列是 0x 它是一个16进制数对应image列,是必须的,不要写null,第三列是文件类型,既扩展名sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:\大力的doc.doc','where ID=1','I'-------依次参数是:实例名,用户名,密码,数据库名,表名,image列名,路径及文件名,条件(你必须保证它只选择一行),I---------------------------------------------------------------------------------------------------------------------insert dali values(2,0x,'bmp','图片')sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:\图片.bmp','where ID=2','I' --注意条件是 ID=2insert dali values(3,0x,'xls','Excel文件')sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:\Excel文件.xls','where ID=3','I' --注意条件是 ID=3insert dali values(4,0x,'htm','网页')sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:\网页.htm','where ID=4','I' --注意条件是 ID=4----------上面的语句,要保证类型一样,路径正确,条件唯一正确应该就可以了6、填充全文索引sp_fulltext_table 'dali','start_full' ---第一个参数是表名,第二个参数是启动表的全文索引的完全填充7、可以开始你的实验了select * from dali where contains(MyImage,'J老师')select * from dali where contains(MyImage,'海老师')------END------------调试环境:SQLServer2000企业版、Windows2000高级服务器 检索代码用contains(content,'工艺'),其中content是image类型,filetype是绑定的文档类型 feixianxxx大师,我用上面的方法试了,检索还是没有结果 这个sql有点难度 sql字符处理 在没有设置SET NOCOUNT ON的情况下SQL Server 2012的批量Insert为什么很慢? 急急急!!!!sql server 2000备份还原问题! EXECUTE sp_executesql和EXEC的区别 SQL中图像的储存问题 问个很小的问题. 简单问题(来拿分吧) 存储过程报错Procedure execution failed 42000 - [SQL Server]必须声明标量变量 如可实现表中数据统计请指教 SQL对ACCESS 查询的数据导入到EXCEL sqlserver2005中怎么样修改XMl值
开始菜单-->SQL程序组-->服务管理器-->下拉筐-->Microsoft Search 服务-->启动它2、
..\Microsoft SQL Server\MSSQL\FTDATA\SQLServer\Config\目录里建一个非空noise.chs文件
非空noise.chs文件,也有人说是空的noise.chs文件,但我每次都往里写几个没用的字母。3、建立环境
打开查询分析器-->执行下列脚本:
--------------------------------------------
create database test ---创建test数据库
use test ---选择test数据库
create table dali (ID int not null primary key,MyImage image,FileType varchar(255),FileNmae varchar(255)) ---创建dali表
--dali表中 Id,MyImage,FileType 三列是必须的,因为要对image列索引的话,必须要有一个主键列,一个image列,一个存放文件类型的列
--我们知道在windows系统中文件类型是靠扩展名来区分的所以FileType列也就是用来放 文件的扩展名
--------------------------------------------sp_fulltext_database 'enable' --为全文索引启用数据库
sp_fulltext_catalog 'My_FullDir', 'create' ---创建一个叫My_FullDif的全文目录declare @Key sysname ; select @Key=c.name from syscolumns a,sysconstraints b,sysobjects c where a.id=object_id('dali') and a.name='ID' and a.id=b.id and b.constid=c.id and c.name like 'PK%'
exec sp_fulltext_table 'dali','create','My_FullDir',@Key ----这两句是为全文索引,对表进行标记sp_fulltext_column 'dali','MyImage','add',0x0804,'FileType' ---这句是指定MyImage列为全文索引列,FileType是类型列
------------------------------------------------
4、在c盘下放一个扩展名为doc的word文件,一个扩展名为xls的excel文件,一个扩展名为htm的网页文件,个扩展名为bmp的图片
共4个,大家可根据实际情况放入!5、插入数据
建立下面这个存储过程
--------------------------------------------------
CREATE PROCEDURE sp_textcopy
@srvname varchar (30),
@login varchar (30),
@password varchar (30),
@dbname varchar (30),
@tbname varchar (30),
@colname varchar (30),
@filename varchar (30),
@whereclause varchar (40),
@direction char(1)
AS
/* 这是使用textcopy工具将文件插入到数据库中,如果有前台工具可以用前台开发工具将文件插入,这里为了演示 */
DECLARE @exec_str varchar (255)
SELECT @exec_str='textcopy /S '+@srvname+' /U '+@login+' /P '+@password+' /D '+@dbname+' /T'+@tbname+' /C '+@colname+' /W"'+@whereclause+'" /F"'+@filename+'" /'+@direction
EXEC master..xp_cmdshell @exec_str
----------------------------------------------------insert dali values(1,0x,'doc','大力的doc') ---其中第二列是 0x 它是一个16进制数对应image列,是必须的,不要写null,第三列是文件类型,既扩展名sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:\大力的doc.doc','where ID=1','I'
-------依次参数是:实例名,用户名,密码,数据库名,表名,image列名,路径及文件名,条件(你必须保证它只选择一行),I
---------------------------------------------------------------------------------------------------------------------
insert dali values(2,0x,'bmp','图片')
sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:\图片.bmp','where ID=2','I' --注意条件是 ID=2insert dali values(3,0x,'xls','Excel文件')
sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:\Excel文件.xls','where ID=3','I' --注意条件是 ID=3insert dali values(4,0x,'htm','网页')
sp_textcopy '你的服务器名','sa','你的密码','test','dali','MyImage','c:\网页.htm','where ID=4','I' --注意条件是 ID=4----------上面的语句,要保证类型一样,路径正确,条件唯一正确应该就可以了6、填充全文索引sp_fulltext_table 'dali','start_full' ---第一个参数是表名,第二个参数是启动表的全文索引的完全填充7、可以开始你的实验了select * from dali where contains(MyImage,'J老师')select * from dali where contains(MyImage,'海老师')------END----------
--调试环境:SQLServer2000企业版、Windows2000高级服务器
检索代码用contains(content,'工艺'),其中content是image类型,filetype是绑定的文档类型