string strConn = @"Data Source=.\sqlexpress;Integrated Security=True;Initial Catalog=Gonglu_huaren;" +
                @"AttachDbFilename=D:\FangLie_GongLu_VS2005_huaren\JYG.Data\GongLu_huaren.mdf";
            //string strConn = @"Data Source=.\sqlexpress;uid=sa;pwd=1234mohu;Initial Catalog=Gonglu_huaren;" +
            //    @"AttachDbFilename=D:\FangLie_GongLu_VS2005_huaren\JYG.Data\GongLu_huaren.mdf";
            SqlConnection conn = new SqlConnection(strConn);
            conn.Open();
            conn.Close();大家看上面连接数据库的代码,我要在连接数据库的时候把数据库附加上去。
无注释的那行是没有指定帐号密码的,能成功附加。
注释掉的那行是使用帐号密码附加的,会抛出异常“无法打开物理文件 。操作系统错误 5:"5(拒绝访问。)"。
无法将文件 。。 作为数据库 'Gonglu_huaren'. 附加。”谁能解释一下这是为什么?怎么解决呢?

解决方案 »

  1.   

    因为你的没注释的是像连接ACCESS一样连接进去并非过用SQL SERVER连接的,
    第二种你是像通过SQL SEVER连接,当然不成功了,因为数据库可能根本没加进SERVER,只是个单机
      

  2.   

    把Initial Catalog=Gonglu_huaren;删除掉...加上就不是附加而是mirroring了,第一次附加后就不能再附加了...
      

  3.   

    附加数据库不支持非集成验证登录,即Integrated Security必须True...因为必须操作磁盘文件,集成验证可以减少安全隐患...
      

  4.   

    你执行sql的付加数据sql语句就行了这是从网上找的1.进行完整恢复
    企业管理器--右键"数据库"--所有任务--还原数据库
        --"还原为数据库库"中输入还原后的数据库名,设为:test
        --还原选择"从设备"--选择设备--添加--添加你的备份文件
        --确定,回到数据库还原的界面
        --"还原备份集",选择"数据库--完全"
        --选项--将"移至物理文件名"中的物理文件名修改为你的数据文件要存放的文件名
        --如果要还原的数据库已经存在,选择"在现有数据库上强制还原"
        --"恢复完成状态",选择"使数据库不再运行,但能还原其它事务日志"
        --确定--或用SQL语句:
    restore database 数据库 from disk='c:\你的完全备份文件名' with norecovery
    2.进行差异恢复
    企业管理器--右键"数据库"--所有任务--还原数据库
        --"还原为数据库库"中选择数据库名:test
        --还原选择"从设备"--选择设备--添加--添加你的备份文件
        --确定,回到数据库还原的界面
        --"还原备份集",选择"数据库--差异"
        --"恢复完成状态",选择"使数据库不再运行,但能还原其它事务日志"
        --确定--或用SQL语句:
    restore database 数据库 from disk='c:\你的差异备份文件名' with norecovery
    3.进行日志恢复
    企业管理器--右键"数据库"--所有任务--还原数据库
        --"还原为数据库库"中选择数据库名:test
        --还原选择"从设备"--选择设备--添加--添加你的备份文件
        --确定,回到数据库还原的界面
        --"还原备份集",选择"事务日志"
        --"恢复完成状态",选择"使数据库可以继续运行,但无法还原其它事务日志"
        --确定--或用SQL语句:
    restore log 数据库 from disk='c:\你的日志备份文件名' with recovery解决还原数据库目录不对的详细步骤:1.企业管理器中的方法:
        --右键"数据库"
        --所有任务
        --还原数据库
        --"还原为数据库库"中输入还原后的数据库名
        --还原选择"从设备"--选择设备--添加--添加你的备份文件--确定,回到数据库还原的界面
        --备份号--选择内容--选择你要恢复那次备份的内容
        --选项--将"移至物理文件名"中的物理文件名修改为你的数据文件要存放的文件名
        --如果要还原的数据库已经存在,选择"在现有数据库上强制还原"-
        -确定
    2.用SQL语句的方法(假设你的备份文件名为: c:\xx.bak--列出备份文件中的逻辑文件名
    restore filelistonly from disk='c:\xx.bak'
    --用语句恢复,根据上面列出的逻辑文件名使用move选项
    restore database 恢复后的数据库名
    from disk='c:\xx.bak'
    with move '逻辑数据文件名1' to 'c:\物理数据文件名1'
        ,move '逻辑数据文件名2' to 'c:\物理数据文件名2'
    ...
        ,move '逻辑数据文件名n' to 'c:\物理数据文件名n'
      

  5.   

    恢复的时候你先连接上master数据库 执行SQL语句就行了