Usuário com melhor resposta
BCP via SSIS

Pergunta
-
Boa tarde.
Estou "quebrando a cabeça" com uma tarefa aparentenmente simples...tenho um comando que usa o BCP para importar um arquivo:
C:\teste\bin\bcp.exe minhaTabela in arquivo.csv -SmeuServer -UmeuUser -PminhaSenha -t, -c -b1000
Executando via bat o processo funciona. Estou migrando para o SSIS agora, usando o componente Execute Process Task.Configuração:
Executable: C:\teste\bin\bcp.exe
Arguments: minhaTabela in arquivo.csv -SmeuServer -UmeuUser -PminhaSenha -t, -c -b1000Bom, via SSIS isso não funciona. Erro:
[Execute Process Task] Error: In Executing "C:\teste\bin\bcp.exe" "minhaTabela in arquivo.csv -SmeuServer -UmeuUser -PminhaSenha -t, -c -b1000" at "", The process exit code was "-1" while the expected was "0".Tenho que configurar algo mais?
Abraços, Weslley Moura MCP - MCTS - ORA SqlExpert
Respostas
-
Pessoal, consegui resolver...o "truque" é conseguir debugar...porque (pelo menos no meu caso) não tem nenhuma particularidade pra chamar o BCP via SSIS.Para investigar o problema:
- Crie uma variável do pacote
- No componente "Execute Process Task" que vai executar o BCP, configure a propriedade Standard Output Variable especificando sua nova variável
- No componente "Execute Process Task" que vai executar o BCP, Configure a propriedade FailTaskIfReturnCodeIsNotSucessValue para FALSE
- Crie um Script task que será executado após o processamento do componente que executa o BCP (Execute Process Task). Dentro deste script task, programe uma linha em VB ou C# para exibir o valor da variável que você criou.Pronto, você saberá o motivo pelo qual o comando não está sendo executado. No meu caso, o problema estava acontecendo porque eu não estava especificando o caminho completo do arquivo a ser importado.Antes:Dbxxxx.dbo.Tbxxx_TEMP in teste.csv -Sxxxxx -Uxxxxx -Pxxxxx -t, -c -b1000Depois:Dbxxxx.dbo.Tbxxx_TEMP in C:\xxx\Weslley\Tbxxx\teste.csv -Sxxxxx -Uxxxxx -Pxxxxx -t, -c -b1000Obrigado pelas dicas!
Abraços, Weslley Moura MCP - MCTS - ORA SqlExpert- Marcado como Resposta Weslley Moura quarta-feira, 30 de novembro de 2011 13:21
Todas as Respostas
-
Weslley,
Você já tentou utilizar o componente SQL Server Task?
O BCP é uma ferramenta de linha de comando bastante antiga mas muito utilizado, ela não possui compatibilidade com o SSIS, talvez este seja o problema.
Tem também o componente Execute DTS 2000 Package!!!
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com] -
-
Wasley,
Pelo SQL Server, voce pode chamar via xp_cmdshell, ou seja, pelo SSIS voce pode utilizar uma SQL Server Task e colocar o mesmo comando, tera o mesmo comportamento.
Porem, via SSIS, programas podem ser chamados a partir do componente Execute Process Task, porem creio que adaptar o BCP para utilizar este componente, sera bem complicado, e nem sei se é possivel.
Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com -
-
Waslley,
Veja esta outra thread, é um caso semelhante ao seu, com alguns exemplos e correções...
Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com -
Pessoal, consegui resolver...o "truque" é conseguir debugar...porque (pelo menos no meu caso) não tem nenhuma particularidade pra chamar o BCP via SSIS.Para investigar o problema:
- Crie uma variável do pacote
- No componente "Execute Process Task" que vai executar o BCP, configure a propriedade Standard Output Variable especificando sua nova variável
- No componente "Execute Process Task" que vai executar o BCP, Configure a propriedade FailTaskIfReturnCodeIsNotSucessValue para FALSE
- Crie um Script task que será executado após o processamento do componente que executa o BCP (Execute Process Task). Dentro deste script task, programe uma linha em VB ou C# para exibir o valor da variável que você criou.Pronto, você saberá o motivo pelo qual o comando não está sendo executado. No meu caso, o problema estava acontecendo porque eu não estava especificando o caminho completo do arquivo a ser importado.Antes:Dbxxxx.dbo.Tbxxx_TEMP in teste.csv -Sxxxxx -Uxxxxx -Pxxxxx -t, -c -b1000Depois:Dbxxxx.dbo.Tbxxx_TEMP in C:\xxx\Weslley\Tbxxx\teste.csv -Sxxxxx -Uxxxxx -Pxxxxx -t, -c -b1000Obrigado pelas dicas!
Abraços, Weslley Moura MCP - MCTS - ORA SqlExpert- Marcado como Resposta Weslley Moura quarta-feira, 30 de novembro de 2011 13:21