环境XP+MSDE2000,程序中用BACKUP DATABASE完全备份数据库,不加PASSWORS参数可以,加了就出错,请教高手原因?(只有一台机是这样,其他机没问题,所以不应该是程序原因),SQL语句如下:
BACKUP DATABASE dbname TO disk='c:\1.bak' with init,skip,format(成功)
BACKUP DATABASE dbname TO disk='c:\1.bak' with init,skip,PASSWORD ='123',format(这样就出错)
 
装了sql2000后在查询分析器中执行语句:
BACKUP DATABASE dbname TO disk='c:\1.mdk' with init,skip,PASSWORD ='123',format
返回:
服务器: 消息 3278,级别 16,状态 1,行 1
加密字符串 87(参数不正确。) 失败
服务器: 消息 3013,级别 16,状态 1,行 1
BACKUP DATABASE 操作异常终止。
执行BACKUP DATABASE dbname TO disk='c:\1.mdk' with init,skip,format成功.请教原因及解决办法!

解决方案 »

  1.   

    会不会是你某台机器上的SQLSERVER版本不支持加密?
      

  2.   

    是不是你不同机器上sql版本不一样的?加密数据  另一个选择就是在你把数据存储到你的数据库表中的时候,对数据进行加密。在SQL Server 2000中没有本地的方法来完成,但是有很多工具你可以使用:  针对SQL Server的NetLib Encryptionizer  使用XP_CRYPT加密SQL Server  SQL Server 2005中存在本地加密功能。看看微软的文章<>如何:加密一列数据,那里解释了这个过程。在你加密了数据库中的数据之后,当你创建备份的时候,数据仍然是经过加密的。信息来源:http://www.itxuexi.com/tech/shujuku/sql/598691256882631.html
      

  3.   

    NAME = { backup_set_name| @backup_set_var } 
    指定备份集的名称。名称最长可达 128 个字符。如果未指定 NAME,它将为空。PASSWORD = { password | @password_variable } 
    为备份集设置密码。PASSWORD 是一个字符串。SKIP 
    禁用备份集的过期和名称检查,这些检查一般由 BACKUP 语句执行以防覆盖备份集。FORMAT 
    指定创建新的介质集。FORMAT 将使备份操作在用于备份操作的所有介质卷上写入新的介质标头。卷的现有内容将变为无效,因为覆盖了任何现有的介质标头和备份集。!重要提示  
    使用 FORMAT 要谨慎。格式化介质集的任何一个卷都将使整个介质集不可用。例如,如果初始化现有条带介质集中的单个磁带,则整个介质集都将变得不可用。
    ps:4楼理解错误,可以无视之!
     
      

  4.   

    PASSWORD = { password | @password_variable } 
    为备份集设置密码。PASSWORD 是一个字符串。!重要提示  
    下一版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。
     如果为备份集定义了密码,则必须提供此密码才能对该备份集执行任何的 SQL Server 还原操作。但是,备份集密码不能防止覆盖备份文件。若要防止覆盖备份文件,请改用介质集密码(请参阅此表后面的 MEDIAPASSWORD 选项)。
    个人认为应该是版本和参数不匹配,建议详细阅读:
    http://msdn.microsoft.com/zh-cn/library/ms186865.aspxps:不知道sql有没有密码策略,会不会某机器的密码策略是123不符合的。
      

  5.   

    在服务器安全部署中,密码可能是最薄弱的一个环节。请务必在选择密码时保持高度谨慎。强密码有以下特征:长度至少有 8 个字符。密码中组合使用字母、数字和符号字符。字典中查不到。不是命令名。不是人名。不是用户名。不是计算机名。定期更改。与以前的密码明显不同。MicrosoftSQL Server 密码最多可包含 128 个字符,其中包括字母、符号和数字。由于在 Transact-SQL 语句中经常使用登录名、用户名、角色和密码,所以必须用英文双引号 (") 或方括号 ([ ]) 括起某些符号。如果 SQL Server 登录名、用户、角色或密码具有以下特征,请在 Transact-SQL 语句中使用以下分隔符:含有空格或以空格开头。以 $ 或 @ 字符开头。
      

  6.   

    msde也需要打补丁的 版本有问题的
      

  7.   

    所有机器上用的是同一版本的sqlserver.
      

  8.   

    所有机器上用的是同一版本的sqlserver.能告诉我哪个版本的sqlserver是不支持加密的?