Sql bcp赢得';输出温度表
我有一个在临时表中存储值的存储过程 这一切都很好,但我不能用bcpSql bcp赢得';输出温度表,sql,bcp,Sql,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) 错误消息
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)
错误消息是无效对象#提取器
谢谢 我几天前才偶然发现这一点 我从这个链接中学到: 它不会看到temp表,因为它们在tempdb数据库中,而不是您正在使用的数据库中 此外,我还通过将本地临时表替换为全局临时表(用一个简单的替换来代替,这对我很有帮助) 正如@Kevin在评论中提到的,您也可以出于同样的目的使用表变量
希望这对您有用。您在查询中是否尝试过像这样引用temp表:
tempdb..#extractor
例如:
SELECT
*
INTO tempdb..#Extractr
FROM
TABLE A
WHERE ID in (4,9,14)
使用表变量而不是临时表帮助我解决了这个问题
DECLARE @tbl1 TABLE
(fld1 int,...)
INSERT INTO @tbl1
SELECT * FROM Table1
另一种方法是使用这个“bug”也会影响我。存储的proc存储的中间层在选择它们之前会生成一个临时表,它不适用于BCP。将其更改为表变量是可行的(尽管表变量也有自己的问题--)。全局临时表也可以,但您可能会遇到并发问题。选择它们也可以,这只是BCP部分。我已尝试将bcp更新为使用“tempdb..#extractor”,但无效:
Warning=[Microsoft][SQL Server Native Client 10.0][SQL Server]数据库名称“tempdb”被忽略,引用了tempdb中的对象代码>