Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como executar pacotes dtsx através da linha de comando


Tomando um palpite aqui enquanto espero uma resposta ao comentário, geralmente quando um pacote é executado bem no BIDS, mas não funciona na linha de comando, acho que está relacionado à incompatibilidade de 64/32 bits.

Você está usando Excel, Access ou qualquer outra coisa que sob as folhas usa o driver JET? Isso só funciona no modo de 32 bits.

Em um sistema operacional de 64 bits, por padrão, ao criar uma nova conexão ODBC, você a criará no namespace de 64 bits que a versão de 32 bits não poderá acessar?

Você está usando drivers Informix ou UDB/DB2? Eu só encontrei 32 versões desses.

Executando um pacote a partir da linha de comando


dtexec é o mecanismo de linha de comando para executar um pacote SSIS. Ele vem em 2 sabores para SO de 64 bits, ambos são nomeados dtexec e geralmente os 32 bits são referenciados na variável de ambiente Windows Path

Em um SO de 64 bits, o caminho padrão para o de 64 bits seria "c:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTExec.exe"

Ainda no SO de 64 bits, o caminho para a versão 32 seria "c:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe"

Para executar um pacote chamado FooBar.dtsx que reside em C:\Src\MyProject\MyProject, a invocação seria
"c:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe" /file C:\Src\MyProject\MyProject\FooBar.dtsx

Se esse pacote residir no SQL Server (DEVSQL01) na pasta MyProject, esta seria a chamada para executar o mesmo pacote.
"c:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe" /SQL \MyProject\FooBar /SERVER DEVSQL01

Editar

Para aplicar uma configuração, você precisa especificar o /CONF opção
"c:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe" /file C:\Src\MyProject\MyProject\FooBar.dtsx /CONF C:\FooBar.dtsConfig

Olhando para os seus comentários, a única diferença entre o nosso uso é que você colocou tudo entre aspas duplas. Experimente sem a citação anterior e final.