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
도움과 귀중한 시간을 미리 보내 주셔서 감사합니다.
건배 닉
그럼 'BCPTableLineXML'절차는 무엇입니까? – podiluska
임시 테이블 대신 테이블 변수를 사용하여 문제가 해결되었습니다. –