quinta-feira, 20 de setembro de 2012

Execuntando um pacote SSIS usando T-SQL

É possível executar um pacote DTSX através do T-SQL, usando o seguinte script:

--modo 32bits
exec master.dbo.xp_cmdshell '""C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\dtexec.exe" /F "C:\pacote\teste.dtsx"'


--modo 64bits
exec master.dbo.xp_cmdshell '""C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\dtexec.exe" /F "C:\pacote\teste.dtsx"'


Abs e até a próxima!!


Leia o meu livro sobre ETL com SSIS 2012 http://www.erica.com.br/detalhes.asp?cod=4094

3 comentários:

  1. Aqui na empresa, em diversos momentos Procedures executam Jobs que executam SSIS.

    Tem como executar pacotes que estão armazenados no msdb, e passar parametros para o pacote?
    Com essa execução de DTSX via T-SQL é possível armazenar o resultado do pacote? Algo como View History de Job...

    ResponderExcluir
  2. Calebe, para visualizar o job histoty, é uma query simples:

    select job_name, run_datetime, run_duration
    from
    (
    select job_name, run_datetime,
    SUBSTRING(run_duration, 1, 2) + ':' + SUBSTRING(run_duration, 3, 2) + ':' +
    SUBSTRING(run_duration, 5, 2) AS run_duration
    from
    (
    select DISTINCT
    j.name as job_name,
    run_datetime = CONVERT(DATETIME, RTRIM(run_date)) +
    (run_time * 9 + run_time % 10000 * 6 + run_time % 100 * 10) / 216e4,
    run_duration = RIGHT('000000' + CONVERT(varchar(6), run_duration), 6)
    from msdb..sysjobhistory h
    inner join msdb..sysjobs j
    on h.job_id = j.job_id
    ) t
    ) t
    order by job_name, run_datetime

    Para executar o pacote no msdb via t-sql, tenho que pesquisar por aqui...quem sabe em outro post

    abs

    ResponderExcluir
  3. Calebe, se o pacote que está no MSDB estiver vinculado a um job, você pode executar o JOB via T-SQL:

    EXEC MSDB..SP_Start_Job @Job_Name = 'Nome do seu JOB'

    ResponderExcluir

Leave your comment here!