編寫資料庫指令碼

2021-04-17 07:51:37 字數 1321 閱讀 2773

發表日期: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

資料庫sql指令碼編寫規範

對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃瞄,如 select id from t where num is null可以在num上設定預...

理解並編寫資料庫指令碼(DB2資料庫)

資料庫指令碼 用於建立資料庫物件的語句的集合。transact sql指令碼儲存為檔案,檔名通常以 sql結尾。具體使用環境包含 my sql,db2等。資料庫指令碼包含 儲存過程 procedure 事務 transaction 等,索引 index 觸發器 trigger 函式 function...

編寫shell指令碼對mysql資料庫進行定時備份

在linux上安裝mysql並建立測試庫,編寫shell指令碼對此庫使用mysqldump進行定時備份和歷史備份檔案清理 保留3天 注意指令碼的通用性和擴充套件性 安裝服務端 yum install mysql server yum install mysql devel 安裝客戶端 yum ins...