2013-07-19 2 views
4

실제 시나리오 : 중복 데이터베이스가 있고 원본 테이블에서 데이터가 이동되지 않은 테이블을 알고 싶습니다. 그런 다음 원본에서 중복 데이터베이스 테이블을 채 웁니다.데이터베이스의 빈 테이블을 식별하고 다른 데이터베이스의 다른 테이블에서 데이터를 삽입하십시오.

SELECT 
    DBDupl.[dbo].sysobjects.Name, DBDupl.[dbo].sysindexes.Rows FROM 
    DBDupl.[dbo].sysobjects 
    INNER JOIN DBDupl.[dbo].sysindexes 
    ON DBDupl.[dbo].sysobjects.id = DCT_SOURCE_QA.[dbo].sysindexes.id WHERE 
    type = 'U' 
    AND DBDupl.[dbo].sysindexes.IndId < 2 and rows= '0' 
    EXCEPT 

SELECT 
    DBOrig.[dbo].sysobjects.Name, DBOrig.[dbo].sysindexes.Rows FROM 
    DBOrig.[dbo].sysobjects 
    INNER JOIN DBOrig.[dbo].sysindexes 

    ON DBOrig.[dbo].sysobjects.id = DBOrig.[dbo].sysindexes.id WHERE 
    type = 'U' 
    AND DBOrig.[dbo].sysindexes.IndId < 2 and rows= '0' 

가 지금은 비어있는 테이블에 데이터를 채우려 :

나는 다음 스크립트 작성 (즉 빈 테이블을 찾기) 내 부분적인 해결책을 달성했다. 즉 두 가지 작업을 모두 수행 할 단일 쿼리가 있습니까 (1). 채워지는 테이블을 찾아서 (2). DBOrig에서 DBDupl로 데이터를 채 웁니다. 나는 위의 스크립트로 (1)을 달성했으며 수동으로 데이터를 삽입하고 싶지 않습니다.

+0

필자는 단순히 실행해야하는 SQL 삽입 문을 생성 한 과거의 것을 함께 해킹했습니다. ID 속성을 먼저 제거하고 나중에 다시 열어 본다. –

+0

@AdrianWragg, 이미 중복 데이터베이스를 만들었습니다. 모든 등록 정보가 설정되고 신원 열이 처리되고 다시 시드됩니다. 그러나 데이터 전송 중에 일부 열을 놓쳤습니다. 이제 나머지 열만 채우고 싶습니다. "해킹"이 어떻게 작동했는지 말해 줄 수 있다면 .. –

+0

그냥 확인해보십시오. 그렇지 않으면 열이 전달되지 않은 행의 전체 열 또는 일부 테이블의 전체 내용입니까? –

답변

0

정확한 데이터베이스 복사본을 원하십니까? 왜 주인공의 백업이 아닌 다른 이름의 복원이 필요합니까? 당신이 빈 테이블을 통해 루프 스크립트를 사용하여 일부 동적 SQL을 실행할 수 있습니다

insert into destDB.dbo.mytable 
select * sourcedb.dbo.mytable 

위의 명령을 실행하는 :

수없는 경우에, 당신은 같은 데이터 또는 뭔가를 이동하는 SSIS를 사용할 수 있습니다

관련 문제