欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

編寫數據庫腳本

系統 2124 0

作者:Andrew Clinick

發表日期:2000 年 1 月 10 日

我在 “If It Moves, Script It”(英文) 這篇文章中曾談到,如何使用“Windows Script Host(WSH)”( Windows 腳本主機) 管理 Windows 和 Windows 中的應用程序。文中的大多數示例都是基于管理 Windows 操作系統自身的,并不基于在該操作系統下運行的應用程序。為迎接新千年,我想我應該談談,如何在眾多顯露可腳本化接口的應用程序中使用腳本。這次只涉及“SQL Server”。在以后的幾個月中,我將著重談 Exchange、Office 和“系統管理服務器”。


您可以通過使用“分布式管理對象”、“數據轉換服務”和新的“SQL Server XML”實現,將腳本用于“SQL Server”。

許多人都能夠通過“Active Data Object(ADO)”和“Active Server Page (ASP)”技術訪問數據庫了。ADO 在幫助您查詢和更新數據庫方面做了大量的工作 — 但在備份(Y2K 問題帶給我們的警惕)或是數據庫之間的傳輸數據方面,其表現又如何呢?而這時就非涉及到 XML 不可了。

在此,我將告訴您如何通過使用 ADO 的伴隨技術 - 特別是“分布式管理對象”、“數據轉換服務”和新的“SQL Server XML”實現,將腳本用于“SQL Server”。

分布式管理對象

“分布式管理對象 (DMO)”是一組 COM 對象,它將“SQL Server”數據庫和復制管理封裝在一起。這意味著您可以編寫一個 WSH 腳本,將特定表中的所有數據都復制到用制表符分隔的文件中,這有助于大量數據的移動。我之所以選擇這個示例,是因為它的代碼編寫起來簡單,但 DMO 允許您獲取“SQL Server”中的每個對象,使您能夠編寫出一些非常優秀而有意義的管理腳本。

DMO 的關鍵是 SQLDMO.SQLServer 對象,它是基本的對象,它允許您連接到服務器并獲取所有可用對象。在這種情況下,我將使用 Database 集合來選擇數據庫,然后從 table 集合訪問要轉儲到文件的表。如果不提供數據庫,將出現錯誤消息,并且腳本也就結束了。如果不提供表名,腳本將在數據庫所有的表中循環,并導出非系統表。如果提供了數據庫,它就導出該表。該示例雖然功能有限,但它為“SQL Server”提供了基于命令行的簡單的導出實用程序,您可以以它為根據。

現在先看一段代碼:

      '聲明與 sql 談話時使用的變量Dim oServer ' SQL Server 對象Dim oDatabase ' 要使用的目標數據庫Dim oBCP ' BCP 對象Dim nRows ' 從 bcp 返回的行數dim table ' 表對象on error resume next' 第一個參數必須是數據庫if WScript.Arguments(0) = "" then	WScript.Echo "您沒有提供要連接的數據庫"	WScript.Quitend if' 創建 SQL DMO 的實例Set oServer = CreateObject("SQLDMO.SQLServer")' 創建 SQL DMO Bulkcopy 對象的實例Set oBCP = CreateObject("SQLDMO.BulkCopy")oServer.EnableBcp = True' 登錄到本地服務器' 希望您已經更改了 sa 口令!!oServer.Connect ".", "sa" ' 連接到提供的數據庫Set oDatabase = oServer.Databases(Wscript.Arguments(0))' 將分隔符設置為逗號oBCP.ColumnDelimiter = vbComma' 將文件類型設置為以逗號分隔oBCP.DataFileType = SQLDMODataFile_CommaDelimitedCharoBCP.ImportRowsPerBatch = 1000oBCP.MaximumErrorsBeforeAbort = 1BCP.RowDelimiter = vbCrLfoBCP.ServerBCPDataFileType = SQLDMOBCPDataFile_CharoBCP.UseExistingConnection = True' 如果未提供表,則轉儲所有的表f wscript.Arguments(1) = "" then	for each table in oDatabase.tables		' 確保該表不是系統表		if table.systemobject = false then			oBCP.DataFilePath = table.name & ".csv"			nRows = table.ExportData(oBCP)			wscript.Echo nRows & " rows exported from " & table.name		end if	nextelse	' 設置輸出文件	oBCP.DataFilePath = wscript.Arguments(1) & ".csv" 	nRows = oDatabase.Tables(wscript.arguments(1)).ExportData(oBCP)	wscript.Echo nRows & " rows exported from " & wscript.arguments(1)end if
    

