本文談論如何用sql-dmo建立資料庫備份和校驗的asp應用。
概述sql分布式管理物件(sql distributed management objects, sql-dmo)為開發者提供了使用程式和指令碼語言執行普通任務的方法,從而擴充套件了sql server功能。本文談論如何用sql-dmo建立資料庫備份和校驗的asp應用。
前提你需要有sql server資料庫備份的相關知識。另外還要在global.asa檔案中加入sql-dmo庫的引用。以下是sql server 2000的引用:
本文示例**適用於sql 7.0, msde, 和 sql server 2000。
sqldmo.sqlserver
**看上去挺眼熟。它用於連線sql server資料庫:
<%
dim srv
set srv = server.createobject("sql
dmo.sqlserver")
srv.logintimeout = 15
srv.connect "servername", "username", "password"
%>
這裡通過代入使用者名稱和口令來連線sql server資料庫。如果要使用nt的身份認證,就將它的loginsecure屬性設為真(true),忽略代入的使用者名稱和口令,而使用nt的註冊資訊。
sqldmo.database
列出伺服器中的資料庫。在本文示例中,對列出的資料庫進行備份。下面的**將伺服器中的資料庫列於下拉列表:
<%
dim srv
dim objdb
set srv = server.createobject("sql
dmo.sqlserver")
srv.logintimeout = 15
srv.connect "servername", "username", "password"
set objdb = server.createobject("sql
dmo.database")
%>
<%
for each objdb in srv.databases
if objdb.systemobject = false then
%>
<%=objdb.name%>
<%
end if
next
%>
sqldmo.backupdevice
列出伺服器上安裝的備份裝置。我建議使用備份裝置來備份資料庫。因為這樣可以使用sql-dmo的校驗功能來校驗備份情況。下面的**列出伺服器上的備份裝置:
<%
dim srv
dim objdevice
set srv = server.createobject("sql
dmo.sqlserver")
srv.logintimeout = 15
srv.connect "servername", "username", "password"
set objdevice = server.createobject("sql
dmo.backupdevice")
for each objdevice in srv.backupdevices
response.write objdevice.name + "
"next
%>
sqldmo.backup
這就是我們要用到的備份核心物件。它有許多屬性,讓我們作到與企業版sql管理器一樣水平的備份。先討論一下本文示例用到的屬性。
backupsetname - 備份檔案名。
database - 要備份的資料庫。
action - 全部或增量備份。還有其他選項,不過示例中只用到這二個。
backupsetdescription - 備份說明。
files - 檔案備份選項。標明備份檔案的路徑和名字,如:c:pubs.bak。使用檔案備份時,下面的備份裝置名要設定為空。
devices - 伺服器上的備份裝置。如果使用備份裝置,上面的檔案備份選項要設定為空。
truncatelog - 備份日誌選項。其選項有:
nolog - 不備份交易日誌。
notruncate - 備份交易日誌。日誌裡提供時間標記。
truncate - 備份交易日誌,但不保留交易紀錄。
initialize - 如設定為真(true),該備份裝置將取代其他備份媒介而成為首選。
以下是示例中的backup.asp檔案:
<%@ language=vbscript %>
<%
dim objbackup
'建立備份物件
set objbackup = server.createobject("sql
dmo.backup")
'設定屬性
objbackup.backupsetname = request("fname")
objbackup.database = request("fdatabase")
objbackup.action = request("faction")
objbackup.backupsetdescription = request("fdescription")
objbackup.files = request("fbackupfile")
objbackup.devices = request("fdevice")
objbackup.truncatelog = request("flog")
objbackup.initialize = request("finit")
'備份資料庫
objbackup.sqlbackup srv
'斷開與伺服器的連線
srv.disconnect
'釋放set srv = nothing
set objbackup = nothing
%>
the backup was started, use the verify
option to see if it completed successfully.
click here to return.
備份校驗
如果用vb或c++程式設計,可以用事件觸發來校驗備份過程,但在asp中不行。我們用sql
dmo.backupdevice物件的readbackupheader方法來確認備份是否成功。
下面是verify.asp檔案**,它列出備份裝置名字並提供最近備份的有關資訊。
<%@ language=vbscript %>
<%
dim objdevice
dim objresults
dim icount
dim xcount
'建立備份裝置物件
set objdevice = server.createobject("sql
dmo.backupdevice")
'迴圈直到找到匹配的裝置
for each objdevice in srv.backupdevices
if objdevice.name = request("fname") then
'找到匹配裝置,開始讀取結果
set objresults = objdevice.readbackupheader
for icount = 1 to objresults.rows
for xcount = 1 to objresults.columns%>
<%=objresults.columnname(xcount)%>:
<%=objresults.getcolumnstring(icount,xcount)%>
<%next %>
<%next %>
<%end if%>
<%next%>
<%
srv.disconnect
set srv = nothing
set objdevice = nothing
set objresults = nothing
%>
readbackupheader方法返回queryresults物件。用其rows屬性可以得到備份的紀錄數。然後對每行紀錄作列資訊搜尋。
其他功能
sql-dmo還提供遠端備份和恢復功能。本文沒有涉及資料庫恢復,但sql-dmo有很強的恢復功能。
本文附件:
備份資料庫
參考 sql如何備份到異機 寫成儲存過程,建立作業定時備份 在sql中對映一下就可以了 exec master.xp cmdshell net use z yizhi d module user yizhi administrator 說明 exec master.xp cmdshell net u...
備份資料庫
命令在dos的 url file mysql bin mysql bin url 目錄下執行 1.匯出整個資料庫 匯出檔案預設是存在mysql bin目錄下 mysqldump u 使用者名稱 p 資料庫名 匯出的檔名 mysqldump u user name p123456 database n...
備份資料庫
sql備份所有資料庫指令碼 declare currentdatabasename nvarchar 100 declare currentbackfolder nvarchar 200 declare currentbackstring nvarchar 2000 這裡是備份的目錄,所有資料庫都備...