2016-06-21 5 views
0

Mein Ziel ist es, eine Abfrage auf einem Remote-Server zu starten, der einige Zeilen aus einer Tabelle löscht. Das Problem besteht darin, dass die Abfrage viel Zeit in Anspruch nimmt, und ich möchte nicht, dass der Client auf seinen Abschluss wartet (auch weil wir für jede Sekunde bezahlen, die der Prozess ausführt, es handelt sich um einen PowerShell-Job von Azure). Gibt es eine Möglichkeit, das zu tun? [Bearbeiten] Mein SQL Server ist ein Azure SQL Server, dann kann ich Agent SQL nicht verwenden. Ich will nur wissen, ob es eine Methode gibt, um eine Abfrage auszuführen, ohne ihre Ergebnisse zu warten. [/ Edit]Wie Abfrage ausführen, ohne auf Ergebnisse in MS SQL warten?

+0

Sie können Service Broker verwenden, um asynchrone, alte, aber immer noch gültige Posts hier auszuführen: http://rusanu.com/2009/08/05/asynchronous-procedure-execution/ –

+0

Wenn Sie es von Powershell ausführen können, Sie Kann Jobs oder RunSpaces verwenden – Avshalom

+0

Muss der Benutzer den Löschvorgang starten oder handelt es sich um einen unbeaufsichtigten Prozess? –

Antwort

-1

Auf SQL Server.

  1. Gespeicherte Prozedur erstellen, um Zeilen aus der Tabelle zu löschen.
  2. Erstellen Sie den verknüpften Server auf dem Remote-Server mit aktiviertem RPC (TRUE).

Nutze diesen Link um Unterstützung https://technet.microsoft.com/en-us/library/ff772782(v=sql.105).aspx

  1. Zum Löschen von Datensätzen die Stored Procedure

    EXEC [RemoteServer] .DatabaseName.DatabaseOwner.StoredProcedureName 
    

Ausführliche Informationen über Asynchronous Prozedur Ausführung ausführen . Besuche http://rusanu.com/2009/08/05/asynchronous-procedure-execution/

Dank

+0

Bitte erklären Sie, wie sich das auf asynchrone Weise verhalten wird und was sich von der Ausführung des Sprocs auf dem lokalen System unterscheidet. – vonPryz

+0

Sie können besuchen http://rusanu.com/2009/08/05/asynchronous-procedure-execution/ –

1

Sie .NET-API verwenden können SqlCommand.BeginExecuteNonQuery, die erlauben würde, die Abfrage-Ausführungsanforderung asynchron und weiterhin mit anderen Aufgaben zu unterbreiten. Callback wird ausgeführt, wenn Abfrageergebnisse verfügbar sind. Sie können jedoch eine leere Implementierung einfügen, wenn Sie nicht an den tatsächlichen Ergebnissen interessiert sind.

+0

Ist es möglich, es in einem ps-Skript in azure Automation zu tun? –

+0

Ja. Ich habe kein Beispiel für ein Runbook, das BeginExecuteNonQuery praktisch verwenden würde, aber hier ist das Beispiel, das synchrone Version verwendet - ExecuteNonQuery: https://gallery.technet.microsoft.com/scriptcenter/Azure-Automation-Your-SQL-30f8736b #Inhalt. Sie können einfach dem Beispiel folgen und ** ExecuteNonQuery ** durch ** BeginExecuteNonQuery ** ersetzen und entsprechende Parameter übergeben. Die Codezeile direkt nach Ihrem Aufruf von ** BeginExecuteNonQuery ** - wird ausgeführt, ohne auf die Ergebnisse der Abfrage zu warten. –

+0

Es klingt perfekt –