社区
C#
帖子详情
有谁做过数据库备份没啊,教教小弟!!
tuoliao722
2005-05-17 09:20:40
做完了一个小项目,没做过数据库备份,请大哥们指点!
...全文
159
13
打赏
收藏
有谁做过数据库备份没啊,教教小弟!!
做完了一个小项目,没做过数据库备份,请大哥们指点!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yzg100
2005-05-17
打赏
举报
回复
写个存储过程来备份,文件时加上系统时间精确到秒。程序里来执行存储过程就行了。
wh8254
2005-05-17
打赏
举报
回复
backup database dbname
不过楼主要注意了,重复备份时,可能数据库中的数据会重复,而不是覆盖!
可以找个数据库操作下!
liukanghui
2005-05-17
打赏
举报
回复
如果是sql server用自带的备份向导比较好
sea_in_yellow
2005-05-17
打赏
举报
回复
这是从我自己的 SQL-Server 的项目中拷贝下来的原代码,是用 SQL_DMO 来操作的,
你看看对你有没有帮助。
sea_in_yellow
2005-05-17
打赏
举报
回复
public bool BackUpDB( string ServerName, string UserName, string Password, string strDbName,string strFileName )
{
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() ;
}
}
sea_in_yellow
2005-05-17
打赏
举报
回复
private void btnBackData_Click(object sender, System.EventArgs e)
{
if( ""==strBackPath )
{
MessageBox.Show("请先选择备份路径!");
}
else
{
this.Cursor = Cursors.WaitCursor;
if( BackUpDB( Global.MainIni.IniReadValue("DataBase","Server"),
Global.MainIni.IniReadValue("DataBase","UID"),
Encrypt.Decrypt3DES( Global.MainIni.IniReadValue("DataBase","PWD"), Encrypt.strKey ) ,
Global.MainIni.IniReadValue("DataBase","DataBase"),
strBackPath )
)
{
this.Cursor = Cursors.Arrow;
MessageBox.Show("数据备份成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
this.proBar.Value = 0;
}
this.Cursor = Cursors.Arrow;
}
strBackPath = "";
}
private void btnRestoreData_Click(object sender, System.EventArgs e)
{
if(MessageBox.Show("该操作将数据覆盖!!\n\n如果选择[是],将原来的数据覆盖\n\n如果选择[否],将取消恢复","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Warning)==DialogResult.No)
return;
return;
this.Cursor = Cursors.WaitCursor;
if( RestoreData( Global.MainIni.IniReadValue("DataBase","Server"),
Global.MainIni.IniReadValue("DataBase","UID"),
Encrypt.Decrypt3DES( Global.MainIni.IniReadValue("DataBase","PWD"), Encrypt.strKey ) ,
Global.MainIni.IniReadValue("DataBase","DataBase"),
strRestorePath )
)
{
this.Cursor = Cursors.Arrow;
MessageBox.Show("数据恢复成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
this.proBar.Value = 0;
}
}
public bool RestoreData( string ServerName, string UserName, string Password,string strDbName,string strFileName )
{
SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass() ;
try
{
svr.Connect(ServerName,UserName,Password) ;
SQLDMO.QueryResults qr = svr.EnumProcesses(-1) ;
int iColPIDNum = -1 ;
int iColDbName = -1 ;
for(int i=1;i<=qr.Columns;i++)
{
string strName = qr.get_ColumnName(i) ;
if (strName.ToUpper().Trim() == "SPID")
{
iColPIDNum = i ;
}
else if (strName.ToUpper().Trim() == "DBNAME")
{
iColDbName = i ;
}
if (iColPIDNum != -1 && iColDbName != -1)
break ;
}
for(int i=1;i<=qr.Rows;i++)
{
int lPID = qr.GetColumnLong(i,iColPIDNum) ;
string strDBName = qr.GetColumnString(i,iColDbName) ;
if (strDBName.ToUpper() == strDbName.ToUpper())
svr.KillProcess(lPID) ;
}
}
catch(Exception err)
{
throw(new Exception("恢复数据库失败,请关闭所有和该数据库连接的程序!"+err.Message)) ;
}
try
{
SQLDMO.Restore res = new SQLDMO.RestoreClass() ;
res.Action = 0 ;
SQLDMO.RestoreSink_PercentCompleteEventHandler pceh = new SQLDMO.RestoreSink_PercentCompleteEventHandler(Step);
res.PercentComplete += pceh;
res.Files = strFileName ;
res.Database = strDbName ;
res.ReplaceDatabase = true ;
res.SQLRestore(svr) ;
return true;
}
catch(Exception err)
{
throw(new Exception("恢复数据库失败,请关闭所有和该数据库连接的程序!"+err.Message)) ;
}
finally
{
svr.DisConnect() ;
}
}
FirstNet
2005-05-17
打赏
举报
回复
csdn上还有会编程的吗,不是来蹭分就是瞎答问题,一群”酒囊饭袋“
koy0755
2005-05-17
打赏
举报
回复
access的话直接copy文件.
如果是sqlserver的话用sql语句如下:
backup database 数据库名 disk='备份的文件名'
tuoliao722
2005-05-17
打赏
举报
回复
写代码
wingnal
2005-05-17
打赏
举报
回复
写代码还是操作?
brando_beat
2005-05-17
打赏
举报
回复
很多的,你在csdn上面搜一下
lindaolong
2005-05-17
打赏
举报
回复
access的话就拷贝文件
copyfile()
fengfangfang
2005-05-17
打赏
举报
回复
backup database dbname
C#
111,095
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章