62,052
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using SQLDMO;
public partial class Default2 : System.Web.UI.Page
{
string ServerName = string.Empty;
string UserName = string.Empty;
string Password = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
ArrayList list = GetServerList();
//for (int i = 0; i < list.Count;i++ )
//{
// Response.Write(list[i].ToString()+"n/");
//}
ArrayList list2 = GetDbList(".", "sa", "sa");
//for (int i = 0; i < list.Count; i++)
//{
// Response.Write(list2[i].ToString() + "n/");
//}
Response.Write(BackUPDB("aasheaa", "aasheaan.bak"));
}
public ArrayList GetServerList()
{
ArrayList alServers = new ArrayList();
SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass();
try
{
SQLDMO.NameList serverList = sqlApp.ListAvailableSQLServers();
for (int i = 1; i <= serverList.Count; i++)
{
alServers.Add(serverList.Item(i));
}
}
catch (Exception e)
{
throw (new Exception("取数据库服务器列表出错:" + e.Message));
}
finally
{
sqlApp.Quit();
}
return alServers;
}
//取得指定数据库服务器的数据库列表
public ArrayList GetDbList(string strServerName, string strUserName, string strPwd)
{
ServerName = strServerName;
UserName = strUserName;
Password = strPwd;
ArrayList alDbs = new ArrayList();
SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass();
SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass();
try
{
svr.Connect(ServerName, UserName, Password);
foreach (SQLDMO.Database db in svr.Databases)
{
if (db.Name != null)
alDbs.Add(db.Name);
}
}
catch (Exception e)
{
throw (new Exception("连接数据库出错:" + e.Message));
}
finally
{
svr.DisConnect();
sqlApp.Quit();
}
return alDbs;
}
public bool BackUPDB(string strDbName, string strFileName, ProgressBar pgbMain)
{
PBar = pgbMain ;
SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass() ;
try
{
svr.Connect(ServerName,UserName,Password) ;
SQLDMO.Backup bak = new SQLDMO.BackupClass();
bak.Action = 0 ;
bak.Initialize = true ;
SQLDMO.BackupSink_PercentCompleteEventHandler pceh = new SQLDMO.BackupSink_PercentCompleteEventHandler(Step);
bak.PercentComplete += pceh;
bak.Files = strFileName;
bak.Database = strDbName;
bak.SQLBackup(svr);
return true ;
}
catch(Exception err)
{
throw(new Exception("备份数据库失败"+err.Message)) ;
}
finally
{
svr.DisConnect() ;
}
}
private void Step(string message,int percent)
{
PBar.Value = percent ;
}
//其中,这两个语句实现了进度的实时显示:
//SQLDMO.BackupSink_PercentCompleteEventHandler pceh = new SQLDMO.BackupSink_PercentCompleteEventHandler(Step);
//bak.PercentComplete += pceh;
//Step就是上面private void Step(string message,int percent) 的方法名称,它用来显示进度条的当前进度。
}