Ich versuche, ein Programm auszuführen, wenn anderes Programm einen Wert in eine Tabelle einfügt. Ich habe den After-Trigger auf die Tabelle angewendet, sagen wir "table1", wenn Programm A einen Wert in table1 einfügt, muss es das Programm B ausführen, das die Eingabe aus der gleichen table1 übernimmt.Nach Einfügen Trigger blockiert die gesamte Tabelle und Prozess
USE [capstone]
GO
SET ANSI_NULLS ON
GO
CREATE trigger [dbo].[api_trig] on [dbo].[search]
after insert
AS
EXEC master..xp_CMDShell 'c:\Python34\python.exe c:\Python34\search_test.py'
Dieses search_test-Programm nimmt die Eingabe aus der gleichen Tabelle, d. Suche. Aber sobald wir irgendeine Operation an dieser Tabelle einfügen oder ausführen, wird sie für eine Ewigkeit ausgeführt, da sie sich in einer Art Schleife befindet und einen Fehler wegen Zeitüberschreitung gibt.
dies zu stoppen und auf die Tabelle zuzugreifen wieder habe ich mit dieser Methode den Prozess zu töten https://social.msdn.microsoft.com/Forums/sqlserver/en-US/77fc7e09-ed14-481f-89d5-d5e143dab7bd/trying-to-delete-a-table-in-sql-server-management-studio-and-getting-a-strange-error?forum=sqldatabaseengine und Fehler zeigt mir, dass das Programm search_test den Prozess der Abfrageausführung blockiert. Bitte helfen Sie mir mit diesem Ich bin erschöpft, den Grund/Lösung des Fehlers TIA finden
Was ist der Zweck dieses Entwurfs? Im Allgemeinen möchten Sie keine externen (oder irgendwelche) Programme von einem Trigger aufrufen. Wenn Programm B mit den neuen Datensätzen ausgeführt werden soll, lesen Sie in Service-Brokers nach, oder fügen Sie eine Zeitstempel- oder Identitätsspalte hinzu, und schreiben Sie eine geplante Aufgabe, die alle neuen Daten übernimmt und den Prozess für sie ausführt. Auf diese Weise "physisch" trennen Sie die Ausführung von der Einfügung selbst, aber haben Sie die beiden Befehle "logisch" zusammengekoppelt. –