C#操作数据库备份和还原

 

None.gif C#实现SQLSERVER2000数据库备份还原的两种方法
None.gif: 方法一(不使用SQLDMO):
None.gif
ExpandedBlockStart.gifContractedBlock.gif
/**/ ///
InBlock.gif
///备份方法
ExpandedBlockEnd.gif
///

None.gif SqlConnection conn  =   new  SqlConnection( " Server=.;Database=master;User ID=sa;Password=sa; " );
None.gif
None.gifSqlCommand cmdBK 
=   new  SqlCommand();
None.gifcmdBK.CommandType 
=  CommandType.Text;
None.gifcmdBK.Connection 
=  conn;
None.gifcmdBK.CommandText 
=   @" backup database test to disk='C:\ba' with init " ;
None.gif
None.gif
try
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gifconn.Open();
InBlock.gifcmdBK.ExecuteNonQuery();
InBlock.gifMessageBox.Show(
"Backup successed.");
ExpandedBlockEnd.gif}

None.gif
catch (Exception ex)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gifMessageBox.Show(ex.Message);
ExpandedBlockEnd.gif}

None.gif
finally
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gifconn.Close();
InBlock.gifconn.Dispose();
ExpandedBlockEnd.gif}

None.gif
None.gif
ExpandedBlockStart.gifContractedBlock.gif
/**/ ///
InBlock.gif
///还原方法
ExpandedBlockEnd.gif
///

None.gif SqlConnection conn  =   new  SqlConnection( " Server=.;Database=master;User ID=sa;Password=sa;Trusted_Connection=False " );
None.gifconn.Open();
None.gif
None.gif
// KILL DataBase Process
None.gif
SqlCommand cmd  =   new  SqlCommand( " SELECT spid FROM sysprocesses ,sysdatabases WHERE sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name='test' " , conn);
None.gifSqlDataReader dr;
None.gifdr 
=  cmd.ExecuteReader();
None.gifArrayList list 
=   new  ArrayList();
None.gif
while (dr.Read())
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.giflist.Add(dr.GetInt16(
0));
ExpandedBlockEnd.gif}

None.gifdr.Close();
None.gif
for ( int  i  =   0 ; i  <  list.Count; i ++ )
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gifcmd 
= new SqlCommand(string.Format("KILL {0}", list), conn);
InBlock.gifcmd.ExecuteNonQuery();
ExpandedBlockEnd.gif}

None.gif
None.gifSqlCommand cmdRT 
=   new  SqlCommand();
None.gifcmdRT.CommandType 
=  CommandType.Text;
None.gifcmdRT.Connection 
=  conn;
None.gifcmdRT.CommandText 
=   @" restore database test from disk='C:\ba' " ;
None.gif
None.gif
try
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gifcmdRT.ExecuteNonQuery();
InBlock.gifMessageBox.Show(
"Restore successed.");
ExpandedBlockEnd.gif}

None.gif
catch (Exception ex)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gifMessageBox.Show(ex.Message);
ExpandedBlockEnd.gif}

None.gif
finally
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gifconn.Close();
ExpandedBlockEnd.gif}

None.gif
None.gif
None.gif
None.gif
None.gif
None.gif方法二(使用SQLDMO):
None.gif
ExpandedBlockStart.gifContractedBlock.gif
/**/ ///
InBlock.gif
///备份方法
ExpandedBlockEnd.gif
///

None.gif SQLDMO.Backup backup  =   new  SQLDMO.BackupClass();
None.gifSQLDMO.SQLServer server 
=   new  SQLDMO.SQLServerClass();
None.gif
// 显示进度条
None.gif
SQLDMO.BackupSink_PercentCompleteEventHandler progress  =   new  SQLDMO.BackupSink_PercentCompleteEventHandler(Step);
None.gifbackup.PercentComplete 
+=  progress;
None.gif
None.gif
try
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gifserver.LoginSecure 
= false;
InBlock.gifserver.Connect(
".""sa""sa");
InBlock.gifbackup.Action 
= SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
InBlock.gifbackup.Database 
= "test";
InBlock.gifbackup.Files 
= @"D:\test\myProg\backupTest";
InBlock.gifbackup.BackupSetName 
= "test";
InBlock.gifbackup.BackupSetDescription 
= "Backup the database of test";
InBlock.gifbackup.Initialize 
= true;
InBlock.gifbackup.SQLBackup(server);
InBlock.gifMessageBox.Show(
"Backup successed.");
ExpandedBlockEnd.gif}

None.gif
catch (Exception ex)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gifMessageBox.Show(ex.Message);
ExpandedBlockEnd.gif}

None.gif
finally
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gifserver.DisConnect();
ExpandedBlockEnd.gif}

None.gif
this .pbDB.Value  =   0 ;
None.gif
None.gif
ExpandedBlockStart.gifContractedBlock.gif
/**/ ///
InBlock.gif
///还原方法
ExpandedBlockEnd.gif
///

None.gif SQLDMO.Restore restore  =   new  SQLDMO.RestoreClass();
None.gifSQLDMO.SQLServer server 
=   new  SQLDMO.SQLServerClass();
None.gif
// 显示进度条
None.gif
SQLDMO.RestoreSink_PercentCompleteEventHandler progress  =   new  SQLDMO.RestoreSink_PercentCompleteEventHandler(Step);
None.gifrestore.PercentComplete 
+=  progress;
None.gif
None.gif
// KILL DataBase Process
None.gif
SqlConnection conn  =   new  SqlConnection( " Server=.;Database=master;User ID=sa;Password=sa;Trusted_Connection=False " );
None.gifconn.Open();
None.gifSqlCommand cmd 
=   new  SqlCommand( " SELECT spid FROM sysprocesses ,sysdatabases WHERE sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name='test' " , conn);
None.gifSqlDataReader dr;
None.gifdr 
=  cmd.ExecuteReader();
None.gifArrayList list 
=   new  ArrayList();
None.gif
while (dr.Read())
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.giflist.Add(dr.GetInt16(
0));
ExpandedBlockEnd.gif}

None.gifdr.Close();
None.gif
for ( int  i  =   0 ; i  <  list.Count; i ++ )
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gifcmd 
= new SqlCommand(string.Format("KILL {0}", list), conn);
InBlock.gifcmd.ExecuteNonQuery();
ExpandedBlockEnd.gif}

None.gifconn.Close();
None.gif
None.gif
try
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gifserver.LoginSecure 
= false;
InBlock.gifserver.Connect(
".""sa""sa");
InBlock.gifrestore.Action 
= SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
InBlock.gifrestore.Database 
= "test";
InBlock.gifrestore.Files 
= @"D:\test\myProg\backupTest";
InBlock.gifrestore.FileNumber 
= 1;
InBlock.gifrestore.ReplaceDatabase 
= true;
InBlock.gifrestore.SQLRestore(server);
InBlock.gifMessageBox.Show(
"Restore successed.");
ExpandedBlockEnd.gif}

None.gif
catch (Exception ex)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gifMessageBox.Show(ex.Message);
ExpandedBlockEnd.gif}

None.gif
finally
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gifserver.DisConnect();
ExpandedBlockEnd.gif}

None.gif
this .pbDB.Value  =   0 ;
None.gif

转载于:https://www.cnblogs.com/kangtr/archive/2007/10/16/926031.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值