Ошибка BCP - SQLState 3700, собственная ошибка = 102
Вот мой BCPCommand, остальная часть запроса протестирована и работает нормально, я также проверил результаты в BCP Query и также в порядке
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 ответа
Попробуйте добавить имя базы данных в запрос: [MyDatabase].[dbo].[spRMAReturnBatchRecords]
,
В зависимости от ожидаемого вида вывода вам может потребоваться указать разделитель, если он разделен запятой (используйте -t ^
или любой другой разделитель, который вам нравится).
Вы также можете сделать это в вашем исходном SQL:
Use DatabaseName
Select column1 from Table1
Тогда вам не нужно добавлять квалификацию в самом утверждении.