foreach Schleife in SQL-Skripten?

In Powershell verwende ich foreach, um eine Funktion durch eine Liste von Zielen auszuführen.

Ich habe mich gefragt, ob es in SQL etwas Ähnliches wie foreach gibt, damit ich dieselbe Abfrage über mehrere von mir ausgewählte DBs ausführen und die Ergebnisse in einer CSV-Datei speichern kann.

Kommentare

  • Was Sie tun, können Sie auch in Powershell tun. Warum also tsql verwenden und dann in eine CSV-Datei kopieren?
  • Ich habe versucht, weniger Parteien einzubeziehen, wenn ich dies nur aus einer Quelle tun könnte.

Antwort

Wie Kin bereits erwähnt hat, ist PowerShell zwar in T-SQL möglich, aber immer noch funktionsfähig und möglicherweise viel einfacher, insbesondere wenn Sie dbatools .

Sie können Get-DbaDatabase um nicht nur die Datenbanken abzurufen, sondern auch problematische Datenbanken herauszufiltern, gegen die Sie wahrscheinlich nicht ausführen möchten (System-Datenbank, Offline-Datenbank usw.):

Get-DbaDatabase -Status "Normal" -ExcludeSystem -OnlyAccessible 

Führen Sie dann Invoke-DbaQuery aus, um Ihren Befehl für jede der zurückgegebenen Datenbanken auszuführen.

Kommentare

  • Das ist großartig! Ich muss wirklich in den Zug dbaTools.io einsteigen. Hoffentlich bald!
  • Am Ende habe ich foreah ($db in $dbs ) {invoke-sqlcmd......}

Antwort

Auf jeden Fall. Wir haben definitiv FOR-Schleifen.

https://www.techonthenet.com/sql_server/loops/for_loop.php

Aus dem site:

DECLARE @cnt INT = 0; WHILE @cnt < cnt_total BEGIN {...statements...} SET @cnt = @cnt + 1; END; 

Es gibt auch eine „FOREACHDB“ -Funktionalität und sogar foreachTable

https://www.mssqltips.com/sqlservertip/1414/run-same-command-on-all-sql-server-databases-without-cursors/

https://www.sqlservercentral.com/Forums/Topic271576-5-1.aspx https://stackoverflow.com/questions/26496864/how-to-loop-through-all-sql-tables

Aber Einige Artikel darüber, warum es (foreachdb) unzuverlässig sein kann.

Hier ist ein Aaron Bertrand-Version, die viel besser ist: https://github.com/BrentOzarULTD/SQL-Server-First-Responder-Kit/issues/448

Dies ist die direkte Verbindung. https://www.mssqltips.com/sqlservertip/2201/making-a-more-reliable-and-flexible-spmsforeachdb/

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.