国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL Server靜態頁面導出技術1

2024-08-31 00:50:18
字體:
來源:轉載
供稿:網友
本段文章節選自鐵道出版社新出的《用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 gaojian  where 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存貯過程并使用一些技巧來來實現這樣比較復雜的任務。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 山阴县| 康乐县| 繁昌县| 宁南县| 福安市| 岱山县| 澄城县| 汉沽区| 富裕县| 南丰县| 桃江县| 江川县| 屯昌县| 云和县| 正定县| 酒泉市| 定安县| 阿勒泰市| 乌恰县| 邯郸县| 化德县| 马龙县| 依安县| 遂昌县| 黄山市| 浦城县| 沅陵县| 大悟县| 修武县| 玉山县| 乡宁县| 丹东市| 理塘县| 满城县| 宁陕县| 科技| 泰州市| 讷河市| 牡丹江市| 祁阳县| 铅山县|