使用.net备份和还原数据库

原文:使用.net备份和还原数据库
CSDN网友的提问http://community.csdn.net/Expert/TopicView3.asp?id=4929678

C#实现SQLSERVER2000数据库备份还原的两种方法
: 方法一(不使用SQLDMO):

///
///备份方法
///
SqlConnection conn = new SqlConnection("Server=.;Database=master;User ID=sa;Password=sa;");

SqlCommand cmdBK = new SqlCommand();
cmdBK.CommandType = CommandType.Text;
cmdBK.Connection = conn;
cmdBK.CommandText = @"backup database test to disk='C:\ba' with init";

try
{
conn.Open();
cmdBK.ExecuteNonQuery();
MessageBox.Show("Backup successed.");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
conn.Dispose();
}

///
///还原方法
///
SqlConnection conn = new SqlConnection("Server=.;Database=master;User ID=sa;Password=sa;Trusted_Connection=False");
conn.Open();

//KILL DataBase Process
SqlCommand
cmd = new SqlCommand("SELECT spid FROM sysprocesses ,sysdatabases WHERE
sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name='test'",
conn);
SqlDataReader dr;
dr = cmd.ExecuteReader();
ArrayList list = new ArrayList();
while(dr.Read())
{
list.Add(dr.GetInt16(0));
}
dr.Close();
for(int i = 0; i < list.Count; i++)
{
cmd = new SqlCommand(string.Format("KILL {0}", list), conn);
cmd.ExecuteNonQuery();
}

SqlCommand cmdRT = new SqlCommand();
cmdRT.CommandType = CommandType.Text;
cmdRT.Connection = conn;
cmdRT.CommandText = @"restore database test from disk='C:\ba'";

try
{
cmdRT.ExecuteNonQuery();
MessageBox.Show("Restore successed.");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}

方法二(使用SQLDMO):

///
///备份方法
///
SQLDMO.Backup backup = new SQLDMO.BackupClass();
SQLDMO.SQLServer server = new SQLDMO.SQLServerClass();
//显示进度条
SQLDMO.BackupSink_PercentCompleteEventHandler progress = new SQLDMO.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 = "Backup the database of test";
backup.Initialize = true;
backup.SQLBackup(server);
MessageBox.Show("Backup successed.");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
server.DisConnect();
}
this.pbDB.Value = 0;

///
///还原方法
///
SQLDMO.Restore restore = new SQLDMO.RestoreClass();
SQLDMO.SQLServer server = new SQLDMO.SQLServerClass();
//显示进度条
SQLDMO.RestoreSink_PercentCompleteEventHandler progress = new SQLDMO.RestoreSink_PercentCompleteEventHandler(Step);
restore.PercentComplete += progress;

