快捷搜索:

SQL Server静态页面导出技术1

本段文章节选自铁道出版社新出的《用BackOffice建立Intranet/Extranet利用》一书(现已在海淀图书城有售)。本书详尽地讲述了若何应用微软BackOffice系列产品来组建Intranet/Extranet利用。经由过程它您将掌握NT的安装和设置、应用IIS建立Web站点、经由过程ILS建立收集会议系统、用Exchange建立企业的邮件和协作系统、用SQL Server建立Web数据库利用、用Proxy Server建立同Internet安然靠得住的连接、用Media Server建立收集电视台/广播站、用Chart server树立功能强大年夜的谈天室、用Site Server建立个性化的邮件列表和阐发网站的造访环境、用Commerce Server建立B2B或B2C的电子商务网站。此外本书还对收集的安然性进行了评论争论,从而指示您建立一个更为壮实和安然的收集利用。涉猎本书之后,您将发明实现富厚多彩的收集利用原本这样简单……

绝对原创,迎接转载。但请务必保留以上翰墨。

我们在前面对静态页面导出技巧进行了初步的先容,现在我们经由过程一些实例来完成对它的具体解说。

静态页面导出可以经由过程调用存贮历程和应用Enterprise Manager中的领导两种要领来完成。经由过程领导的要领可以很轻易地将数据库的数据导出为静态页面或建立导出义务。应用起来十分方便,然则其的机动性不如经由过程调用存贮历程的措施来得好。下面我们首先先容若何经由过程领导建立一个静态页面导出。

6.9.4.1.应用Enterprise Manager进行静态页面导出

假设我们将建立一个静态页面,其内容为逐日报纸上刊载的所有文章的题目及其所在版面。而此页面的内容要求每当数据库中的数据发生变更时都能随之发生变更。下面我们来看看其详细的实现历程:

在Enterprise Manager中找到要进行静态页面导出的办事器,打开其Management容器,右击Web Publishing工具。从弹出的快捷菜单中选择New Web Assistant Job选项。将启动静态页面导出的领导(如下图)。

图6.9.4.1-1静态页面导出领导步骤1,提示信息

可以看到,此领导分为三步:定义导出数据、调整导出义务、款式化Web页面。点击下一步继承。

随后将要我们选摘要导出的数据来自哪一个数据库,我们选择test后,点击下一步继承(如下图)。

图6.9.4.1-2静态页面导出领导步骤2,选择导出数据库

随后将要求我们输入此导出义务的名称(默觉得test Web Page),并选择导出数据的要领(如下图)。

图6.9.4.1-3静态页面导出领导步骤3,选择导出要领

此中有以下三种要领可供选择:

■Data from the tables an columns that Iselect:直接从表中选摘要导出的字段。

■Result set(s) of a stored procedure Iselect:导出的数据来自一个存贮历程的运行结果。

■Data from the Transact-SQL statement Ispecify:导出的数据来自一段SQL语句。

根据我们的利用要求,选择第三项之后,点击下一步继承。

随后根据我们选择的导出要领,将要求输入一段SQL语句(如下图)。

图6.9.4.1-4静态页面导出领导步骤4,输入导出查询语句

我们输入如下的一段SQL语句:

select id as '编号',banmian as '版面',timu as '题目'

from gaojian

where kanwu='出版报' and datepart(yy,riqi)=datepart(yy,getdate()) and

datepart(dy,riqi)=datepart(dy,getdate())

输入完成后,点击下一步继承。

随后将要我们对此义务的调整要领进行选择(如下图)。

图6.9.4.1-5静态页面导出领导步骤5,设置导出义务

此中有下面几个选项可供选择:

■Only one time when Icomplete this wizard:在完成此领导历程时履行,并且只履行这一次。

■On demand:在必要的时刻履行。

■Only one time at:只在指定的时候履行一次。

■When the SQL Server data changes:当数据库中的数据发生改变时履行。

■At regularly scheduled intervals:周期性的履行此义务。

对话框的下部有一个Generate a Web page when the wizard is completed选择框,用来指明是否在此领导历程完成时履行一次页面导出(默认选择此项)。

