GVKun编程网logo

SQL Server 2005 中做全文检索的方法分享(sql server 全文搜索)

4

在本文中,我们将给您介绍关于SQLServer2005中做全文检索的方法分享的详细内容,并且为您解答sqlserver全文搜索的相关问题,此外,我们还将为您提供关于SQLServer2000中全文检索

在本文中,我们将给您介绍关于SQL Server 2005 中做全文检索的方法分享的详细内容,并且为您解答sql server 全文搜索的相关问题,此外,我们还将为您提供关于SQL Server 2000中全文检索的使用、SQL Server 2005 数据库转 SQL Server 2000的方法小结、SQL server 2005转换为SQL server 2000的方法、Sql Server 全文检索的知识。

本文目录一览:

SQL Server 2005 中做全文检索的方法分享(sql server 全文搜索)

SQL Server 2005 中做全文检索的方法分享(sql server 全文搜索)

/*打开全文索引支持,启动sql Server的全文搜索服务 */
execute sp_fulltext_database ‘enable'
/*创建全文目录*/
EXEC SP_FULLTEXT_CATALOG 'FT_testData','CREATE'
/*建立全文索引数据元*/
EXEC sp_fulltext_table 'Hc_Book_Book','CREATE','FT_testData','PK_Hc_Book_BookInfo'
/*添加支持全文索引的列名*/
EXEC sp_fulltext_column 'Hc_Book_Book','BookName','add'
EXEC sp_fulltext_column 'Hc_Book_Book','BookISBN','add'
/*为表创建(激活)全文索引*/
EXEC sp_fulltext_table 'Hc_Book_Book','activate'
/*启动对全文目录的完全填充*/
EXEC sp_fulltext_catalog 'FT_testData','start_full'
/*验证全文目录填充的进度*/
select fulltextcatalogproperty('FT_testData','populateStatus') select * FROM Hc_Book_Book WHERE CONTAINS(BookName,'java')
1、查看当前数据库的状态
SELECT DATABASEPROPERTY ('pubs','IsFulltextEnabled')

2、打开FullText功能
sp_fulltext_databse 'enable'

关闭此功能
sp_fulltext_databse 'disable'

3、建立一个Unique的Index。
在Modify Table界面中,鼠标右键,选择Index/Keys...

在Columns中选择字段,Type选择Unique Key。

4、接下来就可以定义全文检索了,如下图选择Define Full-Text Index...

接下来就是向导界面了,按照向导一步一步做,就不会错了!

选择刚才定义的Unique Index。

选择你要用来全文检索的字段。

(这个暂时我还不知道,下次了解了再来补充。)

选择目录

创建调度

全文检索完成,点击Finish进行建立。

开始建立。

5、启动完全填充

总结:

我们在对sql Server上的某个数据库下的某个(些)数据表的进行全文检索设置后,再配合系统里的全文检索设置,就可以这个(些)表进行全文检索了。

SQL Server 2000中全文检索的使用

SQL Server 2000中全文检索的使用

微软的sql Server数据库是一个在中低端企业应用中占有广泛市场的关系型数据库系统,它以简单、方便、易用等特性深得众多软件开发人员和数据库管理人员的钟爱。但sql Server 7.0以前的数据库系统由于没有全文检索功能,致使无法提供像文本内容查找此类的服务,成为一个小小的遗憾。从sql Server 7.0起,到如今的sql Server 2000终于具备了全文检索功能,使用户可以高效地检索存储在数据库char、varchar、text、ntext、nchar、nvarchar等数据类型列中的文本数据。

建立全文索引

在进行全文检索之前,必须先建立和填充数据库全文索引。为了支持全文索引操作,sql Server 7.0新增了一些存储过程和Transact-sql语句。使用这些存储过程创建全文索引的具体步骤如下(括号内为调用的存储过程名称):

1. 启动数据库的全文处理功能(sp_fulltext_

database);;

2. 建立全文检索目录(sp_fulltext_catalog);

3.在全文检索目录中注册需要全文索引的表(sp_fulltext_table);

4. 指出表中需要全文检索的列名(sp_fulltext_

column);;

5. 为表创建全文索引(sp_fulltext_table);;

6. 填充全文检索目录(sp_fulltext_catalog)。

下面举例说明如何创建全文索引,在本例中,对Test数据库Book表中Title列和Notes列建立全文索引。

use test //打开数据库

//打开全文索引支持,启动sql Server的全文搜索服务

