Frage

Ich betreibe Abfragen mit SQLCMD-Dienstprogramm über PHP und ich wollte wissen, ob es eine Möglichkeit, Stop-Abfragen oder Scripts war, dass ich über einen anderen SQL-Befehl ausgeführt haben, durch die Prozess-ID oder etwas übergeben.

ich auch die PHP-Treiber für SQL Server würde es einfacher sein, auf diese Weise zu tun?

Oder ist alles nicht möglich - einmal eine Abfrage läuft man kann es nicht stoppen

Dank all

War es hilfreich?

Lösung

SQL Server verfolgt alle Prozesse ausführen. Sie können mithilfe von gespeicherten Prozeduren SP_WHO und SP_WHO2 die Liste überprüfen -. Jeder Prozess eine einzigartige SPID hat

In der Vergangenheit habe ich kopiert und den Code hinter diesen Verfahren angepasst für meine eigenen Zwecke.

Sie können die Abfrage überprüfen zuletzt auf einem SPID ausgeführt DBCC INPUTBUFFER (@SPID) mit

Sie können die meisten Prozesse töten KILL @SPID mit

Zu beachten ist, dass es im Allgemeinen nicht eine gute Idee, Prozesse betrachtet zu töten, weil man nicht sicher sein kann, genau das, was sie tun.

Andere Tipps

Hängt, wie Sie das SQLCMD sind aufgerufen wird. Sind Sie es als einen Aufruf exec läuft ()? Die PHP-Befehle, die Sie nicht viel Kontrolle geben.

Wenn Sie etwas zeitaufwendig tun, könnte es besser sein, eine Producer-Consumer-Architektur zu verwenden. Haben Sie Ihr Hauptprogramm veröffentlichen (in einer Datenbank oder eine Textdatei) den Befehl ausgeführt werden. Haben Sie einen separaten Prozess (eine andere PHP-Skript, vielleicht) führen diesen Befehl -. Aber, bevor er den SQLCMD beginnt, haben sie bieten seine Prozess-ID (oder eine andere Handgriff) zum Hauptprogramm

Dann in Ihrem Hauptprogramm können Sie den erzeugten Prozess töten, wenn es zu lange dauert.

Einige der Kommentare auf der PHP exec Funktion könnte aufschlussreich sein: http: //au2.php.net/manual/en/function.exec.php

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top