Was ich gerade bei Jon Galloway im Artikel "Using 'GO 100' to execute a batch 100 times" las, habe ich nicht gewusst. Microsoft hat in die Werkzeuge des SQL-Servers-2005 ein nettes und undokumentiertes Feature eingebaut: Ein Batch wird in einer Schleife mehrfach wiederholt. Echt cool!
Mal ein Beispiel:
go 10
liefert als Ergebnis im Message-Window des Management-Studio:
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Batch execution completed 10 times.
Das geht genauso im sqlcmd (allerdings ohne "Beginning execution loop" und "Batch execution completed x times.") und im mitgelieferten osql (mit "x xacts:" am Ende).
Das "go" ist ein reiner Steuerungsbefehl für die Werkzeuge und dient dazu zwei Batches hintereinander an den SQL-Server zu schicken. Das wurde jetzt aufgebohrt.
Tatsächlich gibt es dazu einige nützliche Anwendungen:
- Wenn man mal eben schnell ein paar hundert Datensätze einfügen will und keinen Bock auf eine Schleife hat.
- Protokollieren von dynamischen System-Eigenschaften, wie die Wait Events oder Informationen über Blockierungen
- Wenn man den SQL-Server unter Last setzen will, um das Verhalten des Systems zu beobachten.
Risiken und Nebenwirkungen: Weil es undokumentiert ist, haftet Microsoft für nix und behält sich vor, das tolle Feature jederzeit wieder einklappen zu können. Das fände ich allerdings ziemlich schade…