execute sp_fulltext_database ‘enable’

//建立全文检索目录ft_test

execute sp_fulltext_catalog ‘ft_test’,‘create’

为Title列建立全文索引数据元,pk_title为Book表中由主键所建立的唯一索引,这个参数是必需的。

execute sp_fulltext_table ‘book’,‘create’,‘ft_test’,‘pk_title’

//设置全文索引列名

execute sp_fulltext_column ‘book’,‘title’,‘add’

execute sp_fulltext_column ‘book’,‘notes’,‘add’

//建立全文索引

execute sp_fulltext_table ‘book’,‘activate’

//填充全文索引目录

execute sp_fulltext_catalog ‘ft_test’,‘start_full’

至此,全文索引建立完毕。

进行全文检索

sql Server 2000提供的全文检索语句主要有CONTAINS和FREETEXT。CONTAINS语句的功能是在表的所有列或指定列中搜索:一个字或短语;一个字或短语的前缀;与一个字相近的另一个字;一个字的派生字;一个重复出现的字。

CONTAINS语句的语法格式为:

CONTAINS({column | *}),
_condition>)

其中,column是搜索列,使用“*”时说明对表中所有全文索引列进行搜索。Contains_search_

condition 说明CONTAINS语句的搜索内容,其语法格式为:

{||||}[{{AND|AND NOT|OR}}] [...n]

下面就simple_term和prefix_term参数做简要说明:

simple_term是CONTAINS语句所搜索的单字或短语,当搜索的是一个短语时,必须使用双引号作为定界符。其格式为:

{‘word’|“ phrase”}

prefix_term说明CONTAINS语句所搜索的字或短语前缀,其格式为:

{“word*” | “phrase*”}

例如,下面语句检索Book表的Title列和Notes列中包含“database”或“computer”字符串的图书名称及其注释信息:

select title,notes

from book

where contains(tilte,‘database’) or contains(notes,‘database’)

or contains(title,‘computer’) or contains(notes,‘computer’)

FREETEXT语句的功能是在一个表的所有列或指定列中搜索一个自由文本格式的字符串,并返回与该字符串匹配的数据行。所以,FREETEXT语句所执行的功能又称做自由式全文查询。

FREETEXT语句的语法格式为:FREETEXT({column | * },‘freetext_string’)

其中,column是被搜索列,使用“*”时说明对表中的所有全文索引列进行搜索。Freetext_string参数指出所搜索的自由文本格式字符串。

例如,下面语句使用FREETEXT语句搜索Book表中包含“Successful Life”字符串的数据行:

select title,notes

from book

where freetext(*,‘Successful Life’)

SQL Server 2005 数据库转 SQL Server 2000的方法小结

SQL Server 2005 数据库转 SQL Server 2000的方法小结

今天有朋友推荐个活就是把Sql Server 2005的数据库转到Sql Server 2000里,但实际操作起来遇到的问题还不少,网上搜了一些办法,在此陈列出来,并把我使用时遇到的问题及解决方案一并记录下来,以备后期查阅

前几步和网上说的一样,先生成2000的脚本,然后再到2000里面执行。操作如下:

打开 SQL Server 2005 的Manger Studio

-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例

找到你要转换的数据库(建议先将此数据库里的登录名清空,否则转换会出现问题)

-- 右键选择要转成 SQL Server2000 的数据库

-- 选择 任务

-- 选择 生成脚本

-- 在"脚本向导"的"选择数据库"中, 确定选择的是要转到2000的库

-- 勾选"为所选数据库中的所有对象编写脚本" (这个勾不要其实也可以的,根据你的需要来。)

-- 在接下来的"选择脚本选项"中, 找到"为服务器版本编写脚本"项, 选择"SQL Server 2000"

-- 其他选项根据需要设置

-- 最后把脚本保存到一个 .sql 脚本文件

复制代码 代码如下:

有可能会遇到的问题:
目标服务器版本不支持该对象或不支持该对象的一个属性。 (Microsoft.SqlServer.Smo)
脚本无法成功生成。此问题是由于“数据库兼容性级别”导致的。
解决方案:
server有个改兼容性级别的语句:
sp_dbcmptlevel [ [ @dbname = ] name ] [ , [ @new_cmptlevel = ] version ]
语句如下:
EXEC sp_dbcmptlevel ''你的数据库名'', ''80'';
GO
这个80就是各个版本对应的版本号
60 = SQL Server 6.0
65 = SQL Server 6.5
70 = SQL Server 7.0
80 = SQL Server 2000 ——8.0
90 = SQL Server 2005 ——9.0
由于是转到2000于是兼容性级别就要调到80

