Wie kann ich gespeicherte Prozeduren von sql server parallel?
Ich möchte etwas machen wie:
exec sproc1 and sproc2 at the same time
when they are both finished exec sproc3
Kann ich dies in dts.
Gibt es einen Weg, es zu tun in transact sql?
Oder gibt es einen Weg, es zu tun mit einem batch-script (z.B. vbs oder powershell)?
- Wäre es vielleicht einfacher die Frage zu beantworten, wenn Sie eine Begründung enthalten, warum andere als das, es ist eine interessante Frage. Dann könnten wir die Adresse der Zweck, als vielmehr der Technik.
- Laden von Daten in eine sql-server-data-Warehouse beinhaltet die Ausführung vieler sql-Anweisungen. Die Fähigkeit zum ausführen von Anweisungen parallel würde diesen Prozess beschleunigen. Sie können dies tun, mit einem DTS -, das ist ein Werkzeug. Ich bin einer jener Menschen, die lieber code, wo möglich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
sp _ start _ job
Mache ich eine ähnliche Sache im moment, und die einzige Möglichkeit die ich gefunden habe, zu vermeiden, mit SSIS oder eine externe shell ist mein split-load-routine in 'threads' manuell, und dann Feuer ein single-master-sqlagent-Auftrag, die wiederum führt, wie viele sp _ start _ job ist, wie ich die Gewinde haben. Von diesem Punkt an, Sie laufen alle autonom.
Ist es nicht genau das, was wir suchen, aber das Ergebnis ist das gleiche. Wenn Sie testen Sie die "job-status" für die sub-jobs, die Sie implementieren können, Ihre bedingte start von sproc 3 sowie.
Was ist der Punkt, in 8 Kerne, wenn wir nicht verwenden können, Sie alle auf einmal?
Könnte man erstellen Sie eine CLR-Gespeicherte Prozedur, die (mit C#) nennen würde, die ersten beiden auf Ihre eigenen threads, und dann blockiert, bis beide komplett sind... dann laufen die Dritten einer.
Sind Sie in der Lage, verwenden Sie CLR-sprocs in Ihrer situation? Wenn ja, werde ich Bearbeiten diese Antwort mit mehr Details.
Benötigen Sie unbedingt beide SPs parallel ausgeführt werden?
Mit einfachen CRUD-Anweisungen innerhalb einer einzigen SP, die ich gefunden habe, SQL-S. hat einen sehr guten job, herauszufinden, welche von Ihnen parallel ausgeführt werden können und so. Ich habe nie gesehen, dass SQL-S. 2-SPs parallel, wenn beide genannt werden nacheinander aus einem T-SQL-Anweisung, der nicht einmal weiß, ob es überhaupt möglich ist.
Nun dann, machen Sie die DTS wirklich führen Sie Sie parallel? Könnte es sein, es führt einfach diese nacheinander, ruft dann den 3. SP nach der letzten erfolgreich abgeschlossen.
Wenn es wirklich läuft parallel, wahrscheinlich Sie sollten stick mit DTS, aber dann würde ich gerne wissen, was es bedeutet, wenn ich ein DTS-Paket nennen, sagen wir, 10 heavy-duty-SPs parallel... ich habe zu tun einige Tests, um zu lernen, dass mir selbst 😀
Können Sie mithilfe der SSIS. Die Vorteile sind, dass das Paket gespeichert werden können in den SQL-Server und einfach geplant dort.
Aus der PowerShell oder einfach nur über externen Skriptsprache, die Sie verwenden können, die SQL-Befehlszeile osql oder sqlcmd. Diese Technik kann auch verwendet werden, um Zeitplan es auf dem SQL-Server durch Beschuss mit xp_cmdshell auch.