Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    134

    [SQLServer] lanciare un applicazione esterna da un Trigger

    Ho fatto una mia applicazione in VB che cripta dei file.
    Ho un software di acquisizione che inserisce l' indice del file e il path di dove è memorizzato in un DB SQLServer.
    Ora quello che dovrei fare è criptare questi file.
    Al momento quello che faccio è lanciare la mia applicazione ad una determinata ora (diciamo di notte) la quale interroga il DB SQLServer e si ricava il path di tutti i file inseriti in giornata e li cripta.
    Volendo fare una cosa in "tempo reale", è possibile inserire un Trigger che ad ogni inserimento di un nuovo record mi lanci la mia applicazione esterna passandogli come argomento il path del file appena inserito?
    Non ho mai uilizzato i Trigger. Come funzionano? Ne vale la pena?

  2. #2
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    I trigger sono delle procedure, associate ad una specifica tabella, che vengono eseguite quando in quella tabella viene eseguita un'operazione di inserimento (aggiornamento, cancellazione) di dati. Penso la chiamata ad un programma esterno possa funzionare, prova qualcosa del tipo:

    -----------------------------
    CREATE TRIGGER nome_trigger
    ON [dbo].[nome_tua_tabella]
    AFTER INSERT
    AS

    DECLARE
    @nome_comando varchar(100)

    SET @nome_comando = 'tuo_programma.exe'

    EXEC master.dbo.xp_cmdshell @nome_comando
    GO
    -----------------------------

    P.S.
    Mi sono accorto ora che volevi passare come argomento il path....
    Potresti allora fare una piccola query (sempre all'interno del trigger) in modo da ricavarti il campo che ti interessa, assegnarlo ad una variabile e poi inserirlo nel @nome_comando

    SET @nome_path = select ....

    SET @nome_comando = @nome_comando + @nome_path
    ....

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    134
    Ti ringrazio credo che sia proprio quello che mi serve.
    Proverò.
    Una domanda:
    Se invece di avere un' applicazione esterna creassi una dll, potrei fare direttamente un CreateObject con T-SQL così da rimanere all' interno dello stesso ambiente e non dover richiamare un eseguibile?
    Poi:
    Quando viene eseguito un Trigger l' inserimento di un nuovo record aspetta che sia finita l' esecuzione del Trigger o tranquillamente ne lancia uno ad ogni Insert?
    Ogni volta vengono inseriti circa 20 o 30 record a distanza di pochi secondi l' uno dall' altro.
    Mi sei stato comunque di grande aiuto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.