-
:方法一(不使用SQLDMO):
-
-
///
-
///备份方法
-
///
-
SqlConnectionconn=newSqlConnection("Server=.;Database=master;UserID=sa;Password=sa;");
-
-
SqlCommandcmdBK=newSqlCommand();
-
cmdBK.CommandType=CommandType.Text;
-
cmdBK.Connection=conn;
-
cmdBK.CommandText=@"backupdatabasetesttodisk='C:/ba'withinit";
-
-
try
-
{
-
conn.Open();
-
cmdBK.ExecuteNonQuery();
-
MessageBox.Show("Backupsuccessed.");
-
}
-
catch(Exceptionex)
-
{
-
MessageBox.Show(ex.Message);
-
}
-
finally
-
{
-
conn.Close();
-
conn.Dispose();
-
}
-
-
-
///
-
///还原方法
-
///
-
SqlConnectionconn=newSqlConnection("Server=.;Database=master;UserID=sa;Password=sa;Trusted_Connection=False");
-
conn.Open();
-
-
//KILLDataBaseProcess
-
SqlCommandcmd=newSqlCommand("SELECTspidFROMsysprocesses,sysdatabasesWHEREsysprocesses.dbid=sysdatabases.dbidANDsysdatabases.Name='test'",conn);
-
SqlDataReaderdr;
-
dr=cmd.ExecuteReader();
-
ArrayListlist=newArrayList();
-
while(dr.Read())
-
{
-
list.Add(dr.GetInt16(0));
-
}
-
dr.Close();
-
for(inti=0;i<list.Count;i++)
-
{
-
cmd=newSqlCommand(string.Format("KILL{0}",list),conn);
-
cmd.ExecuteNonQuery();
-
}
-
-
SqlCommandcmdRT=newSqlCommand();
-
cmdRT.CommandType=CommandType.Text;
-
cmdRT.Connection=conn;
-
cmdRT.CommandText=@"restoredatabasetestfromdisk='C:/ba'";
-
-
try
-
{
-
cmdRT.ExecuteNonQuery();
-
MessageBox.Show("Restoresuccessed.");
-
}
-
catch(Exceptionex)
-
{
-
MessageBox.Show(ex.Message);
-
}
-
finally
-
{
-
conn.Close();
-
}
-
方法二(使用SQLDMO):
-
-
///
-
///备份方法
-
///
-
SQLDMO.Backupbackup=newSQLDMO.BackupClass();
-
SQLDMO.SQLServerserver=newSQLDMO.SQLServerClass();
-
//显示进度条
-
SQLDMO.BackupSink_PercentCompleteEventHandlerprogress=newSQLDMO.BackupSink_PercentCompleteEventHandler(Step);
-
backup.PercentComplete+=progress;
-
-
try
-
{
-
server.LoginSecure=false;
-
server.Connect(".","sa","sa");
-
backup.Action=SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
-
backup.Database="test";
-
backup.Files=@"D:/test/myProg/backupTest";
-
backup.BackupSetName="test";
-
backup.BackupSetDescription="Backupthedatabaseoftest";
-
backup.Initialize=true;
-
backup.SQLBackup(server);
-
MessageBox.Show("Backupsuccessed.");
-
}
-
catch(Exceptionex)
-
{
-
MessageBox.Show(ex.Message);
-
}
-
finally
-
{
-
server.DisConnect();
-
}
-
this.pbDB.Value=0;
-
-
-
///
-
///还原方法
-
///
-
SQLDMO.Restorerestore=newSQLDMO.RestoreClass();
-
SQLDMO.SQLServerserver=newSQLDMO.SQLServerClass();
-
//显示进度条
-
SQLDMO.RestoreSink_PercentCompleteEventHandlerprogress=newSQLDMO.RestoreSink_PercentCompleteEventHandler(Step);
-
restore.PercentComplete+=progress;
-
-
//KILLDataBaseProcess
-
SqlConnectionconn=newSqlConnection("Server=.;Database=master;UserID=sa;Password=sa;Trusted_Connection=False");
-
conn.Open();
-
SqlCommandcmd=newSqlCommand("SELECTspidFROMsysprocesses,sysdatabasesWHEREsysprocesses.dbid=sysdatabases.dbidANDsysdatabases.Name='test'",conn);
-
SqlDataReaderdr;
-
dr=cmd.ExecuteReader();
-
ArrayListlist=newArrayList();
-
while(dr.Read())
-
{
-
list.Add(dr.GetInt16(0));
-
}
-
dr.Close();
-
for(inti=0;i<list.Count;i++)
-
{
-
cmd=newSqlCommand(string.Format("KILL{0}",list),conn);
-
cmd.ExecuteNonQuery();
-
}
-
conn.Close();
-
-
try
-
{
-
server.LoginSecure=false;
-
server.Connect(".","sa","sa");
-
restore.Action=SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
-
restore.Database="test";
-
restore.Files=@"D:/test/myProg/backupTest";
-
restore.FileNumber=1;
-
restore.ReplaceDatabase=true;
-
restore.SQLRestore(server);
-
MessageBox.Show("Restoresuccessed.");
-
}
-
catch(Exceptionex)
-
{
-
MessageBox.Show(ex.Message);
-
}
-
finally
-
{
-
server.DisConnect();
-
}
-
this.pbDB.Value=0;
相关推荐
用C#写的实现数据库备份与还原的工程(VS2008下可直接运行,低于08的版本可以拷贝代码实现,记得要在COM中添加SQLSMO引用,本例数据库为SuperMarket,请更改为你所需备份的数据库),个人特意将两种方法放在同一工程...
总的来说,理解C#中如何利用SMO进行数据库备份和还原,以及在Web环境中如何实现这些操作,是提升开发技能的重要一步。这个过程涉及到数据库连接、SQL命令构造、异常处理和用户交互等多个方面,是.NET开发者必备的...
这个库包含了与MySQL服务器交互所需的类和方法,其中包括了用于备份和还原的API。 接下来,我们将重点讨论如何使用SQL.DLL进行数据备份。MySQL提供了`mysqldump`命令行工具,可以生成SQL脚本来创建数据库的结构和...
329 实例238 列出系统中的打印机 330 7.12 其他 332 实例239 两种信息发送方式 332 实例240 功能快捷键 336 第8章 注册表 339 8.1 操作注册表 340 实例241 怎样存取注册表信息 ...
精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、...
精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、...
精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、...
C#编程经验技巧宝典源代码,目录如下: 第1章 开发环境 1 <br>1.1 Visual Studio开发环境安装与配置 2 <br>0001 安装Visual Studio 2005开发环境须知 2 <br>0002 配置合适的Visual Studio 2005...
精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、...
聊天系统,操作了数据库,有服务端和客户端。 ini文件的类适合VC使用 如题。 Inline Hook(ring3) 简单源码 代码里用了备份dll的方法,因此在自定义的函数中可以直接调用在内存中备份的dll代码,而不需要再把函数...