Sqldemo备份与恢复路径不支持空格
作者:jenry
在程序执行中,通过“事件查看器”,“应用程序日志”,可能看到以下错误:
我的数据备份路径是“C:\Program Files\中国亿万电器网\中国亿万电器成套报价系统\Data\Bak\Data20051021171145.bak”。
1、3041:
BACKUP 未能完成命令 BACKUP DATABASE [ItemSoft] TO DISK = N'C:\Program', DISK = N'Files\e10000\ItemSoft\Data\Bak\Data20051021171145.bak' WITH INIT , NOUNLOAD , NOSKIP , STATS = 1, NOFORMAT
2、18204:
BackupDiskFile::CreateMedia: 备份设备“C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\Files\e10000\ItemSoft\Data\Bak\Data20051021171145.bak”create 失败。操作系统错误 = 3(系统找不到指定的路径。)
当然你可以捕获程序异常来获得错误信息,由于我的程序已经修改过了,所以也就不写这一步了。
通过以上的错误你可以很明显地知道是备份的数据文件找不到,这就感到很奇怪了,明明路径是正确的,为什么会发生这样的事情呢?
由第二条错误信息可以告诉我们其实,真正的数据文件路径变成了“C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\Files\e10000\ItemSoft\Data\Bak\Data20051021171145.bak”,而不是原来的“C:\Program Files\中国亿万电器网\中国亿万电器成套报价系统\Data\Bak\Data20051021171145.bak”。
怎么造成这样?经过分析而是备份设备文件中或路径中存在有空格。上面的路径中“C:\Program Files\”有一个空格,结果构sqldemo组件提供的方法在执行提交是,将“BACKUP DATABASE”方法翻译成了第一条错误信息中的路径了。因此造成了数据备份与恢复失败。
为了证明是sql server 的错误还是sqldemo的错误,查看sql server的联机帮助,找到了备份数据的命令,发现命令是支持带有空格路径的,如下所示:
备份整个 MyNwind 数据库说明,下例创建用于存放 MyNwind 数据库完整备份的逻辑备份设备。
-- Create a logical backup device for the full MyNwind backup.
USE master
EXEC sp_addumpdevice 'disk', 'MyNwind_1',
DISK ='c:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\MyNwind_1.dat'
-- Back up the full MyNwind database.
BACKUP DATABASE MyNwind TO MyNwind_1
由此可以推断出,sqldemo在提供数据备份与恢复方法中是不支持带有空格路径的。上述是我个人遇到的情况,如有不正确的地方,希望大家能够提出更正。