asp.net c#SQLDMO使用问题
/// </summary>public void DbRestore(string path)
{
if (exepro() != true)
{
}
else
{
SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();
SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
try
{
oSQLServer.LoginSecure = false;
oSQLServer.Connect("lwt", "sa", "12666954");
oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
oRestore.Database = "gradstu";//连接数据库名
oRestore.Files = path;
oRestore.FileNumber = 1;
oRestore.ReplaceDatabase = true;//是否覆盖当前数据库
oRestore.SQLRestore(oSQLServer);
}
catch(Exception errm)
{
throw;
}
finally
{
oSQLServer.DisConnect();//释放连接
}
}
这个里边的 oRestore.Files = path;
path是我存储备份文件的绝对路径:就比如是c:\input\wwwroot\12346.bak吧
请问这里的路径这样对不对。或者其他地方有什么错误,请高手指点下。我的程序运行会抛出异常
异常信息如下:[Microsoft][ODBC SQL Server Driver][SQL Server]因为数据库正在使用,所以无法获得对数据库的独占访问权。
[Microsoft][ODBC SQL Server Driver][SQL Server]RESTORE DATABASE 正在异常终止。
里边的exepe()方法是调用存储过程杀掉当前库的所有进程。
请高手指点。在线等~ --------------------编程问答-------------------- 路径是对的
因为数据库正在使用
=======
因为有连接存在,所以还原之前,你得调用清掉这些连接,
参考
用ASP.NET还原与恢复SQL Server数据库 http://www.zlku.cn/f/ct8/
--------------------编程问答-------------------- public bool exepro()
{
SqlConnection conn1 = new SqlConnection("Data Source=LWT;Initial Catalog=master;User ID=sa;password=12666954");
SqlCommand cmd = new SqlCommand("killspid",conn1);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@dbname", "grastu");
try
{
conn1.Open();
cmd.ExecuteNonQuery();
return true;
}
catch
{
return false;
}
finally
{
conn1.Close();
}
}
} --------------------编程问答-------------------- create proc killspid (@dbname varchar(20))
as
begin
declare @sql nvarchar(500),@temp varchar(1000)
declare @spid int
set @sql='declare getspid cursor for
select spid from sysprocesses where dbid=db_id('''+@dbname+''')'
exec (@sql)
open getspid
fetch next from getspid into @spid
while @@fetch_status =0
begin
set @temp='kill '+rtrim(@spid)
exec(@temp)
fetch next from getspid into @spid
end
close getspid
deallocate getspid
end
GO
存储过程。
--------------------编程问答-------------------- 问题还是最上边说的问题,依然存在。 --------------------编程问答-------------------- 你是否将结束目标数据库的连接的程序段放在了紧靠oRestore.SQLRestore(oSQLServer);之前了...
还有就是你确定你已经将活动连接结束掉了,自己可以在master库中的sysprocess表中查看,或者直接开那个库看运行断开程序时是否显示断开了连接^_^GL --------------------编程问答-------------------- SQL Server 2005简装版的都没有这个Master,也没有这个sysprocess表啊!
哥们怎么办啊? --------------------编程问答-------------------- SQL Server 2005简装版的都没有这个Master,也没有这个sysprocess表啊!
哥们怎么办啊?
==============================
网上找个或者问别人要个,附加进去! --------------------编程问答-------------------- 权限
--------------------编程问答-------------------- 没有权限,怎么办呀..
湖南墙体广告www.csxzgg.com
湖南墙体导航www.QiangTiGuangGao.cn
大口段www.dakouduan.com
平江县房产网www.pingjiangxian.com
补充:.NET技术 , ASP.NET