Sqldemo备份与恢复路径不支持空格

Sqldemo备份与恢复路径不支持空格
                        作者:jenry

     今天在调试程序中,偶尔发现了Sqldemo组件在备份与恢复数据库,在备份与恢复数据的方法中文件路径中不支持空格的现象。
在程序执行中,通过“事件查看器”,“应用程序日志”,可能看到以下错误:
我的数据备份路径是“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在提供数据备份与恢复方法中是不支持带有空格路径的。上述是我个人遇到的情况,如有不正确的地方,希望大家能够提出更正。


 

原文地址:https://www.cnblogs.com/jenry/p/259999.html