EXEC MASTER..XP_CMDSHELL 'BCP db.dbo.Test OUT D:\Test.csv -c -SServerName -Usa -P'如果服务器就在本地的话,那么导出的文件就在我的电脑中D盘下,
可是,现在服务器不在本地,文件被导出到服务器所在机器的D盘下了。
我怎么才能实现文件导出到本地啊。虽然可以用DTS或者批处理实现,但是现在要求在存储过程中实现。谢谢。

解决方案 »

  1.   

    master..xp_cmdshell 'net share test=e:\test'
    master..xp_cmdshell 'net use  \\david\test 123 /user:domain\zf'
    EXEC MASTER..XP_CMDSHELL 'BCP db.dbo.Test OUT \\david\test\Test.csv -c -SServerName -Usa -P'
      

  2.   

    关于NET命令的用法,楼主可以参考下NET的帮助
      

  3.   

    现在我做成了批处理,把 BCP db.dbo.Test OUT D:\Test.csv -c -SServerName -Usa -P
    写进bcp.bat 中
    直接运行,成功!但是在查询分析器中实行 EXEC  MASTER..XP_CMDSHELL 'D:\CSV\cmd.bat'
    时出现错误。
    错误信息是:SQLState = 08001, NativeError = 17
    Error = [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server が存在しないか、アクセスが拒否されました。
    SQLState = 01000, NativeError = 5
    Warning = [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).
    NULL请高手解答,谢谢!
      

  4.   

    查询分析器中运行的 EXEC  MASTER..XP_CMDSHELL 'D:\CSV\cmd.bat' 其实是运行sql server所在的机器的'D:\CSV\cmd.bat' 的这个路径下,因为是远程的,当然找不到了。你可以先在本地共享,然后看路径设置成为在远程服务器能访问到的'D:\CSV\cmd.bat' 的文件的远程路径就可以了
    不过这样速度可能降低很多。
      

  5.   

    我是在本地服务器上测试的。如果把BCP中的Server换一个的话,就可以运行。
    应该问题出在原来的Server的设置上,但是是什么设置呢。请指教。