DMO 的全部內容要比本文介紹的多得多,但我希望本文能給您一些感性認識:用某些簡單的 WSH 腳本和 DMO 可以做些什么。您可以下載我的 示例(英文) 。有關 DMO 的詳細信息,請訪問 http://msdn.microsoft.com/library/psdk/sql/9_dmoc01.htm(英文)

數據轉換服務

導出到 Comma Separated 文件 (CSV),可以作為將數據導出到 SQL 和從 SQL 導入的起點,但這不象是尖端科技(太過于 20 世紀了,您不覺得嗎?)。“SQL Server 7.0”以“數據轉換服務 (DTS)”的形式,提供了相當完善的導入和導出機制。幸運的是,腳本在“SQL Server”的這個新領域中仍有一席之地,因此,您可以用“Visual Basic(R) 腳本編輯 (VBScript)”、“JScript(R)”或“Perl”的技術來擴展 DTS 的能力。

DTS 的設置非常簡單,特別是在使用“SQL ServerEnterprise Manager”的時候。在默認情況下,“SQL Server”有一個定義的文件夾,可存儲任何轉換,而且“Enterprise Manager”提供了創建和編輯 DTS 程序包的大的圖形用戶界面 (GUI)。在下面的示例中,我選擇了已由 sqlexport.wsf 文件創建的 employees.csv 文件和“SQL Server”中的一個新表。DTA 程序包將創建該表,加載到 Text 文件中,然后運行某個腳本,將數據轉換到“SQL Server”的表中。


DTS 程序包中的轉換,使腳本在整個轉換過程中保持運行狀態。“SQL Enterprise Manager”提供的簡單的腳本編輯器,有一個 語法分析腳本 按鈕。在運行腳本之前,該按鈕將警告您腳本中的錯誤。在轉換過程中,該腳本使用 VBScript 的 Cint 功能,將 employeeid deptid 的輸入轉換為 int ,并將所有的電子郵件地址轉換為小寫字母。

      '**********************************************************************'     Visual Basic 轉換腳本'     把每個源列復制到'     目標列'***********************************************************************Function Main()	DTSDestination("EmployeeID") = cint(DTSSource("Col001"))	DTSDestination("FirstName") = DTSSource("Col002")	DTSDestination("LastName") = DTSSource("Col003")	DTSDestination("email") = lcase(DTSSource("Col004"))	DTSDestination("extension") = DTSSource("Col005")	DTSDestination("office") = DTSSource("Col006")	DTSDestination("DeptID") = cint(DTSSource("Col007"))	Main = DTSTransformStat_OKEnd Function
    

用 DTS,能夠采用某些完善的導入/導出機制,并使您能夠在轉換的任何一步中使用腳本。重要的是,要注意腳本可能不是操作數據的最佳方式 — 尤其是您的數據集很大的話。如果您有大量數據需要轉換,而且性能也很重要,則您可能需要考慮使用 Visual Basic 或 C++ 來創建 COM 組件,然后從 DTS 內部調用該組件。也就是說,如果性能并不重要,并且要在數據導入/導出時對它進行轉換,則腳本為您提供了實現這一點的靈活機制,并使您能夠將所有代碼存儲到“SQL Server”數據庫中,使部署變得相當簡單。

關于 XML

目前,XML 看起來像是在應用程序之間共享數據的最佳工具,所以“SQL Server”的所有管理肯定都得到了 XML 的好處。編寫提取數據庫中所有數據的腳本,以及編寫用編程的方法創建 XML 文檔的腳本,都是可能的。但是,如果您只要查詢“SQL Server”的話,最好使它在 XML 中返回數據,然后用腳本操作該 XML。“SQL Server”組最近發行了“SQL Server XML”技術的非正式版本,完全做到了這一點。

