SQL Server应用与开发范例宝典
上QQ阅读APP看书,第一时间看更新

1.6 脚本与批处理

实例032 将数据库生成脚本

这是一个提高基础技能的实例

实例位置:光盘\mingrisoft\01\032

实例说明

本实例介绍如何将数据库生成脚本。

技术要点

查询分析器主要是用来执行SQL程序,以进行数据库管理和数据查询。

在查询分析器中最重要的两项组件是对象浏览器和查询窗口。其中,对象浏览器是SQL Server 2000的新组件,它由对象和模板两个选项卡组成:对象选项卡可浏览SQL Server中的所有数据库对象以及SQL Server所有内建函数及数据类型;模板选项卡则提供一些常用的SQL程序模板,可简化用户设计及输入SQL程序的工作。查询窗口是让用户编辑和执行SQL程序的地方,同时也可以浏览执行结果。

注意:在SQL Server 2000中生成脚本时,如果生成的数据库脚本想在SQL Server 7.0中使用,则生成脚本时,应在“设置格式”选项卡中选定“仅为与7.0 版兼容的功能编写脚本”选项,结果如图1.162所示。

图1.162 生成SQL脚本“设置格式”选项卡

实现过程

下面将SQL Server数据库YYGLXT生成脚本文件,具体操作步骤如下。

(1)展开“服务器组”→“服务器”→“数据库”,右键单击需要生成脚本文件的数据库,这里为YYGLXT,在弹出的快捷菜单中选择“所有任务”→“生成SQL脚本”命令,如图1.163所示。

图1.163 选择生成SQL脚本向导

(2)打开“生成SQL脚本”对话框,选择“常规”选项卡,单击“全部显示”按钮,并选定“编写全部对象脚本”复选框,然后单击“确定”按钮,如图1.164所示。

图1.164 选择编写脚本对象

(3)在“另存为”对话框中,选择脚本的存放路径,在“文件名”文本框中输入脚本文件的名称,这里为“YYGLXT”,然后单击“保存”按钮,如图1.165所示。

图1.165 选择生成脚本的路径

(4)编写脚本,并显示编写进度,如图1.166所示。

图1.166 正在编写脚本

(5)编写成功,弹出提示对话框,如图1.167所示。

图1.167 编写脚本成功

举一反三

根据本实例,读者可以:

编写操作员脚本;

编写警报脚本。

实例033 将指定表生成脚本

这是一个方便操作的实例

实例位置:光盘\mingrisoft\01\033

实例说明

在编写脚本文件时,有时不需要将所有的表都生成脚本,而只需要将部分表生成脚本。下面的实例将介绍如何将db_manpowerinfo数据库中的“工资表”生成脚本文件。

技术要点

在“生成SQL脚本”对话框的“设置格式”选项卡上,可以选择如下脚本格式。

● 选择“为每个对象生成CREATE <对象>命令”命令,以用现有的定义显式创建要生成其脚本的对象。这是默认选项。

● 选择“为每个对象生成DROP<对象>命令”命令,以将DROP语句添加到每个要为其编写脚本的对象脚本中。这是默认选项。

注意:执行脚本时,当数据库中任何现有对象与脚本中列出的对象同名时,将首先删除数据库中的现有对象。

● 选择“生成全部相关对象的脚本”命令,这样,对于创建脚本中所列出的对象是需要的所有数据库中的对象,如果尚未选择,都将自动包括进来。

● 选择“在脚本文件中包含说明性的页头”命令,以在文件中为脚本中所列出的每个对象添加注释。

实现过程

(1)依次展开“服务器组”→“服务器”→“数据库”,展开db_manpowerinfo数据库,在右侧窗口中右键单击需要生成脚本文件的数据表,这里为“工资表”,在弹出的快捷菜单中选择“所有任务”→“生成SQL脚本”命令,打开“生成SQL脚本”对话框,如图1.168所示。

图1.168 “生成SQL脚本”对话框

(2)从图1.168中可以看出,将要写入脚本的数据表“工资表”已显示在“将要写入脚本的对象”的表格中。

(3)单击“确定”按钮,显示“另存为”对话框,在“文件名”文本框中输入脚本文件的名称,这里为“工资表”,然后单击“保存”按钮。

(4)编写脚本,并显示编写进度。编写成功,弹出提示对话框。

举一反三

根据本实例,读者可以:

将视图生成脚本;

将存储过程生成脚本。

实例034 执行脚本

这是一个提高基础技能的实例

实例位置:光盘\mingrisoft\01\034

实例说明

数据库生成脚本文件后,可以将其移到另外一台计算机上使用。本实例将介绍执行脚本文件的过程。

