在10章“基础SQL”和11章“中级SQL”中，你已经学习了如何一次执行一个SQL语句。在本章中你将会学习如何一次执行一组SQL语句。这样你就可以象对传统的编程语言一样对SQL进行处理。在本章中，你将会学会如何创建存储过程，触发器和计划任务。

首先，你要学习SQL Server Web 助理。该程序能够根据存储在数据库表内的信息自动地创建静态网页。

使用SQL Server Web 助理

在本书的下一部分，你将会学习到如何使用Active Server Pages创建由数据库的信息动态生成的网页。当你需要显示变化迅速的数据库信息时，你必须使用ASP脚本来接收这些信息。然而在某些情况下，使用ASP脚本显示数据库信息的效率是非常低的。

比如，假设你的网站包含一个具有其他一些网站的目录，有一个网页显示到你喜欢网站连接的列表，比如Yahoo!和Microsoft等。现在假定该网页并不经常改变，最多你在大约一个星期的时间内添加一个新的连接。你可以在有访问者访问此页时通过使用ASP脚本读取存储在数据库表中的连接列表而动态地产生该页。该策略能确保该网页总是能够显示最新的信息。但是，考虑到该网页的内容并不是经常的变化，该方案并不最优。

Active Server Pages消耗计算机的资源。使用ASP脚本来打开数据库连接和执行查询会花费时间和增加数据库服务器的负担。更进一步，你的处理器也要为执行脚本而工作。由于在该网页上的内容并不经常改变，所以这些对服务器造成的负担是不必要的。另外，一个更有效的方案是仅当数据库的内容发生改变时才生成该网页。或者在一定的时间之后生成该网页。该网页并不需要在每一次有人访问此页时进行更新。你真正需要的是在某一时刻自动地创建该静态网页。

使用SQL Server Web 助理，你可以从数据库表中自动的生成网页。你可以有三种方式来生成网页：一次生成，基于计划或当表内的内容改变时。下一部分将详细描述如何生成网页。

使用SQL Server Web 助理创建网页

本部分将一步一步的介绍如何使用SQL Server Web 助理。你将学会如何创建显示到你所喜欢网站连接的网页。该网页当表内的数据发生改变时会自动进行更新。

在进行下面的工作之前，你需要创建一个包含你所喜欢网站信息的表。在ISQL/w中执行下面的SQL语句创建该表：

CREATE TABLE site_directory(site_name VARCHAR(30), site_URL VARCHAR(30), site_desc VARCHAR(100))

该网页创建了一个名称为site_directory的表，表中有三列：site_name,site_url和site_desc。这三列包含了网站名称，URL和对该网站的简单描述。为了自动地根据该表的内容生成显示你喜欢的连接的网页。请按以下五个步骤进行：

> 从SQL Server程序组里启动SQL Server Web 助理。该程序在启动时，会要你输入登录信息。输入你的SQL Server名称，你的用户ID，和你的密码。（假如你在使用集成或混合模式，你可以使用信任连接登录）。点击Next按钮进入下一步。

> 在该步中，首先出现对话框要你指明如何为该网页选择数据。选中“Enter a Query as Free-Form Text”选项。这时在这些圆形按钮下面就会出现一个空的文本窗口（见图12.1）。选择表site_directory所在的数据库。在文本窗口中输入如下的SQL语句：

> > SELECT * FROM site_directory ORDERED BY site_name

> > 该查询语句会读取表site_directory中所有的记录，并把这些结果以字母顺序排列。点击“Next

”进入下一步。

图12.1 SQL Server Web Assistant-查询对话框

在该步中，你要对所采用的计划进行选择。你的选择有：立刻创建网页，稍后创建网页，当数据改变时创建网页，在星期的某一天创建网页和当某一常规表达式成立时创建网页。在下拉菜单中选中“When Data Changes

”。在你做完上面的工作后，就会出现一个在数据库中所有表的列表。在列表中选择表“site_directory”。这样只有当表“site_directory”的内容发生变化时才创建新的网页。点击”Next”进入下一步。

在本步中，首先会问及有关产生的文件的问题（见图12.2）。使用Favorites.cfm作为你网页的文件名。你必须在文件名内包含网站目录的路径。一般的，该路径为c:\InetPub\wwwroot\Favorites.cfm。为了定制该网页，选中按钮“The Following Information

”，输入标题“Favorite Web Sites”做为该网页的标题。输入标头“web site list”做为你查询结果的标头。选中“No”指明你不想包含URL连接和参考文本（这是缺省选择）。点击“Next”进入下一步。

图12.2 确定文件选项

最后一步让你控制网页产生的格式，你可以选择不同的列尺寸，查询结果的格式。最后，你还可以指明该网页是否包含它最后一次生成的时间，日期。列的标题，查询结果的限制等。不要改变它们的缺省设置，点击“Finish”完成。

HTML文件Favorites.cfm将在表site_directory内的数据发生变化时生成。初始状态下，该文件并不存在，因为目前该表内的数据并不发生变化。执行下面的SQL语句向表中添加数据：

INSERT site_directory (site_name ,site_URL ,site_desc ) values (

‘Microsoft’ , ’www.microsoft.com ‘,’the creator of ASP’)

该语句向site_directory表中添加一条记录。假如你现在查看Web目录，你就会找到文件Favorites.cfm。在Web浏览器内观看该文件，其结果如图12.3所示。

图12.3 查询结果

SQL Server Web 助理的工作原理

你可能想知道SQL Server Web 助理是如何工作的。你能够选择让该程序基于某计划或当表中的数据发生变化时产生该网页，web助理是如何做到这一点的呢？

SQL Server Web 助理使用了SQL Server 的存储过程、触发器和计划任务。在创建Web页时，该程序使用了三个名称分别为sp_makewebtask,sp_runwebtask和sp_endwebtask三个存储过程。实际上正是这三个存储过程创建了网页。

注意

三个存储过程sp_makewebtask,sp_runwebtask和sp_endwebtask可以不通过SQL Server web助理直接在ISQL/w上执行。

为了检测在表中的数据发生变化。SQL Server Web 助理使用了触发器(triggers)。触发器就是一系列的SQL语句，它们在表内的数据进行更新，删除和插入时执行。比如，当你向表site_directory内插入数据时，一个能产生Favorites.cfm的触发器就会执行。最后为了创建基于计划的网页，SQL Server web助理使用了计划任务（schedule task）。比如你能够通过web助理按计划每星期重新生成Favorites.cfm文件。为了完成你的任务，web助理会创建一个计划任务，每个星期定时执行。

本章的余下部分将向你解释如何创建自己的存储过程、触发器、和计划任务。这些能够让你根据客户的行为或时间事件对你的数据表执行非常复杂的操作。为了能够做到这一点，首先你必须扩充你的

SQL知识。允许你象处理传统编程语言一样处理SQL语言。