我现在要做个数据库程序,要求把服务器上的数据库复制到本地,也就相当于远程备份数据库。
听人说要先在服务器备份在考到本机上来
可在执行备份时出现如下错误
//代码
 string ConnectionString = "server=ibm;uid=sa;pwd=sa;database=cs";
            SqlConnection sqlConct = new SqlConnection(ConnectionString);
            sqlConct.Open();
            SqlCommand sqlCommand = new SqlCommand();
            sqlCommand.Connection = sqlConct;
            sqlCommand.CommandText = "backup database cs to disk='D:\bs.bak' with init";
           int a=sqlCommand.ExecuteNonQuery();
//错误
无法打开备份设备 'D:\bs.bak'。设备出现错误或设备脱机。详细信息请参阅 SQL Server 错误日志。
BACKUP DATABASE 操作异常终止。
就算备份成功那么怎么才能下载到本地呢?

解决方案 »

  1.   

    先暂停SQL服务,然后直接拷贝数据库文件吧!
      

  2.   

    远程备份时 先要建立逻辑设备
    exec sp_addumpdevice 'disk','test','E:\test.bak'backup DataBase cs to test--test是逻辑设备名称,  test.bak就是备份文件了
      

  3.   

    数据库现在是备份成功了,就是服务器的'D:\bs.bak' 文件,那么我怎么把它弄到我本地来呀
      

  4.   

    操作权限,路径
    压缩下载文件,实现输出
    使用程序目录
    ftpwebrequest下载
      

  5.   


    exec xp_cmdshell 'COPY D:\bs.bak C:\Inetpub\wwwroot\web1\bs.zip' 下载
      

  6.   

               //以上假定服务器IP为192.168.0.1,服务器上有IIS,C:\Inetpub\wwwroot\downloads下的文件可被下载            SqlCommand cmd = new SqlCommand();
                cmd.Connection = sqlConct;
                cmd.CommandText = @"exec xp_cmdshell 'COPY D:\bs.bak C:\Inetpub\wwwroot\downloads\bs.zip' ";
                cmd.ExecuteNonQuery();            System.Net.WebClient webClient = new System.Net.WebClient();
                webClient.DownloadFile("http://192.168.0.1/downloads/bs.zip", @"C:\bs.bak");
      

  7.   

    可他总提示未能找到存储过程 'xp_cmdshell'。
      

  8.   

    还有就是你后边的C:\Inetpub\wwwroot\downloads\bs.zip' ";
    是什么意思
      

  9.   

    通过ftp
    或者自己写个C/S 文件传输程序
      

  10.   


    你应该连接master库
    C:\Inetpub\wwwroot\downloads\bs.zip
    是把文件复制到一个可通过IIS访问的位置另外如果你不能控制这个服务器(没有管这个服务器的权利),还是算了吧,一般安全性高点的数据库服务器,管理员都是禁用'xp_cmdshell'的,因为xp_cmdshell配合SQL注入攻击,可以很容易的取得服务器的控制权
      

  11.   

    数据库连接字符串中必须要与 master 数据库连接,你调用的 xp_cmdshell 是系统存储过程,这个过程在用户数据库中是没有的。
      

  12.   

    这里的DownloadFile是不是Ftp的,我到这里报404错误,说没找到。我做的是windows程序
      

  13.   

    不是Ftp,是HTTP
    你必须在服务器上的wwwroot中建downloads这个目录,然后给这个目录添加Internet用户读取的权限
      

  14.   

    那我成了教你如何攻击服务器了如果你对WINDOWS命令行(特别是NET命令)比较熟的话,
    你可以打开SQL 查询分析器,在里面执行 exec xp_CmdShell '命令行,参数'
    和你在CMD中执行的方法一样.
    比如:
    USE Master
    exec xp_cmdShell 'ipconfig/all>>c:\r.txt'
    exec xp_CmdShell 'type c:\r.txt'
    GO具体的命令,你去查相关文档吧,太多,列举不清.......