数据库还原

来源:互联网 发布:潍坊行知学校 编辑:程序博客网 时间:2024/04/29 19:14

在做饭店收银系统时,还原有时成功,有时不成功.

后来做测试为:

C,服务器,名字.(c,d为放在c盘还是d盘).(名字为备份时为原数据库名字还是修改为其他名字.例如,数据库名为Student,备份不修改为Student.bak,修改就可以为任何,如aa.bak等)
c,不改名字,不开服务器 :成功.
d,不改名字,不开服务器  :成功.
c,改名字,开服务器 :@DataBase' 附近有语法错误
d,改名字,开服务器:@DataBase' 附近有语法错误
c,不改名字,开服务器 :因为数据库正在使用,所以无法获得对数据库的独占访问权。
RESTORE DATABASE 正在异常终止。
已将数据库上下文更改为 'master'。
d,不改名字,开服务器.:成功.
c,改名字,不开服务器 :'@DataBase' 附近有语法错误
d,改名字,不开服务器:'@DataBase' 附近有语法错误。



结果:与开不开服务器没有关系.与放在C盘或者d盘也没有关系.

与是否修改名字有关系,与数据库是否正在使用有关系.


"因为数据库正在使用,所以无法获得对数据库的独占访问权。" :原因:数据库正在被使用.

解决方案:在配置文件的connectionString中添加:trust_connection=no.来解决的独占访问问题.

"@DabaBase'附近有语法错误" :原因:一旦改动数据库备份的名字,我们的代码逻辑上为:先获得这个数据库的名称,然后查询是否有此数据库,如果有,则还原,如果没有,先创建再还原.所以就有了问题.

解决方案:首先获得了数据库的逻辑名称,然后对数据库进行还原.就可以解决此问题了.


感悟:一个问题,不单单只有一个解决方案,会有很多解决方案,当我们遇到一个问题的时候,不是一味的着急去找答案,而是要学会去分析.