2. 在2000中创建目标数据库
在查询分析器(或2005的manger studio在打开脚本文件), 连接到SQL Server 2000,执行上面生成的脚本.以创建一个新的数据库 。

复制代码 代码如下:

有可能会出现的问题:
max附近有语法错误
server2000里面没有max这种用法,所以建议大家把SQL脚本里的MAX改成一个很大的数就是了,比如4000(4000好像是上限)。
odb问题
其他数据库我不知道,但是不论你用server什么数据库,只要不是你自己的,通常管理员是不会给你配odb权限的,所以把所有的odb檫掉就可以了。另外还有个办法,用你的远程数据库登录名可以改成那个用户的所有者,在本地也修改一下,然后再运行,就OK啦。

3. 将数据从2005导到2000

首先打开SQL Server 2005 的Manage Studio
-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例
-- 右键选择要转成 SQL Server2000 的数据库--选择 任务 --导出数据
(注意,如果你的Manage Studio 为 Express版本,那任务里是没有导出数据选项的,你可以直接找到你的数据安装目录里的Binn文件夹,例如 C:\Program Files\Microsoft SQL Server\90\DTS\Binn 然后执行DTSWizard.exe文件即可。)
-- 在"SQL Server 导入和导出向导"的"选择数据源"步骤中, 确定选择的是要导出的数据库
-- 在"选择目标"步骤中, 连接到 2000, 并选择步骤2新建的库
-- 在"选择源表和源视图"中, 选择所有的表(注意,如果表中有标识的话,要在此处选中表,然后单击下方的“编辑映射”按钮,新开窗口中勾选“使用标识插入”,每个有标识的表都要这样选择一次。还有,此处导入数据如果牵扯到主外键关系或者其他约束的话,一定要分批次按照关系的先后顺序导入,否则会报错。)
-- 最后完成

复制代码 代码如下:

最后注意下2000的select top 后跟的不可以是表达式,所以如果你的分页里有用到类似
declare @pageIndex int
select top (@pageIndex-1)*12 newsID from News
的话,请一律改成字符串拼接方法,例如下面的例子:
declare @strSql varchar(1000)
declare @pageIndex int
set @pageIndex= (@pageIndex-1)*12
set @strSql=''select top ''+str(@pageIndex)+''  newsID from News''
exec (@strSql)

sql server 2005转到2000的步骤(简易版,一路不错形式)

2005转到2000的步骤
1. 生成for 2000版本的数据库脚本
2005 的manger studio
-- 打开对象资源管理器(没有的话按F8), 连接到你的实例
-- 右键要转到2000的库
-- 任务
-- 生成脚本
-- 在脚本向导的选择数据库中, 确定选择的是要转到2000的库
-- 勾选为所选数据库中的所有对象编写脚本
-- 在接下来的选择脚本选项中, 将”编写创建数据库的脚本”设为True,找到为服务器版本编写脚本项, 选择SQL Server 2000
-- 其他选项根据需要设置
-- 最后把脚本保存到一个 .sql 脚本文件

2. 在2000中创建目标数据库
在查询分析器(或2005的manger studio在打开脚本文件), 连接到SQL Server 2000,执行上面生成的脚本.以创建一个新的数据库

3. 将数据从2005导到2000
打开SQL Server 2000的企业管理器
-- 右键要导入数据的数据库
-- 任务
-- 导入数据
-- 在SQL Server 导入和导出向导的选择数据源步骤中, 确定选择的是要导出的数据库
-- 在选择数据源步骤中, 连接到 2005, 并选择源数据库
-- 在选择源表和源视图中, 选择所有的表
-- 最后完成

您可能感兴趣的文章:

SQL server 2005转换为SQL server 2000的方法

SQL server 2005转换为SQL server 2000的方法

sql server 2005转换为sql server 2000的方法(以BlogEngine为例)

直接restore或附加应该是不行的, 用脚本+导数据肯定没有问题。
sql server 2005转换为sql server 2000的步骤
1. 生成for 2000版本的数据库脚本


sql Server 2005 的manager studio
-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例
-- 右键要转到2000的库
-- 任务
-- 生成脚本
-- 在"脚本向导"的"选择数据库"中, 确定选择的是要转到2000的库
-- 勾选"为所选数据库中的所有对象编写脚本"
-- 在接下来的"选择脚本选项"中, 找到"为服务器版本编写脚本"项, 选择"sql Server 2000"
-- 其他选项根据需要设置
-- 最后把脚本保存到一个 .sql 脚本文件


