SQL Server 2005 BCP xml数据错误无效对象名称临时表

时间:2014-04-11 09:35:45

标签: sql sql-server xml bcp

我正在使用SQL Server 2005 SP4。我有一个存储过程,它从许多表中获取数据并将其转换为XML,然后将此XML数据发送到存储过程的输出变量。

现在我想将这个XML数据加载到具有特定位置的文件系统中的文件;为此我使用BCP实用程序和以下命令:

BCP "exec master.[dbo].[SPFileCreationInstanceOnlyXML]" QUERYOUT "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\PerformanceAnalyticsXML\LEOSQL2K5Apr112014128PM.xml" -c -t -T -SLEO\SQL2K5

现在,当我尝试从命令提示符执行时,此命令会给我一条错误消息。

  

SQLState = S0002,NativeError = 208
  错误= [Microsoft] [SQL Native Client] [SQL Server]无效的对象名称' ## traceinfo'。

我无法弄清楚为什么它是对临时表的引用。我从BCP执行的存储过程代码如下所示

ALTER procedure [dbo].[SPFileCreationInstanceOnlyXML]
as 
begin
    DECLARE @Result XML
    exec [dbo].[BCPTableLineXML] @Result OUT

    SELECT @Result AS FinalOutput
end

关于这一点最有趣的事情我在SQL Server 2008 R2上有相同的存储过程,就像其他服务器中的一个魅力一样只有这一个与SQL Server 2005一起给我这个错误信息。

BCPTabelineXML的代码如下 BCPTableXML中的代码如下。

ALTER  procedure [dbo].[BCPPerformanceBaseLineXML]
@ALLRet xml OUTPUT

as 
begin
DECLARE @ALL xml

--SQL Server Version and Server Name
DECLARE @SQLTraceFlag NVARCHAR(MAX)

create table ##traceinfo(flag varchar(20),Status varchar(10),Global varchar(10),Session varchar(10))

INSERT INTO ##traceinfo EXECUTE ('DBCC TRACESTATUS(-1)')

--select * from ##traceinfo

SET @SQLTraceFlag =
(
select * from
(
select * from ##traceinfo
) as SQLTraceFlag
for xml auto

);
--select @SQLTraceFlag
drop table ##traceinfo
set  @ALL = CONVERT(XML
ISNULL(@SQLTraceFlag,'')) 


set @ALLRet=@ALL;

end

提前感谢您的帮助和宝贵的时间。

干杯, NIC

1 个答案:

答案 0 :(得分:1)

使用表变量而不是临时表来解决问题。 -