用 io.Directory.Exists 判斷文件夾是否存在。
目前創(chuàng)新互聯(lián)已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、綿陽(yáng)服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、永平網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
再用 My.Computer.FileSystem.CopyDirectory() 復(fù)制。
Private Sub Button _Click(ByVal sender As System Object ByVal e As System EventArgs) Handles Button Click 備份數(shù)據(jù)庫(kù) BACKUP DATABASE Test TO DISK= C:\Backup WITH Format Dim cn As SqlConnection Dim cm As SqlCommand cn = getDB() cm = New SqlCommand( BACKUP DATABASE JXbase TO DISK= C:\Backup WITH Format cn) cn Open() cm ExecuteNonQuery() MsgBox( 備份成功 ) cn Close()
End Sub
恢復(fù) Private Sub Button _Click(ByVal sender As System Object ByVal e As System EventArgs) Handles Button Click Dim cn As New SqlConnection Dim cn As New SqlConnection Dim mydr As SqlDataReader Dim str As String
Dim tmpConnectionString As String = Data Source=JJK;Initial Catalog=master;Integrated Security=True cn ConnectionString = tmpConnectionString cn ConnectionString = tmpConnectionString cn Open() cn Open() Dim cm As SqlCommand = New SqlCommand( select spid from master sysprocesses where dbid=db_id( JXbase ) cn) mydr = cm ExecuteReader()
Dim cm As SqlCommand = New SqlCommand() cm Connection = cn
While (mydr Read()) 殺死進(jìn)程
str = kill mydr( spid ) ToString() cm CommandText = str cm CommandType = CommandType Text Application DoEvents() cm ExecuteNonQuery() 殺進(jìn)程 End While mydr Close() cm = New SqlCommand( RESTORE DATABASE JXbase FROM DISK= C:\Backup cn) 恢復(fù)備份 cm ExecuteNonQuery() MsgBox( 恢復(fù)成功成功 ) cn Close() cn Close()
lishixinzhi/Article/program/net/201311/12901
SQL的備份語(yǔ)句
備份整個(gè)數(shù)據(jù)庫(kù):
BACKUP DATABASE { database_name | @database_name_var }
TO backup_device [ ,...n ]
[ WITH
[ BLOCKSIZE = { blocksize | @blocksize_variable } ]
[ [ , ] DESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] DIFFERENTIAL ]
[ [ , ] EXPIREDATE = { date | @date_var }
| RETAINDAYS = { days | @days_var } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] FORMAT | NOFORMAT ]
[ [ , ] { INIT | NOINIT } ]
[ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
[ [ , ] { NOSKIP | SKIP } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]
備份特定的文件或文件組:
BACKUP DATABASE { database_name | @database_name_var }
file_or_filegroup [ ,...n ]
TO backup_device [ ,...n ]
[ WITH
[ BLOCKSIZE = { blocksize | @blocksize_variable } ]
[ [ , ] DESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] DIFFERENTIAL ]
[ [ , ] EXPIREDATE = { date | @date_var }
| RETAINDAYS = { days | @days_var } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] FORMAT | NOFORMAT ]
[ [ , ] { INIT | NOINIT } ]
[ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
[ [ , ] { NOSKIP | SKIP } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]
備份一個(gè)事務(wù)日志:
BACKUP LOG { database_name | @database_name_var }
{
TO backup_device [ ,...n ]
[ WITH
[ BLOCKSIZE = { blocksize | @blocksize_variable } ]
[ [ , ] DESCRIPTION = { 'text' | @text_variable } ]
[ [ ,] EXPIREDATE = { date | @date_var }
| RETAINDAYS = { days | @days_var } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] FORMAT | NOFORMAT ]
[ [ , ] { INIT | NOINIT } ]
[ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
[ [ , ] NO_TRUNCATE ]
[ [ , ] { NORECOVERY | STANDBY = undo_file_name } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOSKIP | SKIP } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]
}
backup_device ::=
{
{ logical_backup_device_name | @logical_backup_device_name_var }
|
{ DISK | TAPE } =
{ 'physical_backup_device_name' | @physical_backup_device_name_var }
}
file_or_filegroup ::=
{
FILE = { logical_file_name | @logical_file_name_var }
|
FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }
}
截?cái)嗍聞?wù)日志:
BACKUP LOG { database_name | @database_name_var }
{
[ WITH
{ NO_LOG | TRUNCATE_ONLY } ]
}
參數(shù)
DATABASE
指定一個(gè)完整的數(shù)據(jù)庫(kù)備份。假如指定了一個(gè)文件和文件組的列表,那么僅有這些被指定的文件和文件組被備份。
說(shuō)明 在進(jìn)行完整數(shù)據(jù)庫(kù)備份或差異數(shù)據(jù)庫(kù)備份時(shí),Microsoft? SQL Server? 備份足夠的事務(wù)日志,以生成一個(gè)將在還原數(shù)據(jù)庫(kù)時(shí)使用的一致的數(shù)據(jù)庫(kù)。在 master 數(shù)據(jù)庫(kù)上只能采用完整數(shù)據(jù)庫(kù)備份。
{ database_name | @database_name_var }
指定了一個(gè)數(shù)據(jù)庫(kù),從該數(shù)據(jù)庫(kù)中對(duì)事務(wù)日志、部分?jǐn)?shù)據(jù)庫(kù)或完整的數(shù)據(jù)庫(kù)進(jìn)行備份。如果作為變量 (@database_name_var) 提供,則可將該名稱指定為字符串常量 (@database_name_var = database name) 或字符串?dāng)?shù)據(jù)類型(ntext 或 text 數(shù)據(jù)類型除外)的變量。
backup_device
指定備份操作時(shí)要使用的邏輯或物理備份設(shè)備??梢允窍铝幸环N或多種形式:
{ logical_backup_device_name } | { @logical_backup_device_name_var }
是由 sp_addumpdevice 創(chuàng)建的備份設(shè)備的邏輯名稱,數(shù)據(jù)庫(kù)將備份到該設(shè)備中,其名稱必須遵守標(biāo)識(shí)符規(guī)則。如果將其作為變量 (@logical_backup_device_name_var) 提供,則可將該備份設(shè)備名稱指定為字符串常量 (@logical_backup_device_name_var = logical backup device name) 或字符串?dāng)?shù)據(jù)類型(ntext 或 text 數(shù)據(jù)類型除外)的變量。
{ DISK | TAPE } =
'physical_backup_device_name' | @physical_backup_device_name_var
允許在指定的磁盤或磁帶設(shè)備上創(chuàng)建備份。在執(zhí)行 BACKUP 語(yǔ)句之前不必存在指定的物理設(shè)備。如果存在物理設(shè)備且 BACKUP 語(yǔ)句中沒(méi)有指定 INIT 選項(xiàng),則備份將追加到該設(shè)備。
當(dāng)指定 TO DISK 或 TO TAPE 時(shí),請(qǐng)輸入完整路徑和文件名。例如,DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\Mybackup.dat' 或 TAPE = '\\.\TAPE0'。
說(shuō)明 對(duì)于備份到磁盤的情況,如果輸入一個(gè)相對(duì)路徑名,備份文件將存儲(chǔ)到默認(rèn)的備份目錄中。該目錄在安裝時(shí)被設(shè)置并且存儲(chǔ)在 KEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer 目錄下的 BackupDirectory 注冊(cè)表鍵值中。
如果使用的是具有統(tǒng)一命名規(guī)則 (UNC) 名稱的網(wǎng)絡(luò)服務(wù)器或已重新定向的驅(qū)動(dòng)器號(hào),則請(qǐng)指定磁盤的設(shè)備類型。
當(dāng)指定多個(gè)文件時(shí),可以混合邏輯文件名(或變量)和物理文件名(或變量)。但是,所有的設(shè)備都必須為同一類型(磁盤、磁帶或管道)。
Windows 98 不支持備份到磁盤。
n
是表示可以指定多個(gè)備份設(shè)備的占位符。備份設(shè)備數(shù)目的上限為 64。
BLOCKSIZE = { blocksize | @blocksize_variable }
用字節(jié)數(shù)來(lái)指定物理塊的大小。在 Windows NT 系統(tǒng)上,默認(rèn)設(shè)置是設(shè)備的默認(rèn)塊大小。一般情況下,當(dāng) SQL Server 選擇適合于設(shè)備的塊大小時(shí)不需要此參數(shù)。在基于 Windows 2000 的計(jì)算機(jī)上,默認(rèn)設(shè)置是 65,536(64 KB,是 SQL Server 支持的最大大小)。
對(duì)于磁盤,BACKUP 自動(dòng)決定磁盤設(shè)備合適的塊大小。
說(shuō)明 如果要將結(jié)果備份集存儲(chǔ)到 CD-ROM 中然后從 CD-ROM 中恢復(fù),請(qǐng)將 BLOCKSIZE 設(shè)為 2048。
磁帶的默認(rèn) BLOCKSIZE 為 65,536 (64 KB)。顯式聲明塊大小將替代 SQL Server 選擇的塊大小。
DESCRIPTION = { 'text' | @text_variable }
指定描述備份集的自由格式文本。該字符串最長(zhǎng)可以有 255 個(gè)字符。
DIFFERENTIAL
指定數(shù)據(jù)庫(kù)備份或文件備份應(yīng)該與上一次完整備份后改變的數(shù)據(jù)庫(kù)或文件部分保持一致。差異備份一般會(huì)比完整備份占用更少的空間。對(duì)于上一次完整備份時(shí)備份的全部單個(gè)日志,使用該選項(xiàng)可以不必再進(jìn)行備份。有關(guān)更多信息,請(qǐng)參見(jiàn)差異數(shù)據(jù)庫(kù)備份和文件差異備份。
說(shuō)明 在進(jìn)行完整數(shù)據(jù)庫(kù)備份或差異備份時(shí),SQL Server 備份足夠的事務(wù)日志,從而在恢復(fù)數(shù)據(jù)庫(kù)時(shí)生成一個(gè)一致的數(shù)據(jù)庫(kù)。
EXPIREDATE = { date | @date_var }
指定備份集到期和允許被重寫的日期。如果將該日期作為變量 (@date_var) 提供,則可以將該日期指定為字符串常量 (@date_var = date)、字符串?dāng)?shù)據(jù)類型變量(ntext 或 text 數(shù)據(jù)類型除外)、smalldatetime 或者 datetime 變量,并且該日期必須符合已配置的系統(tǒng) datetime 格式。
RETAINDAYS = { days | @days_var }
指定必須經(jīng)過(guò)多少天才可以重寫該備份媒體集。假如用變量 (@days_var) 指定,該變量必須為整型。
重要 假如 EXPIREDATE 或 RETAINDAYS 沒(méi)有指定,有效期將取決于 sp_configure 的 media retention 配置設(shè)置。這些選項(xiàng)僅僅阻止 SQL Server 重寫文件。用其它方法可擦除磁帶,而通過(guò)操作系統(tǒng)可以刪除磁盤文件。有關(guān)過(guò)期驗(yàn)證的更多信息,請(qǐng)參見(jiàn)本主題的 SKIP 和 FORMAT。
PASSWORD = { password | @password_variable }
為備份集設(shè)置密碼。 PASSWORD 是一個(gè)字符串。如果為備份集定義了密碼,必須提供這個(gè)密碼才能對(duì)該備份集執(zhí)行任何還原操作。
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Text;
using _5dRss.Const;
using _5dRss.lib.Data.Tool;
public partial class admin_admin_dbmanage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//生成備份文件列表
ListBackupFiles();
if (!Page.IsPostBack)
{
Showmsg.Visible = false;
//數(shù)據(jù)庫(kù)路徑
lilDBPath.Text = HttpContext.Current.Request.PhysicalApplicationPath + "App_Data\\" + ConfigurationSettings.AppSettings["DBFile"];
//新建一個(gè) FileInfo 對(duì)象,并獲得數(shù)據(jù)庫(kù)文件的大小,然后轉(zhuǎn)換單位為KB
FileInfo myFileInfo = new FileInfo(lilDBPath.Text);
lilDBSize.Text = Convert.ToString(myFileInfo.Length/1024) + " KB";
//如果兩個(gè)參數(shù)都不為空,則繼續(xù)執(zhí)行
if (Request.QueryString["cmd"] != null Request.QueryString["source"] != null)
{
//備份數(shù)據(jù)庫(kù)原文件名
string sourceFileName = Request.QueryString["source"];
//如果 cmd 參數(shù)為 DelFile
if (Request.QueryString["cmd"].Equals("DelFile"))
{
//刪除備份數(shù)據(jù)庫(kù)文件
File.Delete(HttpContext.Current.Request.PhysicalApplicationPath + "Backup\\" + sourceFileName);
//刷新備份文件列表
ListBackupFiles();
Showmsg.Visible = true;
Showmsg.Text = "div align='center' style='margin-bottom:8px;'img src='images/aL.gif' style='margin-bottom:-6px;'/span class='alertTxt'刪除備份數(shù)據(jù)庫(kù)成功!/spanimg src='images/aR.gif' style='margin-bottom:-6px;'//div";
}
//如果 cmd 參數(shù)為 Restore
if (Request.QueryString["cmd"].Equals("Restore"))
{
//用備份文件覆蓋原文件
File.Copy(HttpContext.Current.Request.PhysicalApplicationPath + "Backup\\" + sourceFileName, HttpContext.Current.Request.PhysicalApplicationPath + "App_Data\\" + ConfigurationSettings.AppSettings["DBFile"], true);
//刷新備份文件列表
ListBackupFiles();
Showmsg.Visible = true;
Showmsg.Text = "div align='center' style='margin-bottom:8px;'img src='images/aL.gif' style='margin-bottom:-6px;'/span class='alertTxt'還原備份數(shù)據(jù)庫(kù)成功!/spanimg src='images/aR.gif' style='margin-bottom:-6px;'//div";
}
}
}
}
protected void lnkbtnCompactDB_Click(object sender, EventArgs e)
{
//壓縮修復(fù)數(shù)據(jù)庫(kù)
AccessDBtool.CompactAccessDB(SysConfig.ConnectionString, HttpContext.Current.Request.PhysicalApplicationPath + "App_Data\\" + ConfigurationSettings.AppSettings["DBFile"]);
Showmsg.Visible = true;
Showmsg.Text = "div align='center' style='margin-bottom:8px;'img src='images/aL.gif' style='margin-bottom:-6px;'/span class='alertTxt'壓縮修復(fù)數(shù)據(jù)庫(kù)成功!/spanimg src='images/aR.gif' style='margin-bottom:-6px;'//div";
}
protected void lnkbtnBackupDB_Click(object sender, EventArgs e)
{
string sourceFileName = HttpContext.Current.Request.PhysicalApplicationPath + "App_Data\\" + ConfigurationSettings.AppSettings["DBFile"];
string destFileName = HttpContext.Current.Request.PhysicalApplicationPath + "Backup\\" + "Backup_";
destFileName += DateTime.Now.ToString("yyyyMMddHHmmss");
destFileName += ".mbk";
//將數(shù)據(jù)庫(kù)文件Copy到Backup目錄,如果有重名文件就覆蓋原文件
File.Copy(sourceFileName, destFileName, true);
//生成備份文件列表
ListBackupFiles();
Showmsg.Visible = true;
Showmsg.Text = "div align='center' style='margin-bottom:8px;'img src='images/aL.gif' style='margin-bottom:-6px;'/span class='alertTxt'備份數(shù)據(jù)庫(kù)成功!/spanimg src='images/aR.gif' style='margin-bottom:-6px;'//div";
}
/// summary
/// 生成備份文件列表
/// /summary
/// returns文件列表,文件詳細(xì)信息及操作選項(xiàng)的HTML代碼/returns
public void ListBackupFiles()
{
//如果目錄不存在則創(chuàng)建次目錄
if (!Directory.Exists(HttpContext.Current.Request.PhysicalApplicationPath + "Backup\\"))
Directory.CreateDirectory(HttpContext.Current.Request.PhysicalApplicationPath + "Backup\\");
DirectoryInfo mydir = new DirectoryInfo(HttpContext.Current.Request.PhysicalApplicationPath + "Backup\\");
StringBuilder sb = new StringBuilder();
foreach (FileInfo f in mydir.GetFiles())
{
sb.Append("a href='backup/" + f.Name + "' target='_blank'img border='0' src='images/mdb.gif' style='margin:4px 3px -3px 0px'/" + f.Name + "/a a href='?cmd=DelFilesource=" + f.Name + "' title='刪除備份文件'刪除/a | a href='?cmd=Restoresource=" + f.Name + "' title='刪除備份文件'還原數(shù)據(jù)庫(kù)/a | " + f.Length/1024 + " KB | " + f.CreationTime + "br /");
}
lilBackupFileList.Text = sb.ToString();
}
}
把下面這句換成你的數(shù)據(jù)庫(kù)地址:
//數(shù)據(jù)庫(kù)路徑
// lilDBPath.Text = HttpContext.Current.Request.PhysicalApplicationPath + "App_Data\\" + ConfigurationSettings.AppSettings["DBFile"];