SQL2005全文索引
- 格式:docx
- 大小:722.21 KB
- 文档页数:39
第13章 Reporting ServicesMicrosoft SQL Server 2005 Reporting Services是一种基于服务器的解决方案,用于生成从多种关系数据源和多维数据源提取内容的企业报表,发布能以各种格式查看的报表,以及集中管理安全性和订阅。
用户创建的报表可以通过基于Web的连接进行查看,也可以作为Microsoft Windows应用程序的一部分或共享门户进行查看。
本章主要给读者讲解利用SQL Server 2005自身的功能创建报表的方法,希望读者通过本章的学习,理解Reporting Services体系架构,并熟练掌握SQL Server 2005中报表工具的使用方法,以及创建报表的方法。
13.1 Reporting Services体系架构SQL Server 2005的Reporting Services并不仅仅是一种报表设计工具。
也是一个完整的报表平台,可以创建报表、保存报表定义、提供安全的报表访问、以多种不同的输出方式呈现报表、制订报表交付的进度表、支持部署报表、并具备编程能力和扩展特性。
Reporting Services提供了运行在IIS之下的中间层报务器。
如果在执行安装程序的系统上没有IIS,则SQL Server 2005的安装对话框中不会提供Reporting services的安装选项。
虽然Reporting Services可以安装在与SQL Server数据库引擎相同的服务器系统上,但为了提供可伸缩性,通常最好Reporting Services安装到一个单独的服务器上。
Reporting Services包括一些应用程序。
它是一种基于服务器的子系统,支持在企业环境中创建、管理和部署报表。
其体系架构如图13-1所示。
•2•图13-1 Reporting Services体系架构下面对报表的各个组件进行详细阐述。
13.1.1 报表服务器报表服务器是Reporting Services的主要组件。
论述SQL2005约束和索引的作用与联系1 约束的功能及概念约束定义了数据的有效性规则,其目的在于防止数据库中出现不正确或不一致的数据,可以自动维护并保存数据库中的数据完整性。
约束是SQL Server提供的自动强制数据完整性的一种方式,它是通过定义列的取值规则来维护数据的完整性,约束定义关于列中允许值的规则,是强制完整性的标准机制。
使用约束优先于使用触发器、规则和默认值。
查询分析器也使用约束定义生成高性能的查询执行计划。
2 索引的功能及概念索引是通过数据行表中的索引关键值来指向表中的数据行,这样数据库引擎不用扫描整个表就能快速定位到所需要的数据行。
相反,如果没有索引则会导致SQL Server搜索表中所有的数据行难以找到匹配结果。
可以在表或视图的一列或多列上创建索引,基于两列或多列上建立的索引称为复合索引;如果表中任意两行被索引的列值不允许出现重复值,那么这种索引称为惟一索引。
索引主要分为两种,即聚集索引和非聚集索引。
3 与索引有联系的主要约束与索引有联系的主要约束有以下两种:PRIMARY KEY约束:主键约束标识列或列集,它可用来强制数据的完整性,在数据表中主键只能有一个,主键可以是一列,也可以是由多列所组成的主键,并且主键约束不允许在创建主键的列上有空值。
UNIQUE(惟一)约束:惟一约束在列集内强制执行值的惟一性,即在列中不允许有相同的值。
但是惟一约束允许在创建惟一索引的列上有空值。
以下所讨论的论点均用销售数据库实例sale来论证说明。
4 约束与索引的联系与作用4.1 创建约束与索引的联系与作用4.1.1 主键约束的创建与聚集索引的联系与作用。
用户在数据库表中(该表目前没有聚集索引)创建主键约束时,SQL Server将自动在建有这些约束的列上创建对应的聚集索引;若该表已经创建了聚集索引,则再为之创建主键约束,SQL Server将自动在建有这些约束的列上创建惟一非聚集索引。
下面在销售数据库sale中的customer表(无聚集索引)上的Cusno列创建主键p1,在proin表(已有聚集索引i1)上创建主键约束PK_proin进行论证说明。
SQL Server2005索引碎片分析和解决方法毫无疑问,给表添加索引是有好处的,你要做的大部分工作就是维护索引,在数据更改期间索引可能产生碎片,所以一些维护是必要的。
碎片可能是你查询产生性能问题的来源。
怎样确定索引是否有碎片?SQLServer提供了一个数据库命令:DBCC SHOWCONTIG,来确定一个指定的表或索引是否有碎片。
下面举一个例子:对't_exam' 表执行DBCC SHOWCONTIG,结果如下:- 扫描页数.....................................: 20229- 扫描扩展盘区数...............................: 2543- 扩展盘区开关数...............................: 15328- 每个扩展盘区上的平均页数.....................: 8.0- 扫描密度〔最佳值:实际值〕....................: 16.50%〔2529:15329〕【如果小于100,则存在碎片。
16.50%说明有很多碎片】- 逻辑扫描碎片.................................: 46.23% 【如果为0是最好)】- 扩展盘区扫描碎片.............................: 45.10%- 每页上的平均可用字节数.......................: 3240.1- 平均页密度(完整)...........................: 59.97% 【如果为100%是最好】以上结果显示:逻辑扫描碎片和扩展盘区扫描碎片都非常大,需要对索引碎片进行处理。
DBCC DBREINDEX 和DBCC INDEXDEFRAG命令常用来整理索引碎片。
这里需要注意的是,非常低的碎片级别(小于5%)不应通过这些命令来解决,因为删除如此少量的碎片所获得的收益始终远低于重新组织或重新生成索引的开销。
1 什么是SQL?SQL 指结构化查询语言SQL 使我们有能力访问数据库SQL 是一种ANSI 的标准计算机语言2 SQL 能做什么?SQL 面向数据库执行查询SQL 可从数据库取回数据SQL 可在数据库中插入新的纪录SQL 可更新数据库中的数据SQL 可从数据库删除记录SQL 可创建新数据库SQL 可在数据库中创建新表SQL 可在数据库中创建存储过程SQL 可在数据库中创建视图SQL 可以设置表、存储过程和视图的权限3SQL 是一种标准- 但是...SQL 是一门ANSI 的标准计算机语言,用来访问和操作数据库系统。
SQL 语句用于取回和更新数据库中的数据。
SQL 可与数据库程序协同工作,比如MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。
不幸地是,存在着很多不同版本的SQL 语言,但是为了与ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。
注释:除了SQL 标准之外,大部分SQL 数据库程序都拥有它们自己的私有扩展!在您的网站中使用SQL要创建发布数据库中数据的网站,您需要以下要素:RDBMS 数据库程序(比如MS Access, SQL Server, MySQL)服务器端脚本语言(比如PHP 或ASP)SQLHTML / CSSRDBMSRDBMS 指的是关系型数据库管理系统。
RDBMS 是SQL 的基础,同样也是所有现代数据库系统的基础,比如MS SQL Server, IBM DB2, Oracle, MySQL 以及Microsoft Access。
RDBMS 中的数据存储在被称为表(tables)的数据库对象中。
表是相关的数据项的集合,它由列和行组成。
SQL 语句您需要在数据库上执行的大部分工作都由SQL 语句完成。
SQL SERVER2005文档张钰彬SQL Serve 2005是一千多人用了五年的时间在SQL Serve 2000的基础上开发出来的。
它相对于SQL Serve 2000来说有了很大的变化。
它将以往的工具大幅度集成,提供了一个集成的开发环境。
8月8日,由CSDN,NIIT,赛迪网三方主办的SQL Server2005新特性的讨论会即将拉开序幕,全程将在NIIT多功能厅进行,并由NIIT和赛迪网全程报道。
第一章:词汇 (1)一、数据库设计方面 (2)二、开发方面 (4)2005新增概念:模式 (5)PIVOT简介: (6)第一章:词汇Tier:层; Broker:代理人,经纪人;Replication:复制;Notification:通知,布告,告示;Integration:综合Analysis:分析,分解;Intelligence:智力,智能;Tuning:调谐,调整,调音;Advisor:顾问; Configuration:结构,配置;Designation:指示,指定,指派;Pivot:在轴上转动;SQL Server 2005比SQL Server 2000的改进:一、数据库设计方面1、字段类型。
varchar(max)\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
但是这就引发了对varchar和char效率讨论的老问题。
到底如何分配varchar的数据,是否会出现大规模的碎片?是否碎片会引发效率问题?这都是需要进一步探讨的东西。
varbinary(max)代替image也让SQL Server的字段类型更加简洁统一。
XML字段类型更好的解决了XML数据的操作。
XQuery确实不错,但是个人对其没好感。
(CSDN的开发者应该是相当的熟了!)2、外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。
前言在使用和管理MSSQL数据库的过程中,常常会遇到一些问题,例如如何在xp中安装SQL 2005 SERVER,怎么远程连接管理sql2005数据库、如何远程备份数据库、如何修改数据库的存放位置、如何自动备份等。
笔者在遇到这些问题的时候,也是在网上多方查找资料、费尽了心机,但功夫不负有心人,终于明白了sql2005一些数据操作的基本技巧和远程登录的具体操作方法。
Sql2005 server开发版在xp sp3中的安装我们知道SQL有许多版本,功能也都不同,主要分为:Enterprise(企业版),Development(开发版),Workgroup,(工作群版)Standard,(标准版)Express.(简易版)以功能言,Enterprise 版和Development 版的功能一样。
两者的差别,除了授权不同外,最主要的差别是:Enterprise版的数据库引擎只能安装在Win2003Server(或其他Server)。
如果你想安装在WindowsXP Pro系统上,你应该安装SQL2005Development版(开发版)。
如果你是初学者,如果你只是想要在家里学习学习,如果你的环境是Windows XP Pro,那么,你应该选择的是SQL2005 Development,但是如果你只想远程操作数据库,你可以选择SQL Express。
但在xp中安装开发版并不容易,会弹出各种错误提示,首先我们需要下载并安装如下组件:1:下载并安装Microsoft .Net Framework 3.5 SP1。
2:下载并安装Windows Installer 4.5。
3:下载并安装Windows PowerShell 1.0。
然后下载sql2005企业版安装光盘镜像,解压。
点击解压目录的splash开始安装先安装cd1最好先安装SQL Client 端,以免出错,直接安装服务器组件会出现下面的错误:如果出现错误,可直接进入解压目录的Dev_CD1\Setup,运行SqlRun_SQL.exe,安装服务端程序然后进入解压目录的Dev_CD2\Setup,运行SqlRun_Tools.exe,安装客户端程序。
理論部份 前言 在数据库中快速搜索数据,使用索引可以提高搜索速度,然而索引一般是建立在数字型或长度比较短的文本型字段上的,比如说编号、姓名等字段,如果建立在长度比较长的文本型字段上,更新索引将会花销很多的时间。如在文章内容字段里用like语句搜索一个关键字,当数据表里的内容很多时,这个时间可能会让人难以忍受。在SQL Server中提供了一种名为全文索引的技术,可以大大提高从长字符串里搜索数据的速度,在本節里,将会对全文索引进行详细的介绍
(1)全文索引概念: 全文索引与普通的索引不同,普通的索引是以B-tree结构来维护的,而全文索引是一种特殊类型的基于标记的功能性索引,是由Microsoft SQL Server全文引擎服务创建和维护的。使用全文索引可以快速、灵活地为存储在SQL Server数据库中的文本数据创建基于关键字查询的索引,与like语句不同,like语句的搜索是适用于字符模式的查询,而全文索引是根据特定语言的规则对词和短语的搜索,是针对语言的搜索。
(2)全文索引常用术语 (2.1)全文索引:一种特殊的索引,能在给定的列中存储有关重要的词及位置的信息,使用这些信息可以快速进行全文查询,搜索包括特定词或词组的行.
(2.2)全文目录:全文目录是存储全文索引的地方,全文目录必须驻留在与SQL Server实例相关联的本地硬盘上,每个全文目录可用于满足数据库内的一个或多个表的索引需求. (2.3)断字符与词干分析器:断字符与词干分析器都是用于对全文索引的数据进行语言分析的.语言分析通常都会涉及到查找词的边界和组合动词两个方面,其中要查找词的边界,也就是确定哪几个字符是"词",称之为"断字".组合动词也就是词干分析,用于分析词.根据语言的不同,语言分析规则也不尽相同,由此可以为每个全文索引列指定不同的语言.每种语言的断字符能够使得访问语言生成的词更为准确
(2.4)标记:由断字符标识的词或字符串 (2.5)筛选器:用于从存储在varbinary(max)或image列中的文件内提取指定的文本类型的文本,当varbinary(max)或image列中包含带有特定文件扩展名的文档时,全文搜索会使用筛选器来解释二进制数据,筛选器会从文档中提取文本化信息并用于建立索引.
(2.6)填充(爬网):创建维护全文索引的过程叫填充,也叫爬网. (2.7)干扰词:经常出现,但又不是要搜索的词.为了精简全文索引,这些词通常会被忽略. (3)全文索引的体系 SQL Server的全文索引是由SQL Server FullText Search服务来维护的,该服务可以在Windows操作系统的【管理工具】-【服务】里找到,如图3.1所示,在此可以启动、停止、暂停、恢复和重新启动该服务.只有SQL Server FullText Search服务在启动状态时,才能使用全文索引. SQL Server FullText Search服务由两个部分组件支持:一个是Microsoft Full-Text Engine for SQL Server(MSFTESQL),也就是SQL Server全文搜索引擎;另一个是Microsoft Full-Text Engine Filter Deamon(MSFTEFD),也就是全文搜索引擎过滤器.
Microsoft Full-Text Engine for SQL Server的作用是填充全文索引、管理全文索引和全文目录、帮助对SQL Server数据库中的数据表进行全文搜索。Microsoft Full-Text Engine Filter Deamon包含筛选器,协议处理程序和断字符三个组件,其作用是负责从数据表中访问和筛选数据以及进行断字和词干分析。其中,筛选器的作用是从文档中提取文本信息,并将非文本信息和格式化信息(如换行符、字体大小等信息)删除,然后生成文本字符串和属性的对应,并将它们传递给索引引擎;协议处理程序用于从指定数据库中的表内访问数据;断字符用于在查询或抓取的文档中确定字符边界位置。
全文索引组件负责对全文索引的初始填充以及当全文索引表中的数据被修改时的更新。当全文填充(爬网)开始后,数据库引擎会将大量的数据存储到内存里,并通知Microsoft Full-Text Engine for SQL Server(MSFTESQL)开始进行索引。当MSFTESQL服务接到进行索引的通知后,使用协议处理程序组件从内存中取得数据进行处理后生成全文索引。MSFTESQL服务会将数据表中的某一列或几列中的字符和二进制数据编制成索引。在对varbinary(max)或image列中的数据编制索引时,筛选器会将基于为该数据指定的文件格式来提取文本。在处理索引的过程中MSFTESQL服务通过断字符来将收集到的文本数据分隔成各个单独的标记或关键字。这个过程就是全文索引的过程。
由于全文索引与普通的索引不同,全文索引并不是存储在数据表中,而是存储在全文目录中,所以在使用全文索引来搜索数据时,其运行的流程和普通索引也不一样。
如图所示,当SQL Server发出全文搜索的请求后,会将搜索的条件传递给全文搜索引擎过滤器,经过MSFTEFD处理后,将数据提供给MSFTESQL,再由MSFTESQL从全文目录中找到符合要求的数据,再返回给SQL Server进行后续操作。这就是进行全文搜索的过程
實戰部份 (4)全文目录管理 在前面章节里提到,全文目录的作用是存储全文索引,所以要创建全文索引必须先创建全文目录
(4.1)创建全文目录创建全文目录的方法如下: (1)启动【SQL Server Management Studio】,连接到本地默认实例,在【对象资源管理器】窗口里,选择本地数据库实例--【数据库】--【Northwind】--【存储】--【全文目录】。
(2)右击【全文目录】,在弹出的快捷菜单里选择【新建全文目录】选项。 (3)弹出如图4.1所示的【新建全文目录】对话框,在该对话框的【全文目录名称】文本框内可以输入全文目录的名称;在【目录位置】文本框内可以输入全文目录的存储路径,单击其后的【…】按钮可以选择路径,如果不输入的话,默认存储在“Program Files"Microsoft SQL Server"MSSQL.1"MSSQL"FTData”目录下;在【文件组】下拉列表框里可以选择全文目录所属的文件组;在【所有者】文本框里可以输入全文目录的所有者;选中【设置为默认目录】复选框可以将此目录设置为全文目录的默认目录;【区分重音】单选框用于指明目录是否区分标注字符。 4.1【新建全文目录】对话框 (4)设置完毕后单击【确定】按钮完成操作。 (4.2) 查看与修改全文目录 全文目录添加完毕之后,可以在【对象资源管理器】窗口的【全文目录】树下看到新建的全文目录。双击该全文目录,或右击该全文目录,在弹出的快捷菜单里选择【属性】选项,将会弹出如图4.2所示【全文目录属性】对话框,在该对话框里可以查看全文目录的属性内容。在【全文目录属性】对话框里有三个标签:【常规】选项卡里可以查看和修改全文目录的设置;【表/视图】选项里可以查看和修改为全文目录分配的表和视图;【填充计划】选项项里可以添加或修改确定何时填充或重新填充全文目录的计划。在如图4.2所示的【全文目录属性】对话框里,可以看到全文目录所属的文件组、名称、上次填充的时间、项计数、填充状态、目录大小、唯一键计数的内容,这些内容是不能修改的。可以修改项为:【默认目录】、【所有者】和【区分重音】三个选项内容。在【目录】操作区域,有三个单选按钮,其中【无】表示不执行优化目录、重新生成目录和重新填充目录操作;选择【优化目录】选项将会优化目录的空间利用率、提高搜索结果相关排名的准确性,从而提高查询性能;选择【重新生成目录】选项将会删除并重新生成全文目录,如果对全文目录的属性进行了更改,则必须执行该操作,例如在本对话框中修改了区分重音选择,则【目录】操作区域会自动变成灰色,系统自动重新生成全文目录;选择【重新填充目录】选项将会使用数据的最新更改来更新目录。修改完毕之后,单击【确定】按钮完成操作
图4.2查看全文目录属性 (4.3)删除全文目录 当全文目录不再需要使用时,可以将其删除,删除方式如下: (1)启动【SQL Server Management Studio】,连接到本地默认实例,在【对象资源管理器】窗口里,选择本地数据库实例--【数据库】--【Northwind】--【存储】--【全文目录】。
(2)右击要删除的全文目录名,在弹出的快捷菜单里选择【删除】选项。 (3)在弹出的【对象删除】对话框中单击【确定】按钮完成操作。 如果要一次性删除多个全文目录,可以先在【对象资源管理器】窗口中定位到【全文目录】树,在【摘要】对话框里选择多个全文目录,然后单击鼠标右键,在弹出的快捷菜单里选择【删除】选项。在弹出的【对象删除】对话框中单击【确定】按钮完成操作
實戰篇(續) (5)全文索引管理 在创建完全文目录之后,可以动手创建全文索引了,下面将介绍如何创建、编辑和删除全文索引.
(5.1)创建全文索引的注意事项 在创建全文索引之前,先介绍创建全文索引要注意的事项: 全文索引是针对数据表的,只能对数据表创建全文索引,不能对数据库创建全文索引。 在一个数据库中可以创建多个全文目录,每个全文目录都可以存储一个或多个全文索引,但是每一个数据表只能够创建一个全文索引,一个全文索引中可以包含多个字段。
要创建全文索引的数据表必须要有一个唯一的针对单列的非空索引,也就是说,必须要有主键,或者是具备唯一性的非空索引,并且这个主键或具有唯一性的非空索引只能是一个字段,不能是多字段的组合。
包含在全文索引里的字段只能是字符型的或image型的字段 (5.2)创建全文索引