第8章  后台数据库系统—— SQL Server 2005            SQL Server 2005是一千多人用了五年的时间在SQL Server 2000的基础上开发出来的。它相对于SQL Server 2000有了很大的变化。它将以往的工具大幅度集成,提供了一个集成的开发环境。它在安全性问题上有相当大的改变,它让数据库的管理和程序编写更为安全,且更有弹性。 8.1 配置SQL Server 2005   要让SQL Server 2005更安全、高效地运行,就必须要对SQL Server服务、远程SQL Server服务和SQL Server服务器进行配置。 8.1.1 初识SQL Server 2005   SQL Server 2005是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理。SQL Server 2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,可以构建和管理用于业务的高可用和高性能的数据应用程序。   SQL Server 2005数据引擎是本企业数据管理解决方案的核心。此外,SQL Server 2005结合了分析、报表、集成和通知功能。这使企业可以构建和部署经济有效的BI解决方案,帮助团队通过记分卡、Dashboard、Web Services和移动设备将数据应用推向业务的各个领域。   与Microsoft Visual Studio、Microsoft Office System以及新的开发工具包(包括Business Intelligence Development Studio)的紧密集成使SQL Server 2005与众不同。无论开发人员、数据库管理员、信息工作者还是决策者,SQL Server 2005都可以提供创新的解决方案,以便从数据中获益更多。   经过Microsoft研究团队共同努力和创造性思索,最终奉献出这一引入了上百种新增功能或改进功能的SQL Server 2005。这些功能将在以下三个主要方面提高业务:   (1) 企业数据管理   SQL Server 2005针对行业和分析应用程序提供了一种更安全可靠和更高效的数据平台。SQL Server的最新版本不仅是迄今为止SQL Server的最大发行版本,而且是最为可靠安全的版本。   (2) 开发人员生产效率   SQL Server 2005提供了一种端对端的开发环境,其中涵盖了多种新技术,可帮助开发人员大幅度提高生产效率。   (3) 商业智能   SQL Server 2005的综合分析、集成和数据迁移功能使各个企业无论采用何种基础平台都可以扩展其现有应用程序的价值。构建于SQL Server 2005的BI解决方案使所有员工可以及时获得关键信息,从而在更短的时间内制定更好的决策。 8.1.2 服务的启动、停止、暂停和重新启动   启动、停止、暂停和重新启动SQL Server服务的方法有很多,下面介绍四种常用的。   1. 使用SQL Server配置管理器   利用SQL Server配置管理器,可以启动、停止、暂停和重新启动SQL Server服务。其步骤如下:   (1) 选择“开始”|“程序”|“Microsoft SQL Server 2005”|“配置工具”|“SQL Server Configuration Manager”命令打开SQL Server配置管理器。   (2) 如图8-1所示是SQL Server配置管理器的界面。单击“SQL Server 2005服务”选项,在右边的对话框里可以看到本地所有的SQL Server服务,包括不同实例的服务。 图8-1 SQL Server配置管理器   (3) 如果要启动、停止、暂停或重新启动SQL Server服务,则右击服务名称,在弹出的快捷菜单里选择“启动”、“停止”、“暂停”或“重新启动”命令即可。   注意:   暂停与关闭的区别:暂停服务器往往是在关闭数据库之前进行的。暂停服务器后,连接客户已经提交的任务会继续执行,而新的用户连接请求将会拒绝。   2. 使用SQL Server Management Studio   在SQL Server Management Studio里同样可以完成相同的操作。具体步骤如下。   (1) 启动“SQL Server Management Studio”,连接到SQL Server数据器上。   (2) 如图8-2所示,右击服务器名,在弹出的快捷菜单里选择“启动”、“停止”、“暂停”或“重新启动”命令即可。 图8-2 SQL Server Management Studio   3. 使用服务   由于SQL Server服务是以“服务”的方式在后台运行的,所以可以在“服务”对话框中进行启动、停止、暂停和重新启动的操作。   (1) 选择“开始”|“管理工具”|“服务”命令。   (2) 在“服务”对话框里,右击“SQL Server(MSSQLSERVER)”,在弹出的快捷菜单里选择“启动”、“停止”、“暂停”或“重新启动”命令即可。   4. 使用命令提示符   (1) 选择“开始”|“运行”命令,在弹出的“运行”对话框里输入CMD命令,单击“确定”按钮。   (2) 在弹出的“命令提示符”对话框中可以用命令来启动、停止SQL Server服务。 ● 启动SQL Server默认实例的命令:net start mssqlserver。 ● 停止SQL Server默认实例的命令:net stop mssqlserver。 ● 暂停SQL Server默认实例的命令:net pause mssqlserver。 ● 恢复SQL Server默认实例的命令:net continue mssqlserver。 8.1.3 配置服务的启动模式   下面以SQL Server Agent(服务器代理)为例介绍如何配置SQL Server 2005服务的默认自动启动模式。服务器代理可以帮助管理员完成很多事先预设好的作业,在规定的时间内自动完成。   将SQL Server Agent设为自动启动的方法有两种:一种是在“SQL Server配置管理器”中设置,一种是在“服务”中设置。   1. 在SQL Server配置管理器中设置   下面介绍如何在SQL Server配置管理器中配置服务。   (1) 启动“SQL Server配置管理器”,单击“SQL Server 2005服务”,右击“SQL Server Reporting Services”,在弹出的快捷菜单中选择“属性”命令。   (2) 在如图8-3所示的“SQL Server Reporting Services属性”对话框中选择“服务”选项卡,找到“启动模式”项,单击下三角按钮,在下拉列表框里选择“自动”。 图8-3 “SQL Server Reporting Services属性”对话框   (3) 单击“确定”按钮,SQL Server Reporting Services就会随着计算机的启动而自动启动。   2. 在“服务”中设置   除了在“SQL Server配置管理器”中可以设置SQL Server服务自动启动之外,在“服务”中也可设置。因为SQL Server服务也受Windows的统一管理。以SQL Server Agent为例,设置方法如下:   (1) 选择“开始”|“程序”|“管理工具”|“服务”命令,打开“服务”对话框。   (2) 右击“SQL Server Agent”,在弹出的快捷菜单中选择“属性”命令。   (3) 弹出“SQL Server Agent的属性”对话框,如图8-4所示,设置“启动类型”为“自动”。 图8-4 “SQL Server Agent的属性”对话框   (4) 单击“确定”按钮完成操作。   让其他的SQL Server服务自动启动的设置方式也是如此。取消自动启动的办法也和上述方法类似。 8.1.4 更改登录身份   在安装SQL Server 2005时,安装步骤中有一步是设置登录SQL Server 2005使用的账户。这里,可以重新设置这个登录账号。下面以修改SQL Server服务为例,说明更改步骤:   (1) 启动“SQL Server配置管理器”,选择“SQL Server 2005服务”,右击“SQL Server”,选择“属性”命令。   (2) 在如图8-5所示的“SQL Server属性”对话框里,可以设置登录身份。在“内置账户”下拉列表框里有三个选项:本地系统、本地服务和网络服务。具体说明如下: ● 本地系统:本地系统是指定本地系统账户为登录的内置账户。指定本地系统之后无需密码就可以连接到同一台计算机上的SQL Server。但是本地系统账户可能会限制SQL Server安装与其他服务器进行交互,具体的限制取决于该账户所拥有的权限。 ● 本地服务:本地服务是指定一个特殊账户为内置账户,它与通过身份验证的用户账户类似。本地服务账户与Windows中的Users组的成员具有相同级别的资源和对象访问权限。以本地服务为身份运行的服务将以一个没有凭据的空会话形式访问网络资源。    ● 网络服务:与本地服务相似,以网络服务身份运行的服务将使用计算机账户的凭据访问网络资源。 图8-5 “SQL Server属性”对话框   当然,也可以选择“本账户”的登录方式。本账户的登录方式是指定一个使用Windows身份验证的本地用户账户或域用户账户来登录SQL Server。   (3) 设置完毕后单击“确定”按钮。 8.1.5 为SQL Server 2005配置共享内存协议   只有当SQL Server服务器端和客户端使用了相同的协议的情况下,才能进行正常的通信。所以,为SQL Server 2005配置协议必须分服务器端和客户端。   1. 配置使用共享内存协议的服务器端   下面介绍如何启用服务器端共享内存协议。   (1) 打开“SQL Server配置管理器”,在如图8-6所示的“SQL Server配置管理器”界面中选择“SQL Server配置管理器(本地)”|“SQL Server 2005网络配置”|“MSSQLSERVER的协议”节点。本例中“MSSQLSERVER的协议”是默认实例的协议。   (2) 在“协议名称”列表框里,右击Shared Memory,在弹出的快捷菜单里选择“启用”命令。   (3) 弹出“警告”对话框,提示要停止并重新启动此服务之后,更改才会生效。单击“确定”按钮。   (4) 重新启动SQL Server服务。   2. 配置使用共享内存协议的客户端   下面介绍如何启用客户端共享内存协议。   (1) 打开“SQL Server配置管理器”,在如图8-7所示的“SQL Server配置管理器”界面中选择“SQL Server配置管理器(本地)”|“SQL Native Client配置”|“客户端协议”节点。     图8-6 设置服务器端的内存共享协议 图8-7 设置客户端的内存共享协议   (2) 在“名称”列表框里右击Shared Memory,在弹出的快捷菜单里选择“启用”命令。 8.2 创建和管理SQL Server 2005数据库   SQL Server 2005中的数据库由一个表集合组成。这些表包含数据以及为支持对数据执行的活动而定义的其他对象,如视图、索引、存储过程、用户定义函数和触发器。存储在数据库中的数据通常与特定的主题或过程相关。 8.2.1 数据类型   在SQL Server 2005中,每个列、局部变量、表达式和参数都具有一个相关的数据类型。数据类型是一种属性,用于指定对象可保存的数据的类型:整数数据、字符数据、货币数据、日期和时间数据及二进制字符串等。   SQL Server提供系统数据类型集,该类型集定义了可与SQL Server一起使用的所有数据类型。还可以在Transact-SQL或Microsoft.NET Framework中自定义数据类型。   SQL Server 2005中的数据类型如表8-1所示。 表8-1 数 据 类 型 数 据 类 型 说 明 精 确 数 字 bigint 长度为8个字节,数据范围是–263~263–1 int 长度为4个字节,数据范围是–231~231–1 smallint 长度为2个字节,数据范围是–215~215–1 tinyint 长度为1个字节,数据范围是0~255 bit 如果表中的列为 8 bit 或更少,则这些列作为 1 个字节存储。如果列为 9~16 bit,则这些列作为 2 个字节存储。以此类推,数据范围是0或1 decimal 固定精度和小数位数。使用最大精度时,数据范围是–1038 +1~1038 – 1 money 长度为8个字节,数据范围是–263~263–1 smallmoney 长度为4个字节,数据范围是–214?748.3648~214?748.3647 (续表) 数 据 类 型 说 明 近 似 数 字 float 长度取决于n的值,数据范围是–1.79E + 308~–2.23E–308、0 以及 2.23E–308~1.79E + 308 real 长度为4个字节,数据范围是–3.40E + 38~–1.18E–38、0 以及 1.18E–38~3.40E + 38 日期和 时间 datetime 1753 年 1 月 1 日到 9999 年 12 月 31 日,精确度为3.33 毫秒 smalldatetime 1900 年 1 月 1 日到 2079 年 6 月 6 日,精确度为1 分钟 字 符 串 char 固定长度非Unicode字符数据,长度为n个字节。n的取值范围为1~8?000,存储大小是 n 个字节 text 可变长度非 Unicode 字符数据,最大长度为231–1字符 varchar 可变长度非 Unicode 字符数据。n 的取值范围为 1~8?000。最大存储大小是 231–1 个字节。存储大小是输入数据的实际长度加 2 个字节 Unicode 字 符 串 nchar n 个字符的固定长度的 Unicode 字符数据。n 值为 1~4,000。存储大小为两倍 n 字节 ntext 长度可变的 Unicode 数据,最大长度为 230–1个字符。存储大小是所输入字符个数的两倍 nvarchar 可变长度 Unicode 字符数据。n值为 1~4?000。最大存储大小为 231–1字节。存储大小是所输入字符个数的两倍 + 2 个字节 二 进 制 字 符 串 binary 长度为 n 字节的固定长度二进制数据,n 值为 1~8?000。存储大小为 n 字节 varbinary 可变长度二进制数据。n值为 1~8?000 。最大的存储大小为 231–1字节。存储大小为所输入数据的实际长度 + 2 个字节 image 长度可变的二进制数据,从 0~231–1 (2?147?483?647)个字节 其 他 数 据 类 型 cursor 变量或存储过程 OUTPUT 参数的一种数据类型,这些参数包含对游标的引用。使用 cursor 数据类型创建的变量可以为空 timestamp 公开数据库中自动生成的唯一二进制数字的数据类型。timestamp 通常用作给表行加版本戳的机制。存储大小为 8 个字节 sql_variant 用于存储 SQL Server 2005 支持的各种数据类型(不包括 text、ntext、image、timestamp 和 sql_variant)的值 uniqueidentifier 确保在表的多个副本中唯一地标识行 table 用于存储结果集以进行后续处理。table 主要用于临时存储一组行,这些行是作为表值函数的结果集返回的 xml 存储 XML 数据的数据类型。可以在列中或者 xml 类型的变量中存储 xml 实例,存储的 xml 数据类型表示实例大小不能超过2GB   在SQL Server 2005中,根据其存储特征,某些数据类型被指定为属于下列各组。 ● 大值数据类型:varchar(max)、nvarchar(max)和varbinary(max)。 ● 大型对象数据类型:text、ntext、image、varchar(max)、nvarchar(max)、varbinary(max)和xml。   存储在Microsoft SQL Server 2005中的所有数据必须与上述这些基本数据类型之一相兼容。cursor数据类型是唯一不能分配给表列的系统数据类型。它只能用于变量和存储过程参数。 8.2.2 SQL Server Management Studio概述   SQL Server Management Studio是Microsoft SQL Server 2005提供的一种新集成环境,用于访问、配置、控制、管理和开发SQL Server的所有组件。SQL Server Management Studio将一组多样化的图形工具与多种功能齐全的脚本编辑器组合在一起,可为各种技术级别的开发人员和管理员提供对SQL Server的访问。   Management Studio能够在一个应用程序中进行多个SQL Server安装中的开发和工作。这些SQL Server可以安装在一台计算机上,也可以安装在通过局域网(LAN)、广域网(WAN)甚至因特网(Internet)连接起来的多台计算机上。因此,从Management Studio的一个实例来处理SQL Server的开发、系统测试、用户测试和生产实例是有可能的。   Management Studio中的常用工具之一是查询编辑器(query editor)。该工具可用于编写和执行程序代码。代码可以是对象,也可以是用来操作数据的命令,甚至可以是完整的任务(如备份数据)。这里的程序代码称为Transact SQL(T-SQL)。查询编辑器是Management Studio中的一个工具,它通过编程方式创建动作,达到与拖放或使用向导一样的效果。查询编辑器得名于这样一个事实——它用T-SQL向数据库发送查询(query)。   下面介绍如何启动Management Studio。   (1) 选择“开始”|“程序”| Microsoft SQL Server 2005 | SQL Server Management Studio命令,启动Management Studio程序。   (2) 单击“选项”按钮,打开与图8-8类似的“连接到服务器”对话框。在对话框中注意如下几点: ● 将“服务器类型”保持为“数据库引擎”。 ● “服务器名称”下拉列表框包含“连接到服务器”对话框所能找到的(或知道的)SQL Server安装的列表。图8-8所示的对话框显示的是本地安装所在的计算机名。打开“服务器名称”下拉列表框,将能够搜索更多本地的或网络上的服务器。 ● “身份验证”下拉列表框指明连接身份验证类型。这里选择“Windows身份验证”选项。   注意:   身份验证类型有两类:Windows身份验证和SQL Server身份验证。当使用Windows身份验证时,在连接到SQL Server 2000时不必指定登录ID或密码,用户对SQL Server 2000的访问权限由Windows NT或Windows 2000账户或组控制;当使用SQL Server身份验证时,用户必须提供SQL Server 2000登录账户和密码,系统将通过用户的SQL Server 2000登录账户在SQL Server 2000中标识用户。 图8-8 Management Studio的“连接到服务器”对话框   (3) 单击“选项”按钮,切换到“连接属性”选项卡。在这里,将看到连接的特定属性,如图8-9所示。 图8-9 Management Studio的“连接属性” ● “连接到数据库”下拉列表框基于“登录”选项卡中服务器和登录的细节,提供一个数据库列表。单击下拉按钮,查看并选择要连接的服务器上的数据库。只有Windows账户或SQL Server登录名能够连接的数据库才会出现在列表中。另外,登录细节的任何问题将导致此处显示错误消息而不能列出数据库。 ● “网络”区域详细说明了将怎样与SQL Server建立连接。此时,无需更改当前设置。 ● “连接”区域用于处理连接超时。其中“连接超时值”文本框定义在返回错误之前等待建立连接的时间。“执行超时值”文本框定义了在T-SQL代码执行完成前等待的时间。设置为0秒意味着无超时。对于这里的设置,很少需要更改。   (4) 一旦对于“连接属性”选项卡中的所有设置都感到满意,就单击“连接”按钮,这样将连接到Management Studio上。如果曾经使用过Visual Studio .NET,会发现Management Studio有十分相似的布局。这是微软有意而为之的,为了使SQL Server成为与.NET更为融合的工具。Management Studio布局如图8-10所示,显示了使用Windows账户MYSERVER\Administrator连接到MYSERVER的情况。 图8-10 Management Studio   (5) 首个Management Studio区域是“已注册的服务器”资源管理器。通过选择“视图”|“已注册的服务器”命令,可以访问到该资源管理器,如图8-11所示。该资源管理器详细显示了所有已注册到当前Management Studio的SQL Server服务器。   (6) 要注册另一个服务器,右击“数据库引擎”节点,选择“新建”|“服务器注册”命令,此时将打开一个对话框,该对话框与前面看到的“连接到服务器”对话框非常相似。接下来,将看到如图8-12所示的“新建服务器注册”对话框。   (7) “新建服务器注册”对话框与“连接到服务器”对话框真正的不同在于:前者的“服务器名称”组合框是空的,并且多了一个新的区域,叫做“已注册的服务器”。在这个新区域中,可以给注册重命名,如Development Server或者User Testing Region,随后再给该注册一个说明。现在没有服务器要注册,因此单击“取消”按钮。   (8) 回到“已注册的服务器”下方的Management Studio“对象资源管理器”窗口,当第一次打开Management Studio时,该窗口应该已存在于此。如果看不见该窗口,可以选择“视图”|“对象资源管理器”命令来重新显示该窗口。下面讨论图8-13中所示的各个节点。 ● 数据库:包含连接到的SQL Server中的系统数据库和用户数据库。 ● 安全性:显示能连接到SQL Server上的SQL Server登录名列表。    图8-11 已注册的服务器列表 图8-12 “新建服务器注册”对话框 图8-13 对象资源管理器节点 ● 服务器对象:详细显示对象(如备份设备),并提供链接服务器列表。通过链接服务器把服务器与另一个远程服务器相连。 ● 复制:显示有关数据复制的细节,数据从当前服务器的数据库复制到另一个数据库或另一台服务器上的数据库,或者相反。 ● 管理:详细显示维护计划,并提供信息消息和错误消息日志,这些日志对于SQL Server的故障排除将非常有用。 ● Notification Services:通过电子邮件或短消息服务(SMS)等通信媒介,将数据或对象改变的通知发送到“外部世界”。    ● SQL Server代理:在特定时间建立和运行SQL Server中的任务,并把成功或失败的详细情况发送给SQL Server中定义的操作员、寻呼机或电子邮件。SQL Server代理处理作业的运行以及成功或失败通知,该节点中包含了相关的细节。   至此,已经了解了Management Studio的主要区域。 8.2.3 创建数据库   使用Management Studio来创建数据库的步骤如下:   (1) 通过选择“开始”|“程序”| Microsoft SQL Server 2005 | SQL Server Management Studio命令来启动Management Studio程序。   (2) 确认已注册并连接到服务器上。如果SQL Server服务尚未启动,进行连接时它会自动启动,这可能需要花一些时间。   (3) 在对象资源管理器中,展开“数据库”节点。此时也会发现其他的节点,如“系统数据库”(其中有master、msdb等数据库)。确保“数据库”文件夹是突出显示的并准备好进行接下来的操作。   (4) 在“数据库”文件夹上单击右键,在弹出的快捷菜单中选择“新建数据库”命令,如图8-14所示。 图8-14 选择创建一个新数据库   (5) 现在,打开了“新建数据库”窗口的“常规”页。首先,输入要创建的数据库的名称,这里是myDB。注意到,在输入的时候,“数据库文件”列表框中的两个文件也有了相应的名称,如图8-15所示。   在“数据库名称”的下方是“所有者”填写项。数据库的所有者是任何具有创建数据库权限的登录名。当前,默认其为<默认值>账户,该账户是当前登录到SQL Server上的账户。“使用全文索引”复选框忽略不用勾选。下面简单介绍一下“数据库文件”列表里面的重要选项。 ● “文件类型”选项包括“日志”和“数据”两项。日志中实际上没有系统表,所以它只可能填满操作记录。若填满了事务日志,会因为日志满而导致SQL Server停止处理。指定多个日志位置则可以避免这种情况。在大型生产系统中采用故障转移日志文件是可取的。 图8-15 “新建数据库”对话框的“常规”设置 ● “初始大小(MB)”列。如果数据库全空,则数据库的初始大小就是其大小。数据库的大小依赖于很多因素,如表的数目、存储了多少信息、希望数据库增长到多大等。 ● “自动增长”列。该选项显示SQL Server是否能在数据库到达其初始大小极限时自动应对。如果没有设置这一选项,将不得不监视数据库,并在需要时手动扩充其大小。当SQL Server负责增长数据库的大小时,它必须知道按照多大数量来增长。这需要在自动增长选项中设置。可以让SQL Server每次增加预先设定的数量(以MB为单位),也可以按百分比来增长。默认是设置为“按百分比”。 ● “路径”。可以在该列中定义数据库文件在硬盘上的存放位置。 ● “文件名”条目(图8-15所示窗口右侧没显示出的部分)是用于存储数据库中数据的物理文件的名称。默认情况下,SQL Server用数据库名称来创建物理文件名,用数据库名称后面加_log后缀来创建日志文件名。   (6) 单击“确定”按钮,创建新数据库。   此时,SQL Server会执行数个操作。首先,它将检查数据库是否已经存在,若存在,则必须为数据库选择另一个名称。验证过数据库的名称后,SQL Server要进行安全检查,以确认用户有创建数据库的许可。通过了安全审查,就开始创建数据文件并放置在硬盘上。假设有足够的空间,文件已成功创建,直到此时,才用内部系统表中的数据库信息更新SQL Server。一旦完成了这一步骤,数据库创建完成。   当回到Management Studio中的对象资源管理器时,刷新其中的内容,会看到列出的新数据库,如图8-16所示。 图8-16 对象资源管理器中显示的新数据库 8.2.4 删除数据库   在发生错误或想要删除不再使用的数据库时,就要知道如何删除数据库。删除数据库也称为丢弃(dropping)数据库。   (1) 如果没有启动Management Studio,则启动并展开节点直至myDB数据库。   (2) 右击myDB数据库,弹出快捷菜单。   (3) 单击“删除”选项,如图8-17所示,弹出“删除对象”对话框。 图8-17 在Management Studio中删除数据库   (4) 在如图8-18所示的对话框中,选择“关闭现有连接”复选框,然后单击“确定”按钮即可删除数据库。   在“删除对象”对话框中,通过“删除数据库备份和还原历史记录信息”复选框,可以选择保留或删除完成数据库备份或还原后所产生的历史记录信息。如果想要保留这些信息用于审核,则清除该复选框。   “关闭现有连接”复选框非常重要。如果某个程序是基于要删除的数据库运行的,或者有打开的设计窗口或查询窗口是连接到那个数据库上的,则选择该选项将关闭这些连接。因为,若要删除数据库,就应确保该数据库的连接不存在。这个选项,可以关闭所有数据库连接,包括一些恶意的数据库连接。 图8-18 在“删除对象”对话框中选择删除数据库   (5) 单击“确定”按钮。此时永久删除了数据库。   当单击“确定”按钮时,SQL Server要发送命令到SQL Server以告知要删除的数据库的名称。然后,SQL Server将核实当前没有任何到数据库的连接。若有人通过SQL Server查询编辑器或ADO.NET之类的数据访问方法连接到数据库上,SQL Server将拒绝删除。除非选择了“关闭现有连接”,这样将略过该过程。 8.3 创建和管理SQL Server 2005数据表 8.3.1 创建数据表   前面介绍了使用Management Studio创建数据库,下面介绍如何使用Management Studio创建数据库表。其步骤如下:   (1) 启动SQL Server Management Studio。   (2) 在“对象资源管理器”中,展开“数据库”节点,再展开至要创建表的某个数据库,如myDB,用鼠标右键单击myDB的“表”节点,在快捷菜单中选择“新建表”命令,如图8-19所示。   系统就会打开表设计器窗口,如图8-20所示。       图8-19 新建表向导 图8-20 表设计器   (3) 输入列名,选择数据类型,并选择各个列是否允许空值。选择某一列,用鼠标右键单击,从弹出的快捷菜单中可以选择“设置主键”、“插入列”、“删除列”等命令,如图8-20所示。下面简单介绍常用的几个命令。 ● “设置主键”:选择“设置主键”命令就为该表创建了主键。此时,将自动创建名为“PK_”(后跟表名)的主键索引,可以在“索引/键”对话框中看到该索引。若要创建复合主键则要同时选择多个列,方法是在单击其他列的行选择器时按住Ctrl键。 ● “插入列”:选择该命令将会在现有行之前插入一个空白行而为表创建一个新列。 ● “删除列”:选择该命令将会删除选定行从而将表的该列删除。 ● “关系”:选择该命令将会弹出“外键关系”对话框以设置该表的外键。在8.4节会介绍如何创建外键关系,这里就不再介绍了。 ● “索引/键”:选择该命令将会弹出“索引/键”对话框以设置该表的索引。在8.5节会专门介绍如何创建索引,这里就不再赘述了。 ● “CHECK约束”:选择该命令将会弹出“CHECK约束”对话框以设置该表的CHECK约束。在该对话框中单击“添加”按钮,在网格内的“表达式”字段中输入CHECK约束的SQL表达式。然后单击“关闭”按钮即可创建CHECK约束。   (4) 表中各列的名称和数据类型设置完毕后,在右侧“表属性”对话框的“名称”文本框中输入表的名称myTable。然后单击工具菜单中的“保存”按钮,则表创建完毕。   在“对象资源管理器”中展开myDB中的“表”节点,则刚才创建的表myTable就呈现在该数据库中。 8.3.2 修改数据表   表创建好以后,可以更改最初创建表时定义的许多选项。   1. 修改表名称   在SQL Server Management Studio的“对象资源管理器”中展开“数据库”节点,选择数据库myDB,展开“表”节点,用鼠标右键单击myTable,从弹出的快捷菜单中选择“重命名”命令,即可完成修改表名称,如图8-21所示。   2. 修改字段列属性   在“对象资源管理器”中展开“数据库”节点,选择数据库myDB,展开其“表”节点,用鼠标右击myTable,从弹出的快捷菜单中选择“修改”命令,如图8-22所示。        图8-21 重命名表向导 图8-22 修改表属性向导   在“表设计器”中可以重新对表的名称,以及表中各个字段的名称、数据类型进行修改,可以设定与修改主键、增加与删除列,如图8-23所示。 图8-23 修改表属性 8.3.3 删除数据表   在数据库中,如果某个表不再需要,则可以使用SQL Server Management Studio将其删除。   在SQL Server Management Studio的“对象资源管理器”中,展开“数据库”节点,选择数据库myDB,用鼠标右键单击myTable表,从弹出的快捷菜单中选择“删除”命令,即可实现表的删除,如图8-24所示。 8.3.4 维护表数据   在SQL Server Management Studio中可以可视化地对表进行增加、删除、修改的数据操作。步骤如下:   以MyDB数据库为例,在SQL Server Management Studio的“对象资源管理器”中,展开“数据库”节点,选择myDB数据库,用鼠标右击表myTable,从弹出的快捷菜单中选择“打开表”命令,就出现了该表的可视化编辑表格。可以一条一条地增加、删除、修改数据记录,如图8-25所示。   维护完后,单击工具栏中的按钮就执行了对表数据的维护。 图8-25 增加表记录 8.3.5 查询表数据   启动SQL Server Management Studio,选择“文件”|“新建”|“数据库引擎查询”命令,新建查询,用于查询myDB数据库中表myTable中的全部数据,在空白窗口中输入如下语句:   SELECT * FROM [myDB].[dbo].[myTable]   然后,单击工具栏中的执行按钮,查询的结果如图8-26所示。 图8-26 查询表记录   本节中只是给出了常用的Select语法语句,读者要想进一步地学习,可以参看SQL Server联机丛书。 8.4 外键关系   键的作用之一就是将一个表中的记录关联到另外一个表中的记录上。在一个表中,将记录关联到其他表的列,就是外键。这意味着这个键的值和主表中主键的值是相同的。与主键不同,外键的值不一定是唯一的。以书作者/书例子来说,一个作者可以写出多本书,但是一本书只属于一个作者,这是“一对多”关系。Author(作者)表中的主键列Authorid和Book(书)表中的外键列Authorid相关联,这种关系称为外键约束。下面将演示如何创建Book表的外键关系。其步骤如下:   (1) 按8.3节所述步骤在myDB数据库中创建Author和Book表。Author表含有Authorid、Name、Phone字段,Authorid是其主键;Book表含有Bookid、Bookname、Authorid字段,Bookid是其主键。   (2) 创建完Book表后,在Book表的列设计视图中选择Authorid列,用鼠标右键单击,从弹出的快捷菜单中选择“关系”命令,就会弹出“外键关系”对话框。在该对话框中单击“添加”按钮。该关系将以系统提供的名称显示在“选定的关系”列表中,名称格式为FK__,其中第一个tablename是主键表的名称,第二个tablename是外键表的名称,如FK_Book_Book,如图8-27所示。   (3) 在“外键关系”对话框的“选定的关系”列表中选择FK_Book_Book关系。单击右侧网格中的“表和列规范”,再单击该属性右侧的省略号(…),弹出“表和列”对话框,如图8-28所示。      图8-27 “外键关系”对话框 图8-28 “表和列”对话框   (4) 在“表和列”对话框的“主键表”下拉列表中选择要位于关系主键方的表,如Author。在其下方的下拉列表中选择要分配给主键表的主键的列,如Authorid。“外键表”的名称是默认的,不用也不能让修改。在其下方,即在每个主键列右侧的相临下拉列表中,选择外键表的相应外键列,如Authorid。之后,表设计器会给出建议的关系名称,如FK_Book_Author。若要更改此名称,可编辑“关系名”文本框的内容,如图8-29所示。   (5) 单击“确定”按钮即可创建关系并回到“外键关系”对话框。至此,外键关系创建成功,如图8-30所示。单击“关闭”按钮,退出“外键关系”对话框。    图8-29 选择好了的“表和列”对话框 图8-30 “外键关系”成功创建        8.5 索引和视图 8.5.1 索引(Index)   索引是与表或视图关联的磁盘上的结构,可以加快从表或视图中检索行的速度。索引包含由表或视图中的一列或多列生成的键。这些键存储在一个结构(B树)中,使SQL Server可以快速有效地查找与键值关联的行。   表或视图可以包含以下类型的索引: ● 聚集。聚集索引根据数据行的键值在表或视图中排序和存储这些数据行。每个表只能有一个聚集索引,因为数据行本身只能按一个顺序排序。只有当表包含聚集索引时,表中的数据行才按排序顺序存储。如果表具有聚集索引,则该表称为聚集表。如果表没有聚集索引,则其数据行存储在一个称为堆的无序结构中。 ● 非聚集。非聚集索引具有独立于数据行的结构。非聚集索引包含非聚集索引键值,并且每个键值项都有指向包含该键值的数据行的指针。从非聚集索引中的索引行指向数据行的指针称为行定位器。行定位器的结构取决于数据页是存储在堆中还是聚集表中。对于堆,行定位器是指向行的指针。对于聚集表,行定位器是聚集索引键。   1. 创建聚集索引   下面介绍如何对表myTable创建聚集索引。   (1) 打开SQL Server Management Studio。在SQL Server Management Studio的“对象资源管理器”中,展开“数据库”| myDB |“表”| dbo.myTable |“索引”节点,右击“索引”节点,在弹出的快捷菜单中选择“新建索引”命令,如图8-31所示。 图8-31 新建索引   (2) 在弹出的“新建索引”对话框中编辑索引。在“索引名称”文本框中输入CLIDX_myTable_ID,在“索引类型”下拉选择框中选择“聚集”,勾选“唯一”,单击“添加”按钮,就会弹出“从‘dbo.myTable’中选择列”对话框。勾选想要添加为索引的列,如ID列。单击“确定”按钮就完成了聚集索引CLIDX_myTable_ID的创建,如图8-32所示。 图8-32 新建索引选项   2. 创建复合聚集索引   一个复合索引是一个为多个列定义的索引。索引键将依据第一个索引键列进行排序,然后是第二个,依次类推。在使用两个以上的列一起作为条件进行查询的时候,或者在需要通过多列来唯一确定一行的时候,这种索引是非常有用的。   要在myTable表上构建一个复合聚集索引,其步骤与创建聚集索引一样,只是在最后的“从‘dbo.myTable’中选择列”对话框中勾选多个列即可,如勾选ID、NAME两列。   3. 创建非聚集索引   要在myTable表上构建一个非聚集索引,其步骤与创建聚集索引一样,只是在选择“索引类型”的时候选择“非聚集”。 8.5.2 视图(View)   视图是一个命名的虚拟表(virtual table),它由一个查询来定义,可以当作表使用。与持久表(permanent table)不同的是,视图中的数据没有物理表现形式,除非为其创建索引。当在一个未建索引的视图执行查询时,SQL Server实际访问的是基础表(underlying table)。   要创建一个视图,为其指定一个名称和一个查询即可。Microsoft SQL Server只保存视图的元数据(metadata),用于描述这个对象,以及它所包含的列、安全、依赖等。当查询视图时,无论获取数据还是修改数据,查询处理器(query processor)都会用视图定义代替视图引用。也就是说,查询处理器展开视图定义并生成访问基对象(underlying objects)的执行计划。   视图的查询定义必须满足3个条件: ● 不能在查询定义中使用ORDER BY,除非定义中包含TOP或FOR XML说明符。 ● 所有的结果列必须有名称。 ● 所有结果列的名称必须是唯一的。   定义视图的查询中在没有TOP或FOR XML说明符的情况下不能包含ORDER BY子句,这是因为视图被认为表示一个表。表是一个逻辑实体,它的行没有顺序,不同于游标,游标是一个物理对象,它可以对行排序。表中的所有列必须有名称,且名称必须是唯一的。为视图的目标列指定名称有两种方法,可以在视图名称后面的圆括号内指定,也可以用每个表达式后面的别名作为列名称。   通过下面的一个示例来学习如何在SQL Server Management Studio中创建视图。   (1) 启动SQL Server Management Studio,展开其资源管理器中的“数据库”| myDB |“视图”节点,用鼠标右击“视图”,在弹出的快捷菜单中选择“新建视图”命令,如图8-33所示。   (2) 在弹出的“添加表”对话框中选择要操作的表,在这里选择myTable,然后,单击“添加”按钮,如图8-34所示。        图8-33 新建视图 图8-34 “添加表”对话框   (3) 添加了myTable表以后,单击“关闭”按钮,就关闭了“添加表”对话框,在Management Studio中就会出现视图编辑区,如图8-35所示。   (4) 勾选要创建视图的列,如ID、NAME两列,然后给它们取个别名,当然不取也行,如图8-36所示。         图8-35 视图编辑器 图8-36 编辑视图   (5) 单击工具栏中的执行按钮,就可看到视图表的运行结果,再单击“保存”按钮,在弹出的“选择名称”对话框中输入该视图的名称View_myTable,视图就创建成功了,如图8-37所示。 图8-37 视图命名 8.6 存储过程和触发器 8.6.1 存储过程   存储过程是一段可执行的服务端程序。如果使用得当,可以提供强大的功能和性能优势。不同于用户定义函数(UDF),存储过程允许有副作用(side effect),可以修改表中的数据,甚至可以修改对象的架构。存储过程可以用作安全层(security layer)。通过授予对存储过程的执行权限而不是授予对基对象的执行权限,可以控制对象的访问。可以在存储过程中执行输入验证,通过使用存储过程,可以允许那些只有作为一个整体执行才会有意义的操作,而不是允许用户直接操作对象。   下面演示如何使用SQL Server Management Studio创建存储过程SelectNameByID,即通过用户ID查找用户名。其步骤如下:      (1) 启动SQL Server Management Studio,在其“对象资源管理器”中,展开“数据库”| myDB |“可编程性”,用鼠标右击“存储过程”,在弹出的快捷菜单中选择“新建存储过程”命令,如图8-38所示。   (2) 在新建的查询对话框中,输入创建存储过程的SQL语句,如图8-39所示。      图8-38 创建存储过程向导 图8-39 创建存储过程   (3) 单击工具栏中的执行按钮,即可创建一个新的存储过程。其SQL语句如代码清单8.1所示。 代码清单8.1   CREATE PROCEDURE SelectNameByID    @ID varchar(20)   AS   BEGIN    SELECT Name    FROM myTable    WHERE ID = @ID;   END   GO 8.6.2 触发器   触发器是一种特殊类型的存储过程。触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。当对某一表进行诸如UPDATE、INSERT、DELETE这些操作时,SQL Server就会自动执行触发器所定义的SQL语句,从而确保对数据的处理必须符合由这些SQL语句所定义的规则。触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。Microsoft SQL Server 2005中的触发器包括两大类触发器:DML触发器和DDL触发器。DDL触发器是SQL Server 2005的新增功能,当服务器或数据库中发生数据定义语言(DDL)事件时将调用这些触发器;当数据库中发生数据操作语言(DML)事件时将调用DML触发器。   下面介绍使用SQL Server Management Studio创建DML触发器。其步骤如下:   (1) 启动SQL Server Management Studio,在其“对象资源管理器”中展开“数据库”| myDB |“表”| myTable |“触发器”节点,用鼠标右击“触发器”,在弹出的快捷菜单中选择“新建触发器”命令,如图8-40所示。   (2) 在新建的查询对话框中输入创建触发器的SQL语句,如代码清单8.2所示。 代码清单8.2   CREATE TRIGGER DeleteByID    ON myTable    AFTER DELETE   AS   BEGIN    SET NOCOUNT ON;    DELETE test FROM test, myTable WHERE test.ID=myTable.ID   END   GO   (3) 单击工具栏中的执行按钮,即可创建一个触发器,如图8-41所示。       图8-40 创建触发器向导 图8-41 创建触发器                  8.7 Reporting Services 8.7.1 Reporting Services概述   SQL Server 2005 Reporting Services是基于服务器的报表平台,可以用来创建和管理包含关系数据源和多维数据源中的数据的表格、矩阵、图形和自由格式的报表。可以通过基于因特网的连接来查看和管理所创建的报表。Reporting Services包括下列核心组件: ● 一整套工具,可以用来创建、管理和查看报表。 ● 一个报表服务器组件,用于承载和处理各种格式的报表。输出格式包括HTML、PDF、TIFF、Excel、CSV等。 ● 一个API,使开发人员可以在自定义应用程序中集成或扩展数据和报表处理,或者创建自定义工具来生成和管理报表。   生成的报表可以基于SQL Server、Analysis Services、Oracle 或任何Microsoft .NET数据访问接口(如ODBC或OLE DB)提供的关系数据或多维数据。可以创建表格、矩阵和自由格式的报表。还可以创建使用预定义模型和数据源的报表。   在Reporting Services中生成的报表包括交互功能和基于Web的功能,在外观和功能上超越了传统的报表。例如,深化报表允许在数据层间进行导航;参数化报表支持在运行时对内容进行筛选;自由格式的报表支持以垂直、嵌套和并排方式安排内容布局,支持指向基于Web的内容或资源的链接,支持通过远程或本地Web连接安全地集中访问报表。   尽管Reporting Services本身已与Microsoft的其他技术进行了集成,但是开发人员和第三方供应商可以生成相应的组件,以支持其他报表输出格式、传递格式、身份验证模式和数据源类型。在模块设计中特意创建了开发和运行时体系架构,以支持可能采用的第三方扩展和集成。   SQL Server Reporting Services是一组处理组件、工具和编程接口的集合,支持在托管环境中进行开发以及使用格式丰富的报表。该工具集包括部署工具、配置和管理工具,以及报表查看工具。编程接口包括简单对象访问协议(SOAP)、URL端点和Windows Management Instrumentation(WMI),可以轻松地与新的或现有的应用程序和入口集成。   图8-42显示了Reporting Services组件和工具,还显示了自定义工具,如何适用于总体设计。它显示了服务器组件之间的请求流和数据流,以及哪些组件发送和检索数据存储区中的内容。 图8-42 Reporting Services 体系结构图 8.7.2 创建报表   下面介绍如何使用SQL Server 2005报表设计器创建基于myDB数据库的基本表报表。先创建报表服务器项目以用于保存报表定义(.rdl)文件和报表所需的其他任何资源文件。然后,创建报表定义文件、定义报表的数据源、定义数据集并定义报表布局。运行报表时,将检索实际数据并将其与布局相结合,然后呈现在屏幕上,以便执行导出、打印或保存操作。   1. 创建报表服务器项目   创建报表服务器项目的过程如下:   (1) 选择“开始”|“程序”|Microsoft SQL Server 2005 | Business Intelligence Development Studio命令,以启动Business Intelligence Development Studio。      (2) 选择“文件”|“新建”|“项目”命令,弹出“新建项目”对话框。   (3) 在“项目类型”列表中选择“商业智能项目”选项。   (4) 在“模板”列表中选择“报表服务器项目”选项。   (5) 在“名称”文本框中输入myReport,如图8-43所示。 图8-43 新建报表服务器项目   (6) 单击“确定”按钮以创建项目,解决方案资源管理器中将显示myReport项目,如图8-44所示。 图8-44 myReport项目   创建新的报表定义文件的过程如下:   (1) 在解决方案资源管理器中,右击“报表”,在弹出的快捷菜单中选择“添加”|“新建项”命令,弹出“添加新项”对话框。   (2) 在“添加新项”对话框中选择“报表”选项。   图8-45显示了“添加新项”对话框,该对话框用于向项目中添加报表和其他项。   (3) 在“名称”文本框中输入myTableReport.rdl,再单击“添加”按钮。   此时报表设计器将打开,并在“数据”视图中显示新的.rdl文件。 图8-45 “添加新项”对话框   报表设计器是运行在Business Intelligence Development Studio中的Reporting Services组件。它包含三个视图:“数据”、“布局”和“预览”。单击各个选项卡可更改视图。可以在“数据”视图中定义数据,在“布局”视图中定义报表布局,在“预览”视图中运行报表并查看其外观。   2. 设置数据源连接信息   将报表添加到项目后,需要定义一个可向报表提供数据的数据源。在Reporting Services中,报表中使用的数据包含在“数据集”中。数据集包括一个指向数据源的指针和将由报表使用的查询。   下面将使用myDB数据库作为数据源。   (1) 单击myTableReport.rdl报表的“设计”视图中的“数据”选项卡,再选择“数据集”下拉列表中的“新建数据集”命令。此时,将弹出“数据源”对话框,如图8-46所示。   (2) 在“名称”文本框中输入myDataSource。   (3) 在“类型”下拉列表中选择Microsoft SQL Server。   (4) 在“连接字符串”区域,单击“编辑”按钮,弹出“连接属性”对话框以创建连接字符串,如图8-46所示。在“连接属性”对话框的“服务器名”下拉列表中选择MYSERVER,在“登录到服务器”选项组中选择“使用Windows身份验证”单选按钮,在“连接到一个数据库”选项组中选择myDB数据库。单击“测试连接”按钮,如果连接成功则会弹出如图8-46右图所示的“测试连接成功。”提示,单击“确定”按钮,再单击“连接属性”对话框中的“确定”按钮完成连接字符串的创建。   (5) 单击如图8-46左图所示的“数据源”对话框中的“确定”按钮,myDB将添加到“数据集”列表中,如图8-47所示。 图8-46 “数据源”对话框 图8-47 添加myDB数据集   3. 定义报表查询   定义数据源后,报表设计器将创建一个数据集,并在“数据”选项卡视图中显示可用于设计查询的通用查询设计器。下面将在查询设计器中创建一个查询,用于从数据库myDB中检索myTable表的所有数据记录。   通用查询设计器是默认的查询设计工具,能处理复杂的Transact-SQL语句,并且直到运行报表时才对语句进行格式设置或验证。   将以下查询输入到通用查询设计器的SQL窗格中,SQL窗格是设计工具中最上层的窗格。   SELECT * FROM myTable      单击查询设计器工具栏上的运行按钮,就能查看查询的结果,如图8-48所示。 图8-48 报表查询设计器   4. 添加表数据区域   定义查询后,可以开始定义报表布局。报表布局包括表、文本框、图像和要在报表中包括的其他项。在Reporting Services中,包含基础数据集中重复数据行的项是数据区域。可通过将数据区域和其他报表项拖放到“布局”选项卡的设计图面上来创建报表布局。一旦添加了数据区域,即可选择要添加到每个数据区域的字段。   (1) 单击“布局”选项卡。   (2) 在“工具箱”中单击“表”,再单击设计图面。报表设计器将在设计图面的宽度内绘制一个具有三列的表。   (3) 在“数据集”窗口中展开报表数据集myDB以显示字段。   (4) 将NAME字段从“数据集”窗口拖到此表第一列的中间行(详细信息行)中。   当将字段拖到中间单元时,会发生两件事。首先,详细信息单元将包含下面的文本:“=Fields! NAME.Value”。该文本是为NAME字段指定数据值的字段表达式。添加到详细信息行的字段始终被指定为表达式。其次,列标题值自动放置在紧邻字段表达式上面的第一行。默认情况下,该列是字段的名称,将其改为“姓名”。   (5) 将Grade字段从“数据集”窗口拖到此表第二列的中间行(详细信息行)中,将其表头字段名称改为“等级”。   (6) 将Harm字段从“数据集”窗口拖到此表第三列的中间行(详细信息行)中,将其表头字段名称改为“伤害值”。   (7) 在“工具箱”中,单击“文本框”,再单击设计图面。报表设计器将在设计图面上显示一个文本框,在其中输入“倚天屠龙记人物等级表”,并调整其字体大小,置于表之上作为表的标题。   图8-49显示了已由下列字段填充的表数据区域:NAME、Grade、Harm和标题。 图8-49 报表布局   5. 预览基本报表   通过预览报表,可以不必执行将报表发布到报表服务器的其他步骤,而轻松查看报表的外观。   (1) 选择“文件”|“全部保存”命令,保存报表项目。   (2) 单击“预览”选项卡,报表设计器将运行此报表,并将其显示在预览视图中。   图8-50所示为在“预览”窗口中显示此报表。 图8-50 报表预览 8.7.3 发布报表   使用“预览”可在报表发布到报表服务器之前对其进行检查。预览报表之后,可以在“布局”视图中进一步修改或者将其发布到报表服务器。   报表服务器是Reporting Services的主要组件。报表服务器以Microsoft Windows服务和Web服务的形式实现,可以为处理和呈现报表提供优化的并行处理基础结构。Web服务公开了一组客户端应用程序,可用来访问报表服务器的编程接口。Windows服务可提供初始化、计划和传递服务以及服务器维护功能。这些服务协同工作,构成单个报表服务器实例。      在发布报表之前,要确保报表服务器配置正确,下面介绍如何使用Reporting Services配置工具来配置报表服务器。   1.配置Reporting Services   使用Reporting Services配置工具可以配置SQL Server 2005 Reporting Services的安装。如果使用“仅文件”安装选项安装报表服务器,必须使用此工具来配置服务器,否则服务器将不可用。如果使用默认配置安装选项安装报表服务器,可以使用此工具来验证或修改在安装过程中指定的设置。其配置步骤如下:   (1) 单击“开始”菜单,选择“程序”| Microsoft SQL Server 2005 |“配置工具”|“Reporting Services配置”命令,从而启动Reporting Services配置管理器。单击弹出的“选择报表服务器安装实例”对话框中的“连接”按钮,进入配置报表服务器界面,如图8-51所示。 图8-51 配置报表服务器 (2) 单击左边的菜单项“服务器状态”,在右边相应地显示报表服务器的状态。若报表服务器没有启动,单击“启动”按钮,以启动报表服务。 (3) 单击左边的菜单项“报表服务器虚拟目录”,在右边相应地显示报表服务器虚拟目录设置界面。若要新建虚拟目录,则单击“新建”按钮自己设定其名称和所在的网站。这里采用默认的名称(ReportServer)和网站(默认Web站点)设置就行了。勾选“应用默认设置”,单击右下角的“应用”按钮,就为报表服务器创建好了虚拟目录,如图8-52所示。 (4) 单击左边的菜单项“报表管理器虚拟目录”,在右边相应地显示报表管理器虚拟目录设置界面。若要新建虚拟目录,则单击“新建”按钮自己设定其名称和所在的网站。这里采用默认的名称(Reports)和网站(默认Web站点)设置就行了。勾选“应用默认设置”,单击右下角的“应用”按钮,就为报表管理器创建好了虚拟目录。 图8-52 报表服务器虚拟目录设置   (5) 单击左边的菜单项“Windows服务标识”,在右边相应地显示Windows服务标识设置界面。这里采用默认的设置就行了。单击右下角的“应用”按钮,Windows服务标识就配置好了,如图8-53所示。 图8-53 Windows服务标识 (6) 单击左边的菜单项“数据库安装”,在右边相应地显示数据库连接设置界面。单击“连接”按钮,弹出“SQL Server连接”对话框。这里采用默认的设置,如图8-54所示。 图8-54 连接服务器实例   单击“确定”按钮,关闭“SQL Server连接”对话框,回到“数据库连接设置”界面。在“服务器名称”下拉列表中选择MYSERVER;单击数据库名称行的“新建”按钮,弹出指定报表服务器数据库的对话框,在“数据库名称”文本框中输入ReportServer1,在“语言”下拉列表中选择“中文(中华人民共和国)”,如图8-55所示。单击“确定”按钮,回到“数据库连接设置”界面。数据库会创建ReportServer1和ReportServer1TempDB两个数据库作为报表服务器数据库,ReportServer1用于持久性数据存储,ReportServer1TempDB用于临时存储。在数据库名称下拉列表框中选择ReportServer1,在“凭据类型”下拉列表框中选择“SQL Server凭据”。注意,共有三种类型的凭据:服务凭据,使用报表服务器Web服务和Windows服务账户的Windows集成安全性;Windows凭据,使用Windows域用户账户;SQL Server凭据,使用单个SQL Server登录名。在“账户名”文本框中输入sa,在“密码”文本框中输入sa123,最后单击右下角的“应用”按钮,再单击“退出”按钮,就配置好了报表服务器数据库连接,如图8-56所示。 图8-55 创建报表服务器数据库 图8-56 配置报表服务器数据库连接   2.将报表发布到报表服务器   设计并测试完一个或一组报表后,即可使用报表设计器将报表发布到生产环境中的报表服务器上。将报表发布到测试服务器的过程与将报表发布到生产服务器的过程是相同的。其步骤如下:   (1) 在Business Intelligence Development Studio的解决方案资源管理器窗口中,右击myReport项目,在弹出的快捷菜单中选择“属性”命令,就会弹出“myReport属性页”对话框,如图8-57所示。 图8-57 “myReport属性页”对话框   (2) 在弹出的“myReport属性页”对话框中,单击“配置管理器”按钮,就会弹出“配置管理器”对话框。   (3) 在弹出的“配置管理器”对话框的“活动解决方案配置”下拉列表中选择Production选项,如图8-58所示。 图8-58 “配置管理器”对话框   (4) 单击“关闭”按钮,将返回到项目“myReport属性页”对话框。   (5) 在“myReport属性页”对话框的TargetServerURL中输入报表服务器的虚拟目录,如http://myserver/reportserver。这是报表服务器的虚拟目录,而不是报表管理器的虚拟目录。   (6) 如果“调试”属性节点尚未打开,请将其展开以显示StartItem属性。单击StartItem旁边的文本框,并从下拉列表中选择报表myTableReport.rdl,如图8-57所示。   (7) 单击“确定”按钮。   (8) 保存报表项目。选择“文件”|“全部保存”命令。   (9) 发布报表。选择“调试”|“开始执行(不调试)”命令。   (10) 发布完成后,报表设计器将打开IE浏览器,即可查看该报表,如图8-59所示。   当然,也可以通过在IE浏览器的地址栏中输入http://myserver/ReportServer来查看发布到报表服务器的所有报表项目。如图8-60所示,单击myReport超链接,也可查看到如图8-59所示的示例报表。     图8-59 发布了的myReport报表 图8-60 报表服务器发布项目    8.7.4 报表的传递技术   在Reporting Services中,有两种方法可用于访问和传递报表: ● 通过按需访问,用户可以从报表查看工具中选择报表。可以使用报表管理器、Microsoft SharePoint Web部件或浏览器。 ● 基于订阅的访问可以自动生成报表,并将其传递到目标。可以将报表传递到电子邮件收件箱或文件共享位置。   若要按需查看报表,可以在文件夹层次结构(称为报表服务器文件夹命名空间)中搜索或选择报表。若要自动接收报表,可以订阅特定报表。报表运行时,将得到报表可用的通知,或者会收到包含报表副本的电子邮件。   报表服务器管理员可以生成数据驱动订阅,用于将报表推向一大组用户。数据驱动订阅将在运行时生成一个收件人列表。在数据驱动订阅中,传递设置是在触发订阅时基于存储的数据(如雇员数据库中的数据)生成的。   Reporting Services支持多种查看格式。报表一开始以HTML格式显示,但在呈现报表之后,可以用不同的格式(如Excel或PDF)重新显示报表。   使用报表生成器中的导出选项,可以将报表数据另存为其他文件类型(如Excel或HTML)。通过导出报表内容,可以执行以下操作: ● 在其他应用程序中使用报表数据。 ● 将报表数据另存为其他文件类型。 ● 以不同的格式打印报表数据。   报表工具栏中提供了导出选项。单击报表生成器窗口中的“运行报表”按钮后,该工具栏就会显示在报表的顶端。单击“导出”,再从下拉列表中选择格式。此时,将显示“另存为”对话框,在其中可选择要保存导出报表的位置并为新文件指定名称。所用计算机上配置的文件关联将决定打开导出报表时所需使用的应用程序。   在导出报表数据时,报表将按其当前的状态保存。完成导出之后,就可以继续使用报表生成器中的报表,将报表保存到报表服务器,或只是简单地结束报表生成器会话。导出报表后,在报表生成器中对报表所做的任何更改都不会保存到刚导出的文件中。如果希望修改反映到导出的报表中,则必须重新导出报表。 8.8 数据库的备份和还原   为了保证数据库里的数据万无一失,必须要定期对数据库进行备份,一旦数据库出现了问题,可以从备份的文件里最大程度地还原数据。 8.8.1 备份数据库   使用SQL Server Management Studio可以备份数据库,包括完整备份、差异备份、事务日志备份以及文件和文件组备份。备份方式大同小异。下面以备份myDB数据库为例,介绍如何使用SQL Server Management Studio备份数据库。   (1) 启动SQL Server Management Studio,在“对象资源管理器”窗口里展开树形目录,选择“数据库实例(MYSERVER)”|“数据库”| myDB。   (2) 右击myDB,在弹出的快捷菜单里选择“任务”|“备份”命令,弹出如图8-61所示的“备份数据库”对话框。 图8-61 “备份数据库”对话框   (3) 在如图8-61所示对话框里可以完成以下操作: ● 选择要备份的数据库。这里默认myDB数据库就行了。 ● 选择要备份类型。备份类型分为“完整备份”、“差异备份”、“事务日志备份”以及“文件和文件组备份”四种。在“备份类型”下拉列表框里选择“完整”。 ● 设置备份集的信息。在“备份集”区域里可以设置备份集的信息,其中在“名称”文本框里输入“myDB完整备份”;在“说明”文本框里输入“完整备份练习”;在“备份集过期时间”区域,可以设置本次备份在几天后过期或在哪一天过期。在“在以下天数后”文本框里可以输入的范围为0~99999,如果为0则表示不过期。备份集过期后会被新的备份覆盖。这里就设置为0。 ● 将数据库备份到哪里:默认是备份到C:\Program Files\Microsoft SQL Server\ MSSQL.1\MSSQL\Backup\ myDB.bak。也可以单击“添加”按钮添加备份路径。   (4) 设置完毕后单击“确定”按钮,开始数据库备份。 8.8.2 还原数据库   在SQL Server Management Studio里还原数据库的步骤如下:   (1) 启动SQL Server Management Studio,在“对象资源管理器”窗口里展开树形目录,选择“数据库实例(MYSERVER)”|“数据库”| myDB。右击myDB数据库,在弹出的快捷菜单里选择“任务”|“还原”|“数据库”命令,弹出如图8-62所示的“还原数据库”对话框。 图8-62 “还原数据库”对话框   (2) 在图8-62所示对话框里有很多选择项,不同的还原情况选择不同的选择项。 ● “目标数据库”:在该下拉列表框里可以选择要还原的数据库,这里采用默认值。 ● “目标时间点”:如果备份文件或备份设备里的备份集很多,还可以选择“目标时间点”,只要有事务日志备份支持,可以还原到某个时间的数据库状态。这里采用默认值“最近状态”。 ● “还原的源”:在该区域里可以指定用于还原的备份集的源和位置。在“目标数据库”下拉列表框中选择myDB。 ● “选择用于还原的备份集”区域:在该区域里列出了所有可用的备份集。确保勾选了“myDB完整备份”。 (3) 设置完毕后,单击“确定”按钮完成还原操作。 8.8.3 自动备份的维护计划   SQL Server 2005中可以使用维护计划来为数据库自动备份,减少数据库管理员的工作负担。其步骤如下:   (1) 启动SQL Server Management Studio,在“对象资源管理器”窗口里选择“数据库实例(MYSERVER)”|“管理”|“维护计划”选项。   (2) 右击“维护计划”,在弹出的快捷菜单里选择“维护计划向导”选项,弹出如图8-63所示的“维护计划向导”对话框,单击“下一步”按钮。 图8-63 “维护计划向导”对话框   (3) 弹出如图8-64所示的“选择目标服务器”对话框,在“名称”文本框里可以输入维护计划的名称;在“说明”文本框里可以输入维护计划的说明文字;在“服务器”文本框里可以输入要使用的服务器名;最后选择正确的身份证信息,单击“下一步”按钮。 图8-64 “选择目标服务器”对话框   (4) 弹出如图8-65所示的“选择维护任务”对话框,在该对话框里可以选择多种维护任务,如检查数据库完整性、收缩数据库、重新生成或组织索引、更新统计信息、清除历史记录、执行SQL Server代理作业、备份数据库(完整)等。在本例中选择“备份数据库(完整)”复选框,其他维护任务的设置都大同小异。 图8-65 “选择维护任务”对话框   (5) 单击“下一步”按钮,弹出如图8-66所示的“选择维护任务顺序”对话框,如果有多个维护任务,在此可以通过“上移”和“下移”两个按钮来设置维护任务的顺序。设置完毕后单击“下一步”按钮。 图8-66 “选择维护任务顺序”对话框   (6) 弹出如图8-67所示的“定义‘备份数据库(完整)’任务”对话框。在“数据库”下拉列表框里可以选择要备份的数据库名;在“备份组件”选项组中可以选择备份数据库还是备份数据库文件;在“目标”选项组中可以添加备份文件和备份设备、设置是否将备份数据追加到备份文件里等。设置完毕后单击“下一步”按钮。 图8-67 “定义‘备份数据库(完整)’任务”对话框   (7) 弹出如图8-68所示的“选择计划属性”对话框,单击“更改”按钮。 图8-68 “选择计划属性”对话框   (8) 弹出如图8-69所示的“新建作业计划”对话框。在该对话框里可以设置备份数据库的时间和频率,设置完毕后单击“确定”按钮回到图8-68所示对话框,再单击“下一步”按钮。 图8-69 “新建作业计划”对话框   (9) 弹出如图8-70所示的“选择报告选项”对话框。在该对话框里可以选择如果管理维护计划报告,可以将其写入文件中,也可以通过电子邮件发送数据库管理员。设置完毕后单击“下一步”按钮。 图8-70 “选择报告选项”对话框   (10) 弹出如图8-71所示的“完成该向导”对话框,单击“完成”按钮完成维护计划创建操作。 图8-71 “完成该向导”对话框   (11) 创建完维护计划后,系统将执行该计划的创建,如图8-72所示,单击“关闭”按钮。完成自动备份维护计划的创建。 图8-72 维护计划向导进度    8.9 小结   本章介绍了SQL Server 2005的基础知识,一步步地引导读者学会如何配置数据库,创建数据库、表、视图、索引等项目;讲解了触发器、存储过程的使用;并且详细地阐述了SQL Server Reporting Services,以及创建报表、发布的步骤;还介绍了数据库的备份与还原,以及如何创建自动备份的维护计划。      ??      ??      ??      ??                370       371