BCP错误 - SQLState 3700,本机错误= 102

时间:2014-04-02 16:09:57

标签: sql-server bcp xp-cmdshell

这是我的BCPCommand,其余的查询都经过测试并且工作正常,我也在BCP查询中测试了结果并且也是有序的

DECLARE @OutputFile VARCHAR(100) ,    
        @FilePath VARCHAR(100) ,    
        @bcpCommand VARCHAR(1000)

SET @bcpCommand = 'bcp "exec [dbo].[spRMAReturnBatchRecords] @strBatchNo = ' + @strBatchNo + 
                  ' , @dtBatchDate = ''' + CONVERT(VARchar(10),@dtBatchDate,120) +
                  ''' , @intBatchNo = ' + CONVERT(varchar(5),@intNextBatchNo) + '" queryout '

SET @FilePath = 'E:\RMA\Test\'
SET @OutputFile = 'RMA-' + @strBatchNo +'.txt'
--SET @bcpCommand = @bcpCommand + @FilePath + @OutputFile + ' -S'+ @@servername + ' -T -c'
SET @bcpCommand = @bcpCommand + @FilePath + @OutputFile + ' -c -T -S ' + @@SERVERNAME
exec master..xp_cmdshell @bcpCommand    
--TEST COMMAND      
--print @bcpCommand
--TEST OUTPUT                     
--exec spRMAReturnBatchRecords @strBatchNo, @dtBatchDate, @intNextBatchNo

我目前收到的错误如下:

Starting copy...
SQLState = 37000, NativeError = 2812
Error = [Microsoft][SQL Server Native Client 11.0][SQL Server]Could not find stored procedure 'spRMAReturnBatchRecords'.
SQLState = S1000, NativeError = 0
Error = [Microsoft][SQL Server Native Client 11.0]Unable to resolve column level collations
BCP copy out failed

当我打印我的Cmd时,它的内容如下:

bcp "exec [dbo].[spRMAReturnBatchRecords] @strBatchNo = SN001 , @dtBatchDate = '2014-04-02' , @intBatchNo = 1" queryout E:\RMA\Test\RMA-SN001.txt -c -T -S [omitted but correct]

然后我将所有内容粘贴到"双引号"使用当前连接进入新查询并执行没有问题。

exec [spRMAReturnBatchRecords] @strBatchNo = SN006 , @dtBatchDate = '2014-04-02' , @intBatchNo = 6

请协助。

2 个答案:

答案 0 :(得分:1)

尝试将数据库的名称添加到查询中:[MyDatabase].[dbo].[spRMAReturnBatchRecords]

根据您期望的输出类型,您可能必须指定分隔符(如果它以逗号分隔)(使用-t ^或您喜欢的任何分隔符。)

答案 1 :(得分:0)

您也可以在源SQL中执行此操作:

switch (field) {
  case "item"
    if (!initializing)
      itemCount = raw_document.item.length;
      break;
  default:
}

然后你不必在声明中添加资格。