2. 在2000中创建目标数据库

 

脚本中 [nvarchar](max) 替换为 [ntext]

删除类似于EXEC dbo.sp_grantdbaccess @loginame = N'user', @name_in_db = N'user'的语句


在查询分析器(或2005的manger studio在打开脚本文件), 连接到sql Server 2000,执行上面生成的脚本.以创建一个新的数据库


3. 将数据从2005导到2000


sql Server 2005 的manager studio
-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例
-- 右键要转到2000的库
-- 任务
-- 导出数据(sql Server Express 无此项功能)

【使用sql Manager 2005导出数据脚本. 注意:sql server 2000 查询分析器限制sql脚本的大小,小于64K。】
-- 在"sql Server 导入和导出向导"的"选择数据源"步骤中, 确定选择的是要导出的数据库
-- 在"选择目标"步骤中, 连接到 2000, 并选择步骤2新建的库
-- 在"选择源表和源视图"中, 选择所有的表
-- 最后完成

***********************************

Sql Server 全文检索

Sql Server 全文检索

搜索一个库中的所有表,所有列。不知道Sql Server有没有类似的工具,写了一个。有知道的望告知

begin
	-- 要搜索的关键字
	declare @key varchar(128)
	set @key = ''姚文婷''

	declare cur cursor for
		select object_id, name from sys.tables
	open cur

	declare @table_id varchar(255)
	declare @table_name varchar(255)
	
	fetch next from cur into @table_id, @table_name

	while @@fetch_status = 0
	begin
		declare @sql varchar(max)
		set @sql = (
			select ''rtrim(isnull(convert(varchar, '' + name + ''), '''''''')) + ''''$'''' + '' 
			from sys.columns 
			where object_id = @table_id and user_type_id not in(34)
			for xml path('''')
		)
		set @sql = ''select '' + @sql + ''''''ABC'''' as Data from '' + @table_name
		--print @sql

		set @sql = ''declare ccur cursor for '' + @sql

		exec(@sql)

		declare @d varchar(max)

		open ccur
		
		fetch next from ccur into @d
		while @@fetch_status = 0
		begin
			if (charindex(@key, @d) > 0) 
			begin 
				print ''table: '' + @table_name + '', row: '' + @d
			end

			fetch next from ccur into @d
		end
		close ccur
		deallocate ccur
	

		fetch next from cur into @table_id, @table_name
	end
	
	close cur
	deallocate cur
	
end
-- result 
table: Atdkaoqin1, row: 01$降落伞制造分厂$姚文婷$00000018$00018$0000303847$07  1 2013 12:00AM$$$$$$$$$$$$$$$$$$1.0$$ABC
table: Atdkaoqin1, row: 01$降落伞制造分厂$姚文婷$00000018$00018$0000303847$07  2 2013 12:00AM$$$$$$$$$$$$$$$$$$1.0$$ABC
table: Atdkaoqin1, row: 01$降落伞制造分厂$姚文婷$00000018$00018$0000303847$07  3 2013 12:00AM$$$$$$$$$$$$$$$$$$1.0$$ABC
table: Atdkaoqin1, row: 01$降落伞制造分厂$姚文婷$00000018$00018$0000303847$07  4 2013 12:00AM$$$$$$$$$$$$$$$$$$1.0$$ABC
table: Atdkaoqin1, row: 01$降落伞制造分厂$姚文婷$00000018$00018$0000303847$07  5 2013 12:00AM$$$$$$$$$$$$$$$$$$1.0$$ABC
table: Atdkaoqin1, row: 01$降落伞制造分厂$姚文婷$00000018$00018$0000303847$07  8 2013 12:00AM$$$$$$$$$$$$$$$$$$1.0$$ABC


关于SQL Server 2005 中做全文检索的方法分享sql server 全文搜索的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于SQL Server 2000中全文检索的使用、SQL Server 2005 数据库转 SQL Server 2000的方法小结、SQL server 2005转换为SQL server 2000的方法、Sql Server 全文检索等相关内容,可以在本站寻找。

本文标签:

上一篇SQL Server 2005/2008 导入导出数据常见报错解决方法(sql2008导入数据总是失败)

下一篇sql server 2005中使用with实现递归的方法