none
GERAR ARQUIVO TXT POR UMA PROCEDURE RRS feed

  • Pergunta

  • Olá galera,

    Estou com o seguinte problema: Tenho uma proc que roda a cada 1h que alimenta uma tabela, até tudo lindo ! Porém preciso que a cada final de execução, uma outra "Proc" ou "Function", que seja padrão, seja chamada passando o nome da proc que foi executada e se não houve erro, seja chamada gerando um arquivo txt em algum lugar da rede, alguém sabe como fazer isso ?

    Obrigada.


    Se ajudei? Marque como util.. Obrigado :D

    terça-feira, 7 de abril de 2015 20:24

Respostas

  • Jaqueline,

    Outra possibilidade seria utilizar o comando BCP dentro da sua Stored Procedure, veja este exemplo:

    CREATE TABLE test(
    empid varchar(6),
    empname varchar(100),
    dob datetime,
    salary decimal(12,2),
    Nome Varchar(2000)
    )
    
    INSERT INTO test
    SELECT 'EMP001','Suresh','19910619',3000,'Pedro Galvão'
    UNION ALL
    SELECT 'EMP002','Ramesh','19710103',20000,'Teste'
    UNION ALL
    SELECT 'EMP003','Nilesh','19800722',4760,''
    UNION ALL
    SELECT 'EMP004','Kumar','19680911',42000,''
    
    Declare @Comando Varchar(500)
    
    Set @Comando='bcp Master..Test out c:\teste.csv -SServidor16 -c -t, /CACP -T'
    
    Exec xp_cmdshell @Comando
    


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Sugerido como Resposta Eduardo.Romero quarta-feira, 8 de abril de 2015 17:23
    • Marcado como Resposta Eduardo.Romero quinta-feira, 9 de abril de 2015 11:45
    terça-feira, 7 de abril de 2015 22:53
  • Jaqueline boa noite, não sei se te ajuda, mas você poderia colocar uma variável chamando o sqlcmd e configurar uma saida do jeito que você quiser e com isso tratar.

    Ex:

    declare @sql = varchar(500)
    select @sql = 'sqlcmd -E -Q "select * from abc" -o "c:\temp\teste.txt" -w500'

    Lembrando que você precisa ativar o xp_cmdshell habilitado.

    abs,




    Vinícius Kleber

    • Sugerido como Resposta Eduardo.Romero quarta-feira, 8 de abril de 2015 17:23
    • Marcado como Resposta Eduardo.Romero quinta-feira, 9 de abril de 2015 11:45
    terça-feira, 7 de abril de 2015 21:12

Todas as Respostas

  • Deleted
    terça-feira, 7 de abril de 2015 21:10
  • Jaqueline boa noite, não sei se te ajuda, mas você poderia colocar uma variável chamando o sqlcmd e configurar uma saida do jeito que você quiser e com isso tratar.

    Ex:

    declare @sql = varchar(500)
    select @sql = 'sqlcmd -E -Q "select * from abc" -o "c:\temp\teste.txt" -w500'

    Lembrando que você precisa ativar o xp_cmdshell habilitado.

    abs,




    Vinícius Kleber

    • Sugerido como Resposta Eduardo.Romero quarta-feira, 8 de abril de 2015 17:23
    • Marcado como Resposta Eduardo.Romero quinta-feira, 9 de abril de 2015 11:45
    terça-feira, 7 de abril de 2015 21:12
  • Jaqueline,

    Outra possibilidade seria utilizar o comando BCP dentro da sua Stored Procedure, veja este exemplo:

    CREATE TABLE test(
    empid varchar(6),
    empname varchar(100),
    dob datetime,
    salary decimal(12,2),
    Nome Varchar(2000)
    )
    
    INSERT INTO test
    SELECT 'EMP001','Suresh','19910619',3000,'Pedro Galvão'
    UNION ALL
    SELECT 'EMP002','Ramesh','19710103',20000,'Teste'
    UNION ALL
    SELECT 'EMP003','Nilesh','19800722',4760,''
    UNION ALL
    SELECT 'EMP004','Kumar','19680911',42000,''
    
    Declare @Comando Varchar(500)
    
    Set @Comando='bcp Master..Test out c:\teste.csv -SServidor16 -c -t, /CACP -T'
    
    Exec xp_cmdshell @Comando
    


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Sugerido como Resposta Eduardo.Romero quarta-feira, 8 de abril de 2015 17:23
    • Marcado como Resposta Eduardo.Romero quinta-feira, 9 de abril de 2015 11:45
    terça-feira, 7 de abril de 2015 22:53