根据我们的必要,应该选择When the SQL Server data changes一项。点击下一步继承。

接下来的一步根据上一步的选择而会有所不合。我们看到的将是如下图所示的对话框:

图6.9.4.1-6静态页面导出领导步骤6,指定跟踪字段

领导将要求我们选择对哪个表中的哪些字段进行跟踪。一旦表中的这些字段发生了改变(在插入、删除记录及改动记录时),将会运行此义务来更新静态页面的内容。我们选择对gaojian表中的id、riqi、laiyuan和timu四个字段进行跟踪。选择完成后,点击下一步继承。

随后将要我们选择静态页面的寄放位置及文件名(如下图)。我们可以将其放在IIS中某一虚拟目录所在的目录下。从而可以让用户经由过程网页对其进行造访。

图6.9.4.1-7静态页面导出领导步骤7,指定静态文件寄放位置

输入相宜的寄放目录和文件名之后,点击下一步继承。

随后将要对导出页面的款式和编码进行设定(如下图)。

图6.9.4.1-8静态页面导出领导步骤8,指定静态文件的款式和编码

对付页面款式,我们可以让系统自动完成其款式的设定,也可以经由过程指定一个模板文件来对其进行款式化。后面的内容将对模板文件进行评论争论。这里我们现选择由系统自动完成页面的款式化事情。在Use character set下拉列表框中可以对页面的字符集进行选择,因为我们应用中文,以是应该选择简体中文(GB2312)。点击下一步继承。

接下来将要输入页面标题和SQL语句履行结果表的标题并为其选择字体的大年夜小(如下图)。

图6.9.4.1-9静态页面导出领导步骤9,指定静态页面标题

对话框下部的Apply a time and data stamp to the Web page选择框用来抉择是否在页面中显示页面天生的日期和光阴,从而应用户得知此页面中的数据为何时天生的。设置完成后,点击下一步继承。

随后将对SQL语句履行的结果表进行设置(如下图)。

图6.9.4.1-10静态页面导出领导步骤10,静态页面显示效果设置

此中Yes,display column names和No,display data only单选框用来指明结果表中是否包孕字段名(在表头中显示)。根据我们的必要,选择Yes,display column names单选框,显示字段名。而其下的一些选项用于对表中的一些字体效果进行设置。可以选择固定宽度字体(Fixed)、比例宽度字体(Proportional)、加黑(Bold)和斜体(Italic)四种。而Draw border Lines around the HTML table选择框用于指明是否为结果表画出表框。设置完成后,点击下一步继承。

随后将提示是否在页面中加入超链接(如下图)。

图6.9.4.1-11静态页面导出领导步骤11,设置页面超链接

可以有以下三种选择:

■No:不在页面中加入超链接。我们选择此项。

■Yes,add one hyperlink:加入一条超链接。并为其指明连接和显示信息。

■yes,add a list of hyperlink URLs:加入一个超链接列表。此列表是经由过程一段SQL语句从数据库的某个表中获得的。

选择第一个选项后,点击下一步继承。

接下来我们可以对返回的整个记录的数量和每页返回的结果数量进行限定(如下图)。

图6.9.4.1-12静态页面导出领导步骤12,返回结果数量限定

我们可以选择"No,return all rows of data"单选框,纰谬返回的总记录数目进行限定;也可以选择"Yes,Return the first rows of data"单选框来对返回的记录数目进行限定(经由过程在其后的文本输入框中输入要返回的最多记录数)。

选择了"No,put all data in one svrolling page"单选框则意味着所有返回的记录都将被放在一个页面文件之中。而假如选择了"Yes,link the successive pages together"单选框则可以将返回的记录放在许多页面文件中,从而减小结果页面的长度。方便用户对其进行浏览。可以在其后的文本输入框中输入输入每个页面文件所包孕最多的记录数目。我们选择每个页面最多可包孕20个记录。设定完成后,点击下一步继承。

随后领导将提示我们已经完成了静态页面导出义务的设置,并显示它的一些相关信息(如下图)。

图6.9.4.1-13静态页面导出领导步骤13,完成确认信息