//KILL DataBase Process
SqlConnection conn = new SqlConnection("Server=.;Database=master;User ID=sa;Password=sa;Trusted_Connection=False");
conn.Open();
SqlCommand
cmd = new SqlCommand("SELECT spid FROM sysprocesses ,sysdatabases WHERE
sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name='test'",
conn);
SqlDataReader dr;
dr = cmd.ExecuteReader();
ArrayList list = new ArrayList();
while(dr.Read())
{
list.Add(dr.GetInt16(0));
}
dr.Close();
for(int i = 0; i < list.Count; i++)
{
cmd = new SqlCommand(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("Restore successed.");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
server.DisConnect();
}
this.pbDB.Value = 0;

时间: 2025-01-21 12:34:07

使用.net备份和还原数据库的相关文章

编程实现备份和还原数据库

备份|编程|数据|数据库  注意,下面备份还原都是用存储过程实现! if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_backupdb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[p_backupdb]GO /*--备份数据库的通用存储过程 --邹建 2003.10--*/ /*--调用示例 --备份当前数据库e

【RMAN】利用备份片还原数据库

[RMAN]利用备份片还原数据库 BLOG文档结构图       群里有同学说把ORACLE_BASE目录删掉了,现在只有备份片和归档文件了,试问如何恢复.坑,,,,咋能这么干,ORACLE_BASE都敢删,,试着恢复了下,并且记录下来,当然软件安装部分就不记录了. 我再说说目前的情况,只有备份片和归档文件,且从文件名称是看不出dbname和dbid的,在这种情况下其实恢复控制文件是很重要的了,但是鬼知道备份片里边是不是有控制文件的备份呢?我们可能碰到的就是这样的情况,只有备份文件,其它的什么都

SQL Server 2008 如何备份、还原数据库

  SQL Server 2008 备份数据库: 1.打开SQL , 找到要备份的数据库 , 右键 >> 任务 >>备份 2.弹出 [ 备份数据库对话框 ] ,如图:   3.点击添加 [ 按钮 ] . 如下图:   4.选择要备份的路径 和 备份的文件名 点击 [ 确定 ]. 5.然后就一直点击确定就可以了 . 然后我们来到D: 看看   6.这个时候 , 你可以把它压缩打包什么的 , 要用的时候 , 在文件后面加 .bak 后缀 就可以用SQL 来还原了,还原可以来看这里~ S

备份、还原数据库

 --[备份数据库]BACKUP DATABASE test      --这里的test指的是数据库名称TO disk = 'd:/backup.bak'    --这里指名的数据库路径(backup.bak为备份文件名)WITH FORMAT,NAME = 'Full Backup of MyNwind'    --这个是备注,无所谓..随便写 --[还原数据库]  RESTORE DATABASE Test    --所被恢复的数据库名称FROM disk = 'd:/backup.bak

MySQL使用命令备份和还原数据库_Mysql

数据库在使用当中都会有数据库备份工作,当数据库发生严重错误无法启动,或者数据丢失时可以及时有效地恢复数据.文章简单介绍如何备份和还原MySQL数据库. 备份数据库 使用mysqldump命令备份数据库 复制代码 代码如下: # 如果要将game数据库进行备份: mysqldump -u root -p game > game_backup.sql # 如果希望备份所有的数据库: mysqldump -u root -p --all-databases > all_backup.sql 还原数据

ASP.NET下备份与还原数据库代码_实用技巧

核心技术: 复制代码 代码如下: using System.Data.SqlClient; using System.IO; string SqlStr1 = "Server=(local);DataBase=master;Uid=sa;Pwd="; string SqlStr2 = "Exec sp_helpdb"; string SqlStr1 = "Server=(local);database='" + this.DropDownList

使用MYSQL界定符备份及还原数据库 比sql文件更给力

在<高性能Mysql>第二版中看到,SQL文件和界定符文件在备份.还原时的耗费时间对比. 方式 文件大小 导出时间 还原时间 SQL dump 727M 102s 600s Delimited dump 669M 86s 301s 看起来界定符文件的导出比sql文件快了近20%,还原速度快了一倍. 记录和总结一下语法: 备份:SELECT INTO OUTFILE SELECT * FROM hx_9enjoy INTO OUTFILE '/tmp/9enjoy.txt' 默认使用tab分割字

mongo 3.0 备份和还原数据库 ,及too many positional arguments错误

在mongo 3.0的操作   备份示例 ./mongodump -h localhost -d liongo -o ./   错误方式: ./mongorestore -h 127.0.0.1 -d liongo --directoryperdb /home/zhoudazhuang/company-zhoudazhuang/liongo/note.bson 会报错: 2017-01-27T15:31:54.217+0800 error parsing command line options

C#中结合使用SQLDMO实现备份、还原SQLserver数据库

找了好几个,这个例子还算不错! 主要在还原数据库时,有杀死其它连接进程的代码 1 using System;2 using System.Collections.Generic;3 using System.ComponentModel;4 using System.Data;5 using System.Drawing;6 using System.Text;7 using System.Windows.Forms;8 namespace Magicbit.Framework9 { 10 pu