SQL还原数据库

数据库的恢复比备份复杂得多.数据库的备份使用:

backup database 数据库名 to disk='绝对地址'
而还原数据库使用:

restore database 数据库名 from disk='备份绝对地址'
就未必了.还原数据库时,数据库不能处在运行状态,否则会报错:"因为数据库正在使用,所以未能获得对数据库的排它访问权"
在网上找了些资料,很两三种方法可以解决,就选了最简单的一种.就是断开数据库就可以了
以下语句就是断开数据库的语句:

alter database [dbname] set Offline with ROLLBACK IMMEDIATE
但是使用之后,还是会报错:
"用户必须在 master 数据库中。"
于是还得去连接master
就想着使用:
alter database [master] set online with rollback immediate
没有想到会报错:" 无法在数据库 'MASTER' 中设置选项 'ONLINE'"
郁闷啊.使用普通的数据库用:

alter database [master] set online with rollback immediate
是可以的.
上网认真再看一遍,有人使用的是:
use master ALTER DATABASE [dababasename] SET OFFLINE WITH ROLLBACK IMMEDIATE
原来用个use master就可以了.
下面是我的代码:
string path = HttpContext.Current.Server.MapPath("../backup/"+name);
string sql = @"use master alter database commonwebsite set Offline with ROLLBACK IMMEDIATE;
restore database commonwebsite from disk='" + path + "';";
其实,网上的内容是还有一句:

alter database [databasename] set online with rollback immediate
用来连回数据库,其实,多此一举,你网站一运行它就连上了.所以我就没有加这一句了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值