2014-04-11 4 views
0

SQL Server 2005 SP4를 사용하고 있습니다. 많은 테이블에서 데이터를 가져 와서 XML로 변환 한 다음이 XML 데이터를 저장 프로 시저의 출력 변수로 보내는 저장 프로 시저가 있습니다.SQL Server 2005 BCP 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
오류 = [마이크로 소프트] [SQL 네이티브 클라이언트] [SQL 서버] 잘못된 개체 이름 '## traceinfo'.

임시 테이블을 참조하는 이유를 파악할 수 없습니다. 내가 BCP에서 실행하고 저장 프로 시저에 대한 내 코드는 이것에 대해

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

    SELECT @Result AS FinalOutput 
end 

가장 흥미로운 것은 다음과 같습니다 동안 나는 다른 서버에만이 하나의 매력처럼 작동 SQL 서버 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 @[email protected]; 

end 

도움과 귀중한 시간을 미리 보내 주셔서 감사합니다.

건배 닉

+0

그럼 'BCPTableLineXML'절차는 무엇입니까? – podiluska

+0

임시 테이블 대신 테이블 변수를 사용하여 문제가 해결되었습니다. –

답변

0

문제가 테이블 변수 대신 임시 테이블을 이용하여 해결된다. -