BCP

exec master..xp_cmdshell '  bcp "数据库..表"  out  "路径" -c -S服务器 -Usa  -P1'用c#调用存储过程实现。当“路径”很短如d:text.txt时能将数据导出。但当路径很长如“d:\testtesttesttesttesttest\test\text.txt”时,不能导出数据,但并没有产生异常。
同时在sqlserver中能正常执行。???????????????????????????????????????????????

解决方案 »

  1.   


    那个是系统存储过程好吧,楼主是在执行SQL SERVER代理任务,不存在长度不够的说法。
      

  2.   

    语法
    xp_cmdshell { 'command_string' } [ , no_output ]
    参数
    ' command_string ' 
    包含要传递到操作系统的命令的字符串。command_string 的数据类型为 varchar(8000) 或 nvarchar(4000),无默认值。command_string 不能包含一对以上的双引号。如果 command_string 中引用的文件路径或程序名中存在空格,则需要使用一对引号。如果不方便使用内含的空格,则可考虑使用 FAT 8.3 文件名作为解决方法。no_output 
    可选参数,指定不应向客户端返回任何输出。
    从这里可以看出,楼主是包含的双引号无效造成的,如果不加引号,则路径名必须使用FAT 8.3形式命名。
      

  3.   

    是不是反斜线问题?C#中要这样表示:@"d:\testtesttesttesttesttest\test\text.txt"
    或:
    "d:\\testtesttesttesttesttest\\test\\text.txt"