当前位置: 代码迷 >> PB >> sqlserver 2005 express 脚本执行器 中 restore 语句中不能访问文件有关问题
  详细解决方案

sqlserver 2005 express 脚本执行器 中 restore 语句中不能访问文件有关问题

热度:106   发布时间:2016-04-29 09:49:47.0
sqlserver 2005 express 脚本执行器 中 restore 语句中不能访问文件问题
我制作的一个安装程序,其中执行过程把一个数据库备份文件放在 C盘一个临时目录下,然后使用 函数执行 restore 语句创建数据库。通过调试,发现下面的语句 

RESTORE FILELISTONLY FROM DISK ='C:\Users\star\AppData\Local\Temp\{AE572A70-F1C5-4D66-A6CD-72442D8BD9FA}\{53DC0509-AF7D-4454-AADD-0E1CDFF339E7}\mydb.bak'

执行失败。
----------------------------------------------------------------------
我把这个拷贝在sql server studio 中执行,发现错误依旧。错误提示为:

消息 3201,级别 16,状态 2,第 18 行
无法打开备份设备 'C:\Users\star\AppData\Local\Temp\{AE572A70-F1C5-4D66-A6CD-72442D8BD9FA}\{53DC0509-AF7D-4454-AADD-0E1CDFF339E7}\mydb.bak'。出现操作系统错误 5(拒绝访问。)。
消息 3013,级别 16,状态 1,第 18 行
RESTORE FILELIST 正在异常终止。


而我把mydb.bak文件拷贝到 'e:\'下,修改上述语句目录位置,执行是成功的。


为什么会这样呢?我的sql 2005 expresss studio 版本是 9.00.2047.00



------解决方案--------------------
这就说明你还原时,指定的物理文件不存在,建议不要写死,而是用物理文件存在的目录作为变量,然后在程序中动态执行之.
  相关解决方案