none
Usar o BCP via linha de comando em um arquivo .BAT para gravar resultado da query em formato texto (TXT) RRS feed

  • Discussão Geral

  • Boa tarde colegas,

    Estou com uma dúvida muito besta no SQL: Eu tenho algumas consultas salvas como projeto .SQL criadas via Management Studio, mas algumas delas eu queria agendar para rodar todo dia de manhã e salvar o resultado em um arquivo texto separado por tabulação. Então, como eu já tenho essas 3 consultas salvas e abertas no Management Studio, eu dou um F5 em cada uma delas e salvo o resultado em uma pasta da rede (Botão direito >>> Salvar resultados como >>> Texto delimitado por tabulação), mas eu queria automatizar isso e pensei em usar o BCP em um arquivo .BAT+Agendador de tarefas do Windows.

    Aí vai a pergunta besta: Como eu faço pra fazer o BCP ler um projeto de consulta salvo e salvar o resultado como .TXT ???

    Eu estava tentando a seguinte sintaxe no prompt de comando do servidor:

    BCP "Consulta de títulos atrasados.sql" out z:\ResultSQL.txt -c -T

    Mas deu uma mensagem "An error occurred while processing the command line"

    Alguém pode me dar uma luz ?

    OBS: Eu estou usando o SQL 2008 SP1 Standard Edition e Windows Server 2003 SP2

    terça-feira, 15 de março de 2011 20:05

Todas as Respostas

  • Olá,

    Não sei se é possível através de um arquivo.sql.

    Ja fiz através de tabelas, views, procedures e T-SQL direto dentro do BCP. De certa maneira ele precisa conectar a um banco de dados para retornar a sua consulta.

    Joga suas queries direto dentro do comando BCP.

    []'s

    terça-feira, 15 de março de 2011 20:43
  • Olá.

    ja tentou com o SQLCMD?

    SQLCMD

    -Snome_servidor -i"Consulta de títulos atrasados.sql" -oZ:\ResultSQL.txt -E

    Att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quarta-feira, 16 de março de 2011 14:01
  •  

    Douradão, qual a Edição da sua instancia do SQL Server ? Caso seja diferende de Express utilize um pacote do SQL Server integration Services em conjunto com uma Job do SQL Server Agent, e para sua sorte, existe um Wizzard no SQL Server management Studio que facilita a criação desse processo.

    http://msdn.microsoft.com/pt-br/library/ms140052.aspx

     

    Espero ter ajudado

     

    Victor Perez

     

    quarta-feira, 16 de março de 2011 21:10
  • Obrigado a todos pelas respostas.

    Acabei resolvendo com o SQLCMD (comandinho porreta esse hein) + Agendador de tarefas do Windows, mas tive que alterar minhas aplicações para que lessem os arquivos de origem com caracteres delimitadores de colunas ao invés de texto separado por tabulação.

    No final o meu comando SQLCMD ficou assim:

    SQLCMD -i "Consulta de títulos atrasados.sql" -o z:\ResultSQL.txt -h-1 -m1-W -s#

    Não coloquei minhas queries dentro do BCP porque gosto de ter elas em 1 único lugar, se precisar alterar ou corrigir algum erro fica mais fácil de se gerenciar isso tendo todas elas salvas em 1 única pasta em arquivos .SQL (questão de opção - tem gente que trabalha de forma diferente).

    Agora essa solução do pacote do Integration Services também é excelente, vou estudar mais um pouco sobre isso e com certeza usarei em 2 planilhas que eu tenho que o usuário atualiza manualmente.

    Mais uma vez obrigado a todos.

    Abraços.

    quinta-feira, 17 de março de 2011 12:01
  • Douradão

    Obrigado pelo retorno, se possível e achar justo marque a(s) thread(s) que o ajudou, esta ação poderá ajudar outros usuáris do forum com dúvidas semelhantes.

    Att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quinta-feira, 17 de março de 2011 15:51