none
trigger no Sql Server 2008 RRS feed

  • Pergunta

  • Boas, tenho uma base dados com o nome LOJA, e nela tenho uma tabela com o nome produtos com três campo essenciais (ID ; Nome ; Codigo).

    Gostaria de saber como criar um trigger e anexa-lo a esta tabela por formas a que quando um novo registo fosse inserido ele chama-se um procedimento e este procedimento um  ficheiro .bat que esta na dorectoria (C:\ficheiros\run.bat) e levasse com ele estes três paramentros que recebeu. chamaria assim o .bat   :   run.bat ID Nome Codigo.

    Alguem me pode dar uma ajuda em como criar um trigger ?

    Obrigado


    MCSE ; CCNA ; SCJP


    • Editado Agentelu sexta-feira, 28 de setembro de 2012 01:08
    • Movido Roberson Ferreira _ sexta-feira, 28 de setembro de 2012 12:41 (De:SQL Server - Desenvolvimento Geral)
    sexta-feira, 28 de setembro de 2012 01:07

Todas as Respostas

  • Pelo que entendi você está querendo executar um arquivo bat por dentro do SQL.

    Primeiramente preciso lhe dizer que isso não é o ideal. É bom que o SQL seja responsável por coisas inerentes a ele próprio. Por isso não é bom que ele tenha que rodar aplicativos, executar bat's, etc.

    Dá pra fazer, mas essas coisas não deviam ser de responsabilidade do banco, mas sim, de seu front-end (aplicação).

    Contudo, caso não tenha outra opção, você terá que criar uma trigger de inserção e utilizar o procedimento xp_cmdshell (que precisa ser habilitado no banco).

    Dê uma olhada em: http://www.devmedia.com.br/executando-comandos-shell-no-ms-sql-server-2005/5250


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    sexta-feira, 28 de setembro de 2012 12:40
  • Olhando para o senario que lhe apresentei, e visto não ser a opção ideal, o que me sugere ? preciso que sempre que um novo registo entre para a tabela ele chame um .bat e passe os parametros, numa thread independente, ou seja o que o .bat vai fazer nao é da responsabilidade do SQL. preciso apenas que o sql invoce o .bat e lhe entregue os dados que acabaram de ser inseridos

    MCSE ; CCNA ; SCJP

    sexta-feira, 28 de setembro de 2012 19:22
  • Agenteu,

    Bom, você é dono do seu ambiente e sabe melhor do que nós dos seus riscos, mas uma possibilidade seria utilizar o comando XP_CMDShell dentro do Trigger para chamar este arquivo .bat em conjunto com o comando SQLCMD.


    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]

    segunda-feira, 1 de outubro de 2012 17:28