asp.net 因为数据库正在使用的解决方法
程序员文章站
2022-06-18 09:32:36
这个问题困惑我好长的时间,在网上搜,也没完全的解决方案,不是过于简单,就是乱说,有的论坛上还没人回答这个问题.今天我彻底解决这个问题,并在c#里测试完全通过.现在把他写出来...
这个问题困惑我好长的时间,在网上搜,也没完全的解决方案,不是过于简单,就是乱说,有的论坛上还没人回答这个问题.今天我彻底解决这个问题,并在c#里测试完全通过.现在把他写出来,希望对朋友们有帮助(如要转载,记得给我版权哦.嘿嘿!!!).以下信息是综合网上的资料和我的实际问题,整理出来的.
备份:
在备份按钮里写:
protected void button1_click(object sender, eventargs e)
{
string path = "e:\\maz数据库备份\\" + menu+ ".bak";
if (file.exists(path))
{
file.delete(path);//注意,这个步骤很重要,如果重复,在备份的数据,就会变成,
//你刚开始的数据,所以每次都要先删除.
}
if (!file.exists(path))
{
filestream fs = file.create(path);
fs.close();
}
string backupstr="backup database test to disk='"+path+"';";
sqlconnection con = new sqlconnection("server=localhost;database=menu;uid=sa;pwd=sa;");
sqlcommand cmd = new sqlcommand(backupstr, con);
try
{
con.open();
cmd.executenonquery();
messagebox.show("备份成功!");
connection.close();
}
catch (exception ex)
{
string stringerror = ex.tostring();
messagebox.show("备份失败!");
connection.close();
}
}
还原:
在还原按钮里写:
protected void button2_click(object sender, eventargs e)
{
string path = "e:\\maz数据库备份\\" + menu+ ".bak";
string connectionstringtest = "server=localhost ;database=master;uid=sa;pwd=sa";
sqlconnection connection = new sqlconnection(connectionstringtest);
string backupstr = "restore database menu from disk='" + path + "';";
try
{
string sql = "exec killspid '" + menu+ "'";//这个很关键,要不然就出现题目上的错误了
sqlcommand cmd = new sqlcommand(sql, connection);
connection.open();
cmd.executenonquery();
cmd = new sqlcommand(backupstr, connection);
cmd.executenonquery();
messagebox.show("恢复成功!");
connection.close();
}
catch (exception ex)
{
string stringerror = ex.tostring();
messagebox.show("恢复失败!");
connection.close();
}
}
存储过程 killspid
create proc killspid (@dbname varchar(20))
as
begin
declare @sql nvarchar(500)
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 <>-1
begin
exec('kill') +@spid
fetch next from getspid into @spid
end
close getspid
deallocate getspid
end
备份:
在备份按钮里写:
复制代码 代码如下:
protected void button1_click(object sender, eventargs e)
{
string path = "e:\\maz数据库备份\\" + menu+ ".bak";
if (file.exists(path))
{
file.delete(path);//注意,这个步骤很重要,如果重复,在备份的数据,就会变成,
//你刚开始的数据,所以每次都要先删除.
}
if (!file.exists(path))
{
filestream fs = file.create(path);
fs.close();
}
string backupstr="backup database test to disk='"+path+"';";
sqlconnection con = new sqlconnection("server=localhost;database=menu;uid=sa;pwd=sa;");
sqlcommand cmd = new sqlcommand(backupstr, con);
try
{
con.open();
cmd.executenonquery();
messagebox.show("备份成功!");
connection.close();
}
catch (exception ex)
{
string stringerror = ex.tostring();
messagebox.show("备份失败!");
connection.close();
}
}
还原:
在还原按钮里写:
复制代码 代码如下:
protected void button2_click(object sender, eventargs e)
{
string path = "e:\\maz数据库备份\\" + menu+ ".bak";
string connectionstringtest = "server=localhost ;database=master;uid=sa;pwd=sa";
sqlconnection connection = new sqlconnection(connectionstringtest);
string backupstr = "restore database menu from disk='" + path + "';";
try
{
string sql = "exec killspid '" + menu+ "'";//这个很关键,要不然就出现题目上的错误了
sqlcommand cmd = new sqlcommand(sql, connection);
connection.open();
cmd.executenonquery();
cmd = new sqlcommand(backupstr, connection);
cmd.executenonquery();
messagebox.show("恢复成功!");
connection.close();
}
catch (exception ex)
{
string stringerror = ex.tostring();
messagebox.show("恢复失败!");
connection.close();
}
}
存储过程 killspid
复制代码 代码如下:
create proc killspid (@dbname varchar(20))
as
begin
declare @sql nvarchar(500)
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 <>-1
begin
exec('kill') +@spid
fetch next from getspid into @spid
end
close getspid
deallocate getspid
end
推荐阅读
-
如何强制删除或恢复SQLServer正在使用的数据库
-
ASP.NET Core 中使用EF Core 将实体映射到数据库表的方法(SQL Server)
-
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法_jquery
-
错误"因为数据库正在使用,所以无法获得对数据库的独占访问
-
PHP使用PDO操作数据库的乱码问题解决方法
-
Java 使用poi把数据库中数据导入Excel的解决方法
-
win2008 r2因为使用安全设置软件导致权限丢失无法打开磁盘的解决方法
-
sql server 还原数据库时提示数据库正在使用,无法进行操作的解决方法
-
Java 使用poi把数据库中数据导入Excel的解决方法
-
SQLServer2005触发器提示其他会话正在使用事务的上下文的解决方法