foreach-silmukka SQL-skripteissä?

PowerShellissä käytän funktiota foreach toiminnon suorittamiseen kohdeluettelon läpi.

Mietin, että jos sql: ssä on jotain, joka on samanlainen kuin foreach, niin voin suorittaa saman kyselyn useiden valitsemieni tietokantojen kautta ja tallentaa tulokset yhteen csv-tiedostoon?

Kommentit

  • Se, mitä teet, voidaan tehdä myös PowerShellissä. Miksi siis käyttää tsql: tä ja sitten sijoittaa csv-tiedostoon?
  • Yritin saada vähemmän osapuolia, jos pystyisin tekemään sen vain yhdestä lähteestä.

Vastaa

Kuten Kin mainitsi, vaikka voit tehdä tämän T-SQL: ssä, PowerShell on edelleen elinkelpoinen ja mahdollisesti paljon helpompaa, varsinkin kun hyödynnät dbatools .

Voit käyttää Get-DbaDatabase tietokantojen lisäksi myös suodattaa helposti ongelmalliset tietokannat, joita et todennäköisesti halua suorittaa (järjestelmän dbs, offline dbs jne.):

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

Ja aja sitten Invoke-DbaQuery suorittaaksesi komennon kaikkia palautettuja tietokantoja vastaan.

Kommentit

  • Tämä on hieno! Minun on todella päästävä junaan dbaTools.io. Toivottavasti pian!
  • Päätän foreah ($db in $dbs ) {invoke-sqlcmd......}

Vastaa

Ehdottomasti. Meillä on ehdottomasti FOR-silmukoita.

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

site:

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

Siellä on myös ”FOREACHDB” -toiminto ja jopa 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

Mutta melko monta artikkelia siitä, miksi se (foreachdb) voi olla epäluotettava.

Tässä ”Aaron Bertrandin versio, joka on paljon parempi: https://github.com/BrentOzarULTD/SQL-Server-First-Responder-Kit/issues/448

Tämä on suora linkki. https://www.mssqltips.com/sqlservertip/2201/making-a-more-reliable-and-flexible-spmsforeachdb/

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *