我正在尝试使用连接来自多个表的多个值的查询来创建平面文本文件。这个结果集被插入到一个表变量中,我想在xp_cmdshell调用中使用它来创建文本文件。这是我的代码示例。
DECLARE @tablevar table (string nvarchar(200))
INSERT INTO @tablevar
SELECT 'test' + column1 + column2
FROM SampleTable
EXEC xp_cmdshell 'bcp "SELECT * FROM @tablevar" queryout "C:\temp\output.txt" -T -c '
当我进行xp_cmdshell调用时出现以下错误:
SQLState = 42000,NativeError = 1087 错误= [Microsoft] [SQL Native Client] [SQL Server]必须声明表变量“@outputtable”。 SQLState = 42000,NativeError = 8180 错误= [Microsoft] [SQL Native Client] [SQL Server]语句无法准备。 NULL
尝试使用临时表时,请使用此代码
EXEC xp_cmdshell 'bcp "Select * From #temp" queryout "C:\temp\outputtable.txt" -T -c '
我收到此错误消息
SQLState = 42S02,NativeError = 208 错误= [Microsoft] [SQL Native Client] [SQL Server]无效的对象名称'tempdb.temp'。 SQLState = 42000,NativeError = 8180 错误= [Microsoft] [SQL Native Client] [SQL Server]语句无法准备。
使用临时表或表变量与xp_cmdshell是不可能的吗?
答案 0 :(得分:2)
您的@table
变量和#temp
表都超出了其他连接的范围,但##my_global_temp
等全局临时表应该有效。