新的 XML 技術使用起來非常簡單。實際上是對服務器發出 HTTP 請求,將查詢傳遞給服務器,而服務器返回 XML。為了舉例說明,我創建了簡單的 WSH 腳本,它向本地機器查詢 North Wind 數據庫的雇員表中的所有數據。為訪問 XML,該腳本使用了“Internet Explorer 5.01”附帶的 XML 分析程序。此對象的美妙之處,在于它處理您所有的 HTTP 請求,并使您能夠同步調用。因為您再也不用處理任何事件驅動的程序,所以,它對編寫腳本很有幫助。

該腳本非常簡單。它創建了 XML 分析程序的實例,使用分析程序打開 URL,然后將結果保存為 .xml 文件。只需五行的腳本,不錯吧!

      ' 設置請求的 url xmlpath = "http://localhost/Northwind?sql=select+*+from+employees+for+xml+auto"' 創建“XML 分析程序”的實例 Set myXMLDoc = CreateObject("Microsoft.XMLDOM") ' 不需要異步 myXMLDoc.async = false ' 加載該 URL myXMLDoc.Load xmlpath ' 保存文檔 myXMLDoc.save "employees.xml"
    

它的強大之處在于,現在可很容易地與服務器建立遠程連接并轉儲數據;只要更改 URL,您早已做過了。此例告訴您如何導出,但是您可以輕松地寫出導入例行程序,用 XML 分析程序在 XML 中反復操作并將值插入數據庫中。

摘要

“SQL Server”提供全面的可編寫腳本的機制,用于本地或遠程管理數據庫。DMO 和 DTS 已經上市(實際上,DMO 已發行了許多版本),所以您可以直接利用它們,使您的數據庫管理任務自動化。Windows 2000 已與“Windows Script Host 2.0”一起上市,所以以上所有腳本的運行,都不受裝有“SQL Server”的 Windows 2000 服務器的條件限制。“SQL Server”中新的 XML 技術使存取數據變得輕而易舉,從而使編寫“SQL Server”的腳本更加容易。有關“SQL Server”的詳細信息,請訪問 SQL Server Developer enter(英文)


Andrew Clinick 是“Microsoft Script Technology”組中的程序經理,機會使然,只要涉及腳本,他就可能大顯身手一番。他的大部分業余時間都花在觀看美國電視臺轉播的精彩橄欖球賽,以及向他的美國同事解說板球。

?



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=3214


編寫數據庫腳本


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本高清中文字幕一区二区三区 | 国产精品综合亚洲AV久久久小说 | 三上悠亚2022年最新番号 | 操人视频在线观看 | 国产野花视频天堂视频免费 | 奇米777视频 | 精品区在线观看 | 久热草视频| 99热精品在线 | www.久久久 | 高清国产美女一级a毛片 | 好大好爽快点视频 | 日韩精品一区二区三区中文字幕 | 亚洲欧美精品综合中文字幕 | 小明看片成人永久在线观看 | 亚洲一区二区三区在线视频 | 精品国产免费一区二区三区 | 国产成久久免费精品AV片天堂 | 韩国成人毛片aaa黄 人人天天操 | 狠狠做深爱婷婷久久一区 | 久久精品免费一区二区三区 | 久草精品在线 | av色偷偷| 国产精品a在线观看香蕉 | 欧美精品国产精品 | 久久综合桃花 | 久久久久久高潮国产精品视 | 成人久久18免费游戏网站 | 午夜成人免费视频 | 九九热爱视频精品视频高清 | 91探花| av网站在线播放 | 日韩一区二区三区四区 | 欧美一级毛片不卡免费观看 | 清清草免费视频 | 999精品视频在线观看 | 日韩中文视频 | 国内精品一区二区 | 大ji巴好好爽好深网站 | 色狠狠婷婷97 | 日韩精品视频免费在线观看 |