2014-09-10 5 views
4

У меня есть хранимая процедура, которая хранит значения в временных таблицах.bcp не будет выводить временные таблицы

Это все работает хорошо, но я не могу BCP его

exec master..xp_cmdshell 'bcp "exec sp_test '2006-07-21' " queryout c:\test.txt -c ' 

Если изменить таблицу регулярного, то все работает. Можете ли вы не использовать временные таблицы таким образом?

Я не обязательно хочу поделиться код, поскольку он содержит материал компании, но в основном, как это сообщение

SELECT 
* 
INTO #Extractr 
FROM 
TABLE A 
WHERE ID in (4,9,14) 

Погрешность составляет invalid object #Extractr

Спасибо!

ответ

4

Я только что наткнулся на это несколько дней назад.

Что я узнал из этой ссылки:

http://www.dbforums.com/microsoft-sql-server/1605565-can-we-have-temporary-table-store-procedure-when-using-bcp.html

, что он не будет видеть временные таблицы, как они будут в TempDb базы данных не один вы используете ,

Кроме того, я получил свою работу, заменив локальные таблицы временных таблиц на глобальные (## вместо # с простой заменой помог мне).

Как пояснил @Kevin в комментариях, вы можете использовать табличные переменные для этой же цели.

Надеюсь, что это сработает для вас.

+1

Альтернативой является использование [переменных таблицы] (http://msdn.microsoft.com/en-us/library/ms175010 (v = sql.105) .aspx) –

+0

Отличная идея @KevinHogg спасибо! –

+0

Спасибо, это работает – cupholdR

1

Вы пробовали ссылки на временную таблице, как это в вашем запросе: tempdb..#Extractr Например:

SELECT 
* 
INTO tempdb..#Extractr 
FROM 
TABLE A 
WHERE ID in (4,9,14) 
+0

Выбор в них отлично работает, это только часть BCP. Я попытался обновить bcp, чтобы использовать «tempdb .. # Extractr», но это не сработало: '' '' Warning = [Microsoft] [Собственный клиент SQL Server 10.0] [SQL Server] Имя базы данных «tempdb» игнорируется, ссылаясь объект в tempdb. '' '' ' – cupholdR

0

Использования таблицы переменных вместо временных таблицы помогла мне понять это.

DECLARE @tbl1 TABLE 
(fld1 int,...) 

INSERT INTO @tbl1 
SELECT * FROM Table1 
Смежные вопросы