技术要点

脚本是存储在文件中的一系列SQL语句,即一系列按顺序提交的批处理。

脚本可以在查询分析器中执行,也可以在isql或osql实用程序中执行。查询分析器是建立、编辑和使用脚本的一个最好的环境。在查询分析器中,不仅可以新建、保存、打开脚本文件,而且可以输入和修改T-SQL语句,还可以通过执行T-SQL语句来查看脚本的运行结果,从而检验脚本内容的正确性。

实现过程

下面通过“查询分析器”执行实例32中生成的脚本文件YYGLXT.sql,具体操作步骤如下。(1)依次单击“开始”→“程序”→“Microsoft SQL Server”→“查询分析器”,将出现Microsoft SQL Server查询分析器窗口,在数据库列表项中选择“YYGLXT”数据库,如图1.169所示。

图1.169 选择“YYGLXT”数据库

(2)选择“文件”→“打开”菜单命令,打开“打开查询文件”对话框,选择已经生成的数据库脚本文件YYGLXT.SQL,然后单击“打开”按钮,如图1.170所示。

图1.170 打开查询文件对话框

(3)打开查询文件YYGLXT.SQL后,SQL查询分析器窗口将显示一些SQL语句,如图1.171所示。在SQL查询分析器窗口中单击“执行查询”按钮,即可执行该脚本文件。

图1.171 显示“YYGLXT.SQL”文件中的SQL语句

举一反三

根据本实例,读者可以:

使用isqlw实用工具执行SQL脚本。

实例035 批处理

这是一个提高效率的实例

实例位置:光盘\mingrisoft\01\035

实例说明

当要批量完成某些任务,而又不能使用T-SQL语句来完成时,可以使用SQL Server的批处理。本实例将介绍使用批处理的方法。

技术要点

批处理是一个或多个T-SQL语句的集合,从应用程序一次性发送到SQL Server并由SQL Server编译成一个可执行单元,此单元称为执行计划。执行计划中的语句每次执行一条。

建立批处理时,使用GO语句作为批处理的结束标记。在一个GO语句行中不能包括其他T-SQL语句,但可以使用注释文字。当编译器读取到GO语句时,它会把GO语句前面所有的语句当做一个批处理,并将这些语句打包发送给服务器。GO语句本身并不是T-SQL语句的组成部成,它只是一个用于表示批处理结束的前端指令。如果在一个批处理中包含任何语法错误,如引用了一个并不存在的对象,则整个批处理就不能被成功地编译和执行。如果一个批处理中某句有执行错误,如违反了约束,它仅影响该语句的执行,并不影响批处理中其他语句的执行。

在SQL Server 2000中,可以利用isql实用程序、osql实用程序及isqlw实用程序执行批处理。isql实用程序和osql实用程序需要在DOS命令提示符下运行。isqlw实用程序在查询分析器中执行。

建立批处理时,应当注意以下几点。

● CREATE DEFAULT、CREATE PROCEDURE、CREATE RULE、CREATE TRIGOER及CREATE VIEW语句不能与其他语句放在一个批处理中。

● 不能在删除一个对象之后,在同一批处理中再次引用这个对象。

● 不能在一个批处理中引用其他处理中所定义的变量。

● 不能把规则和默认值绑定到表字段或用户自定义数据类型之后,立即在同一个批处理中使用它们。

● 不能定义一个CHECK约束之后,立即在同一个批处理中使用该约束。

● 不能在修改表中的一个字段名之后,立即在同一个批处理中引用新字段名。

● 如果一个批处理中的第一个语句是执行某个存储过程的EXECUTE语句,则EXECUTE关键字可以省略;如果该语句不是第一个语句,则必须使用EXECUTE关键字,或者简写为“EXEC”。

实现过程

下面利用查询分析器执行3个批处理,用来显示人事表中的信息、总人数及平均年龄。具体实现过程如下。

(1)依次选择“开始”→“程序”→“Microsoft SQL Server”→“查询分析器”菜单命令,启动查询分析器。

或者打开“企业管理器”,选择“工具”→“SQL查询分析器”菜单命令来打开SQL查询分析器。

(2)在查询窗口中输入如下代码:

        USE db_manpowerinfo
        Go
            select*from  人事表
            select count(*)as总人数from人事表
            select avg(年龄)as平均年龄from人事表
        Go

(3)单击查询分析器窗口中的“执行查询”按钮,即可执行批查询,结果如图1.172所示。

图1.172 批查询

举一反三

根据本实例,读者可以:

根据系统日期及出生日期批量计算年龄;

批量删除数据。