2017-11-21 2 views
0

Redgate SQL 데이터 비교 12를 사용하여 마이그레이션을 수행하고 있습니다. 스크립트는 800MB 이상으로 생성됩니다. sqlcmd를 사용하여 스크립트를 처리합니다.매우 큰 Redgate SQL 스크립트가 SQL Server에서 오랫동안 실행됩니다.

정확한 명령은 다음과 같습니다

sqlcmd -i [path to SQL script file] -a 32767 -d [db name] -x -o script<#>.log 

이 스크립트는 완료하는 데 10 시간 반을 복용하고 있지만 성공적으로 완료됩니다. 이 스크립트는 많은 10 개의 테이블에 대해 실행됩니다. 500MB 이상의 단일 테이블에 대한 두 번째 스크립트는 첫 번째 스크립트를 실행 한 후 실행하는 데 약 5-10 분 밖에 걸리지 않습니다.

서버는 VM이며 16GB의 메모리가 있습니다. 는 SQL Server 메모리 탭에서 :

최소 메모리 = 8172

최대 메모리 = 2147483647

나는 웹 dev에있어, DBA가 아니에요. Google에서 가능한 한 빨리 실행되도록 확인하는 모든 힌트가 크게 도움이 될 것입니다.

+1

스크립트를 보지 않아도됩니다. 내 생각 엔 인덱스가 테이블에 느린 삽입을 일으킬 수 있습니다. –

답변

0

한 가지 방법은 대기 stats..below DMV를 확인하는 것입니다 .. 크기의 스크립트 800 메가 바이트 이상 시간이 걸리고 5백메가바이트 스크립트 스크립트를보고 밖으로 시간이 적게 걸리는 이유를 말할 수없는 것입니다 DMV는 DMV 위가 된 세션을 필요로

가 전달 될 대기 유형, 시간, 차단 상태에 대한 정보를 제공합니다 위에 만 스크립트 실행이있는 경우 줄이

select status,blocking_session_id,wait_resource, 
wait_type,last_wait_type from 
sys.dm_Exec_requests 

(가), 힌트, 당신은 세션 ID가 필요하지 않습니다 , 서버가 사용 중이라면 우리가 할 수 있습니다. 세션 ID를 얻으려면 dmv 아래의 e를 입력하십시오.

select * from sys.dm_exec_sessions 
where PROGRAM_NAME='sqlcmd' 
+0

장시간 실행되는 스크립트가 실행되는 동안 해당 SQL을 실행해야합니다. – Venture

+0

불행히도 스크립트의 내용은 기밀입니다. 그러나 스크립트에서 찾을 수 있다고 생각되는 부분이 있으면 확인할 수 있습니다. – Venture

+0

DMV를 점검하여 잠금/차단이 있는지 먼저 확인하십시오. 잠금/차단이 없으면 스크립트를 확인하는 것이 좋습니다. – TheGameiswar

관련 문제