一直困扰的数据库在线还原,终于得到了个好的解决办法。

之前的想法是,网上普遍再说的,在还原前需要把数据库所在进程杀死,再进行还原,能通过数据库语句把所在进程找出来,但是发现在杀死一次后,之后不能再找出,在使用还原语句还原的时候,还发现数据库被占用。一直无法得到解决办法。网上也没有好的解决办法。所以一直困扰着。

今天偶然在数据库书上看到,可以先把数据库设置为脱机状态,让数据库处于离线状态。再来进行数据库的还原,处于离线,应该就不会再占有了?为了保险我现在SQL上实施了,发现是可行的。

之后便用于数据库的还原上:

首先先执行离线语句:

Alter Database DBNAME Set Offline with Rollback immediate"

之后执行数据库还原语句:

RESTORE DATABASE DBNAME FROM DISK =" + "'" + path + "'" + "WITH REPLACE

最后在执行数据库在线语句:

ALTER DATABASE DBNAME SET ONLINE WITH ROLLBACK IMMEDIATE;

怎么样 ,数据库还原了把?

注意别忘了备份原来的数据库哦,不然就没了。

 

 

在向服务器发送请求时发生传输级错误。   (provider:   共享内存提供程序,   error:   1   -   执行读/写操作期间检测到   I/O   错误

出现该错误的时候,只要使用SqlConnection.ClearAllPools();清理连接池即可。