如何实现数据库的还原

pgj 2004-07-12 03:12:59
C#代码开发的应用程序,数据库使用MSDE,如何实现在安装应用程序时(同时也安装了MSDE数据库)还原数据库(如果没有此数据库,则创建一个数据库,并把含有一些基础数据的备份文件还原到数据库),或者也可以考虑在运行系统时通过代码来实现,不知道哪位高人能指点一下
...全文
142 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bob 2004-07-16
  • 打赏
  • 举报
回复
SqlConnection连接到SQL Server服务器的master表,然后发一个“Create Table ...”命令过去就可以啦。
pgj 2004-07-16
  • 打赏
  • 举报
回复
利用SQLDMO进行备份和还原没问题了,怎么进行“新建数据库”操作阿?
hanbinghai 2004-07-16
  • 打赏
  • 举报
回复
看你的数据库有没有动态建立的需要,如果没有,你先手工建立好,还可以输入好数据,备份一份之后,在新的机器上还原一份即可,^_^
chenyu001 2004-07-16
  • 打赏
  • 举报
回复
Create Table
hanbinghai 2004-07-12
  • 打赏
  • 举报
回复
参见在C#中运用SQLDMO备份和恢复Microsoft SQL Server数据库
http://dev.csdn.net/develop/article/28/28564.shtm
当不使用要恢复的数据库时以上方法可行,但当你使用了数据库时就必须杀死该进程
代码如下:

/// <summary>
/// 还原数据库函数
/// </summary>
/// <param name="strDbName">数据库名</param>
/// <param name="strFileName">数据库备份文件的完整路径名</param>
/// <returns></returns>
public bool RestoreDB(string strDbName,string strFileName)
{
//PBar = pgbMain ;
SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass() ;
try
{
//服务器名,数据库用户名,数据库用户名密码
svr.Connect("localhost","sa","hai") ;

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 ;
}
//杀死使用strDbName数据库的进程
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) ;
}
}

SQLDMO.Restore res = new SQLDMO.RestoreClass() ;
res.Action = 0 ;
res.Files = strFileName ;

res.Database = strDbName ;
res.ReplaceDatabase = true ;
res.SQLRestore(svr) ;
return true ;
}
catch
{
return false;
}
finally
{
svr.DisConnect() ;
}
}



Bob 2004-07-12
  • 打赏
  • 举报
回复
The MSDE Deployment Toolkit (RC) in Action
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnmsde/html/msdedepl.asp
lgsnake 2004-07-12
  • 打赏
  • 举报
回复
我耶想知道啊,哪个铁铁代码
xinshaw 2004-07-12
  • 打赏
  • 举报
回复
顶,gz
lyrixliu 2004-07-12
  • 打赏
  • 举报
回复
用具有sa权限的用户连接到master数据库,用restore database 语句来实现
代码就懒得整理了,自己参考msdn写吧
athossmth 2004-07-12
  • 打赏
  • 举报
回复
关注

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