假如点击Write Transact-SQL to file按钮,则可将此义务以一个SQL说话脚本文件的要领保存下来。这样可以在今后经由过程运行这个脚原先再次建立这个义务。或者对脚本的内容进行改动,对着实现的功能作出一些调剂。根据我们的设置,其孕育发生的SQL语句如下:

EXECUTE sp_makewebtask @outputfile = N'D:\test\cbb\ttt.htm',

@query=N'select id,banmian,timu

from gaojianwhere kanwu=''出版报'' and

datepart(yy,riqi)=datepart(yy,getdate())

and datepart(dy,riqi)=datepart(dy,getdate())

order by banmian ',

@fixedfont=1,

@colheaders=0,

@HTMLheader=3,

@webpagetitle=N'Microsoft SQL Server Web Assistant',

@resultstitle=N'Query Results',

@dbname=N'test',

@whentype=10,

@nrowsperpage=20,

@datachg=N'TABLE=gaojian COLUMN=id,timu,laiyuan,riqi',

@procname=N'test Web Page',

@codepage=936,

@charset=N'gb2312'

一旦经由过程领导完成了静态页面导出义务的设定,就不能再经由过程Enterprise Manager对其属性进行改动。只能应用SQL语句来改动其各项设置。我们将在后面对sp_makewebtask进行解说时再对此中各个参数的含义进行阐发。

点击完成按钮,停止此义务的设置事情。其孕育发生的一个结果页面如下图所示。

图6.9.4.1-14静态页面导出结果

留意:在设置了这个静态页面导出义务之后,假如你在对稿件进行改动、添加或删除的时刻,将会呈现一个差错提示。假如你关闭了IE的显示友好的HTTP差错信息功能的话(建议在调试IDC利用时关闭此功能,这样就可以看到由系统返回的具体差错信息)就会看到下面的差错信息:

运行查询差错

[State=42000][Error=229][Microsoft][ODBC SQL Server Driver][SQL Server][Microsoft] [ODBC SQL Server Driver][SQL Server]EXECUTE permission denied on object 'test Web Page', database 'test', owner 'dbo'.

[State=37000][Error=16805][Microsoft][ODBC SQL Server Driver][SQL Server]SQL Web Assistant: Could not execute the SQL statement.

这是因为在省缺环境下,定义的静态页面导出的运行权利并不是默认的付与每个用户。以是当以editer的身份履行IDC时,就会呈现权限没有获得许可的差错信息。不过这并不会影响对稿件数据的操作。

办理这个问题有两种措施,一个是改动响应的对稿件进行插入和改动的IDC文件,将此中的Username和password分手改为sa和sa的口令。这样就会以sa的身份运行此IDC文件,从而就不会再呈现差错了。而此措施会造成一些安然上的隐患,假如有人读取了这些IDC文件。他就知道了sa的口令,从而可以以sa的身份登录到数据库之中。对数据库可以进行险些没有限定的操作和改动。为了避免这种环境的发生,可以经由过程运行下面的SQL语句来赋予editers角色对静态页面导出义务的履行权限:

grant all on test.dbo.[test Web Page] to editers

此中test Web Page为此静态页面导出义务的名字,之以是用中括号将其扩起来的缘故原由是它的名字中包孕空格。在SQL Server中,凡是名字中包孕空格的工具,在引用其名称时都应该用中括号将其括起来。而且对付这些工具,将不能在Enterprise Manager中对其权限等信息进行改动。而只能经由过程SQL语句来实现。这是因为Enterprise Manager中的一个bug造成的,在SQL Server的SP3中仍旧没有获得休正。

虽然经由过程Enterprise Manager中的领导来建立静态页面导出义务是一个简单的历程,然则对付一些繁杂的环境就显得有些不太适用了。比如,假设我们将要把天天出版报的内容放到Internet上经由过程静态页面进行宣布。这样光寄托Enterprise Manager的领导中供给的功能就远远不敷了。只能经由过程调用sp_makewebtask存贮历程并应用一些技术来来实现这样对照繁杂的义务。

您可能还会对下面的文章感兴趣: