还原数据库失败,尝试 'RestoreContainer::ValidateTargetForCreation' 时,操作系统返回了错误 '5(拒绝访问。)'

1、用打包软件Setup Factory安装软件时,执行bat文件还原数据库出错

bat文件:

@echo off
rem %1 为路径参数;
rem %2 数据库实例名;
rem %3 用户名;
rem %4 密码;
rem /q 执行查询完毕不退出cmd,/Q执行查询完毕退出cmd,-i:Input_File:要在osql中执行的T-SQL脚本的名称(包括路径)。
echo 正在启动SQL SERVER服务...
net start mssqlserver


echo 正在创建数据库,请稍等...

osql -S %2 -U %3 -P %4 /Q 
"IF Not Exists (SELECT name FROM master.dbo.sysdatabases WHERE name = N'AlarmDB') RESTORE DATABASE AlarmDB FROM DISK ='%1\Data\AlarmDB.bak' WITH MOVE 'AlarmDB' TO '%1\Data\AlarmDB.mdf',MOVE 'AlarmDB_log' TO '%1\Data\AlarmDB.ldf'"

echo 数据库创建结束!

osql -S %2 -U %3 -P %4 -i %1\升级sql语句.sql

echo 数据库更新成功!


pause

其中还原数据库的语句实际如下:

IF Not Exists (SELECT name FROM master.dbo.sysdatabases WHERE name = N'AlarmDB') 
RESTORE DATABASE AlarmDB FROM DISK ='C:\Program Files\My\服务器\Data\AlarmDB.bak' 
WITH MOVE 'AlarmDB' TO 'C:\Program Files\My\服务器\Data\AlarmDB.mdf',
MOVE 'AlarmDB_log' TO 'C:\Program Files\My\服务器\Data\AlarmDB.ldf'


执行时出错:

消息 3634,级别 16,状态 1,第 3 行

在对 'C:\Program Files\My\服务器\Data\AlarmDB.mdf' 尝试 'RestoreContainer::ValidateTargetForCreation' 时,操作系统返回了错误 '5(拒绝访问。)'。
消息 3156,级别 16,状态 5,第 3 行
文件 'AlarmDB' 无法还原为 'C:\Program Files\My\服务器\Data\AlarmDB.mdf'。请使用 WITH MOVE 选项来标识该文件的有效位置。
消息 3634,级别 16,状态 1,第 3 行
在对 'C:\Program Files\My\服务器\Data\AlarmDB.ldf' 尝试 'RestoreContainer::ValidateTargetForCreation' 时,操作系统返回了错误 '5(拒绝访问。)'。
消息 3156,级别 16,状态 5,第 3 行
文件 'AlarmDB_log' 无法还原为 'C:\Program Files\My\服务器\Data\AlarmDB.ldf'。请使用 WITH MOVE 选项来标识该文件的有效位置。
消息 3119,级别 16,状态 1,第 3 行
在计划 RESTORE 语句时发现了问题。以前的消息提供了详细信息。
消息 3013,级别 16,状态 1,第 3 行
RESTORE DATABASE 正在异常终止。


2、原因:安装目录 'C:\Program Files\My\服务器\Data‘的Data文件夹权限不够,是只读的,不能写入。


3、解决办法:

方法一:
更换安装路径,不安装在C:\Program Files\My\服务器\Data\,安装在C:\My\服务器\Data\
打包软件中也可以设置为C:\My\%ProductName%,或者D:\My\%ProductName%


方法二:
更改文件夹权限:(win7系统)


 







4、完成第三步后执行结果如下:

已为数据库 'AlarmDB',文件 'AlarmDB' (位于文件 1 上)处理了 176 页。
已为数据库 'AlarmDB',文件 'AlarmDB_log' (位于文件 1 上)处理了 2 页。
RESTORE DATABASE 成功处理了 178 页,花费 0.036 秒(38.574 MB/秒)。



...

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值