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

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
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
-
-
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
-
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.
-
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 FernandesMCP, MCDBA, MCSA, MCTS.
Se útil, classifique!!!
Me siga no twitter: @marcelodba