| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 726 人关注过本帖
标题:如何做才能正确恢复数据!
取消只看楼主 加入收藏
hxhfg
Rank: 1
等 级:新手上路
帖 子:284
专家分:0
注 册:2006-4-18
收藏
 问题点数:0 回复次数:1 
如何做才能正确恢复数据!
一个用SQLDMO在c#中进行备份,但恢复时数据库在使用中,导致恢复失败!
请教一下,如何做才能正确恢复数据!谢谢了!
错误描述:
Microsoft SQL-DMO (ODBC SQLState: 42000) (0x800A0C1D)
[Microsoft][ODBC SQL Server Driver][SQL Server]因为数据库正在使用,所以未能获得对数据库的排它访问权。
[Microsoft][ODBC SQL Server Driver][SQL Server]RESTORE DATABASE 操作异常终止。
搜索更多相关主题的帖子: 数据 
2006-05-29 22:09
hxhfg
Rank: 1
等 级:新手上路
帖 子:284
专家分:0
注 册:2006-4-18
收藏
得分:0 
数据还原代码如下,进程我也杀了,可是还是提示数据库正在使用
/// <summary>
/// 还原数据库
/// </summary>
private void btnRestore_Click(object sender, System.EventArgs e)
{

this.Cursor = Cursors.WaitCursor;
this.label1.Text = " 正在进行档案库的数据还原,这可能需要几秒到几十的时间,请稍候...";
this.label1.Visible = true;
this.label1.Refresh();
this.pBar1.Visible = true;
//------------------------------------------------------------------------------------

string fileName = "NorthwindBak";
string filePath = "D:\NorthwindBak";
string remark = "备份测试";

SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();
SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
oRestore.Action = 0 ;
SQLDMO.RestoreSink_PercentCompleteEventHandler pceh = new SQLDMO.RestoreSink_PercentCompleteEventHandler(Step);
oRestore.PercentComplete += pceh;
try
{
oSQLServer.Connect(Common.MySettings.SqlServerName, "sa", "");
SQLDMO.QueryResults qr = oSQLServer.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() == "CgRecord".ToUpper())
oSQLServer.KillProcess(lPID) ;
}


oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
oRestore.Database = "Northwind";
oRestore.Files = filePath;
oRestore.FileNumber = 1;
oRestore.ReplaceDatabase = true;
oRestore.SQLRestore(oSQLServer);


}
catch(System.Exception ex)
{
Common.ShowMsg("数据还原失败:\n" + ex.ToString());
}
finally
{
oSQLServer.DisConnect();
}

//------------------------------------------------------------------------------------
this.label1.Visible = false;
this.pBar1.Visible = false;
this.Cursor = Cursors.Default;
}

/// <summary>
/// 显示还原进度条
/// </summary>
private void Step(string message,int percent)
{
this.pBar1.Value = percent ;
}



2006-05-29 22:11
快速回复:如何做才能正确恢复数据!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038544 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved