#title 패키지 호출 성능 ssis 패키지를 다음과 호출할 것이다. * dtexecui.exe에서 호출 * dtexec.exe에서 호출 * sql server job에서 호출 * visual studio에서 호출 * xp_cmdshell에서 호출 * 기타등등 dtexecui.exe 또는 dtexec.exe 또는 sql server job에서 ssis 패키지를 호출할 경우 울분을 토하는 사람들이 많이 있다. 실제 실행하는 것은 5초도 안걸리는데 dtexecui.exe 또는 dtexec.exe 또는 sql server 2005 job agent에서 ssis 패키지를 호출할 경우 1분이 넘게 걸린다는 것이다. 쩝.. 왜 이따위로 만들었는지.. 패키지가 많으면 패키지수 * 1분이다.. 패키지가 60개면 1시간이다.. 게대가 안쪽에서 루프라도 돌면.. 쩝.. 근데.. xp_cmdshell에서 ssis를 호출하면 조낸 빠르다. 2008버전에서는 job agent에서 실행되면 빠르다. ui 부하인가? {{{ exec xp_cmdshell 'dtexec /FILE "C:\ssis\project\마스터패키지.dtsx" /decrypt 패키지암호' , no_output }}} 이유는? 나도 모른다. 짐작컨데.. 프로세스간에 메시지를 주고받는 인터페이스 쪽이 문제이리라..아니면... UI부하인가? 아니면.. 메시지의 양이 조넨 많은가? 떱.. 귀찮으니 만들어 봤다.. {{{ alter proc usp_dtexec @pkgNM varchar(1000) , @bExecDT char(8) = null , @eExecDT char(8) = null , @pkgPW varchar(255) = '암호' as /* declare @pkgNM varchar(1000) , @pkgPW varchar(255) , @bExecDT char(8) , @eExecDT char(8) set @pkgNM = 'C:\ssis\project\패키지_파일명.dtsx' set @pkgPW = '암호' set @bExecDT = '20101103' set @eExecDT = '20101128' */ if @bExecDT is null begin set @bExecDT = convert(char(8), getdate()-1, 112) set @eExecDT = convert(char(8), getdate()-1, 112) end declare @cmd varchar(8000) while(@bExecDT <= @eExecDT) begin set @cmd = 'dtexec /FILE "' + @pkgNM + '" ' + '/de ' + @pkgPW + ' ' + '/SET "\Package.Variables[User::bExecDT].Properties[Value]";' + @bExecDT + ' ' + '/SET "\Package.Variables[User::eExecDT].Properties[Value]";' + @bExecDT exec xp_cmdshell @cmd, no_output print @cmd set @bExecDT = convert(char(8), dateadd(dd, 1, @bExecDT), 112) end }}}