2010-03-05 2 views
2

SQL 쿼리를 사용하여 SQL Server 2008 인스턴스에서 데이터를 가져 오려고하는 SQL Server 2005 인스턴스가 있습니다. 2008 경영 스튜디오 및 가져 오기/내보내기 데이터 마법사를 사용하고 있습니다.다른 서버의 쿼리를 사용하는 SQL Server 데이터 가져 오기 마법사

관리 스튜디오에서 별도로 선택 쿼리를 실행하면 올바르게 ~ 88k 행이 반환됩니다. 이 쿼리는 대상 테이블에 필요한 정확한 열 이름과 유형을 가진 데이터를 반환합니다.

가져 오기 마법사를 실행하면 SQL 쿼리가 올바르게 구문 분석되고 '미리보기'버튼에 데이터가 올바르게 표시됩니다. 변환 섹션에는 오류나 경고가 없습니다. 변환에 실패하면 작업이 실패로 설정됩니다.

작업을 실행할 때 오류가 표시되지 않습니다. 그러나 '0 행이 전송되었습니다'라는 메시지가 표시되고 데이터를 가져올 수 없습니다.

왜 그런가?

편집 : 새로 생성 된 새 db에서 가져온 테이블에서 가져 오기를 시도했지만 여전히 동일한 결과가 나타납니다. 나는 2008 년에서 2005 년까지의 움직임의 방향이 중요한지 (예 : 2005 년이 올바르게 2008 년 피드를 처리 할 수 ​​없는지) 궁금합니다.

답변

2

"USE [database]"를 쿼리의 일부로 사용하는 경우이 단일 행은 가져 오기/내보내기 중에 실행되는 모든 행입니다.

해결 방법은 쿼리의 일부로 "USE"문을 제거하는 것입니다.

+1

나는 이것이 문제라고 생각한다. - 고마워! – meepmeep

1

2005/8에 SQL 서버 관리 스튜디오의 가져 오기 기능을 사용해 본 적이별로 없습니다.

최근에 두 가지 중 하나를 수행합니다.

그냥 데이터를 대상 서버의 새로운 테이블 (정확히 동일한 구조의 테이블이 아님)로 가져온 다음 insert 문을 실행하여 새로 만든 테이블에서 대상으로 전송합니다.

또는 Visual Studio for Database Professional (또는 Redgate)과 같은 도구를 사용하여 데이터를 전송합니다.

+0

당신이이 마법사를 처음 사용했을 때의 문제는 아닙니다. 비 DBA가 따라야 할 프로 시저로 설정하려고합니다. 따라서 문제를 복잡하게하는 대신 마법사를 사용하는 것이 좋습니다. 이상적으로는 (DTS의 좋은 옛날처럼) 실행하기위한 패키지를 갖고 싶지만 SSIS는 이와 같은 작업에 대해 지나치게 복잡해 보입니다. 다른 해결책이 없음. – meepmeep

1

가져 오기를 성공적으로 사용했습니다. Chris에게는 중간 테이블이나 파일 사용에 대한 좋은 제안이 있습니다. 그러면 SQL의 변환 도구 대신 쿼리를 사용하여 간단한 변환을 수행 할 수 있습니다. 또한 문제가 발생하거나 문제를 격리해야 할 경우를 대비하여 버퍼를 제공합니다.

+0

가져 오기 (기본적으로 Query라는 이름)에서 생성 된 테이블로 가져 오기를 시도했지만 여전히 0 개의 행이 복사되었습니다. – meepmeep

1

필자는 2008 년 import 유틸리티를 사용하여 비슷한 문제가 발생했습니다. TOAD에서 정상적으로 실행되었지만 SQL Server 가져 오기 유틸리티를 사용하여 0 행으로 가져온 Oracle 원시 SQL을 사용했습니다. 범인은 결국 오라클의 날짜 형식과 관련이 있습니다. SQL은 '03-JUN-2013 '과 같은 날짜를 참조했습니다. TO_DATE ('06/03/2013 ','MM/DD/YYYY ')와 같은 TO_DATE 함수를 사용하도록 변경 한 후에는 성공적으로 실행 및 가져 왔습니다.

관련 문제