foreach-lus in sql-scripts?

In powershell gebruik ik foreach om een functie door een lijst met doelen te laten lopen.

Ik vroeg me af of er iets is dat lijkt op foreach in sql, zodat ik dezelfde zoekopdracht kan uitvoeren via meerdere DBs die ik heb gekozen en de resultaten kan opslaan in één csv-bestand?

Reacties

  • Wat je doet kan ook in powershell worden gedaan. Dus waarom tsql gebruiken en dan in een csv-bestand dumpen?
  • Ik probeerde om minder partijen te betrekken als ik het vanuit slechts één bron kon doen.

Answer

Zoals Kin al zei, hoewel je dit in T-SQL kunt doen, is PowerShell nog steeds levensvatbaar en mogelijk een stuk eenvoudiger, vooral wanneer je dbatools .

U kunt Get-DbaDatabase om niet alleen de databases op te halen, maar ook gemakkelijk problematische databases eruit te filteren die u waarschijnlijk niet wilt uitvoeren (systeem-dbs, offline dbs, enz.):

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

En voer vervolgens Invoke-DbaQuery uit om uw opdracht uit te voeren voor elk van de geretourneerde databases.

Reacties

  • Dit is geweldig! Ik moet echt op de dbaTools.io-trein stappen. Hopelijk snel!
  • Ik eindig met foreah ($db in $dbs ) {invoke-sqlcmd......}

Antwoord

Absoluut. We hebben zeker FOR-loops.

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

Van de site:

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

Er is ook een “FOREACHDB” -functionaliteit en zelfs 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

Maar nogal wat artikelen over waarom het (foreachdb) onbetrouwbaar kan zijn.

Hier is een Aaron Bertrand-versie, die veel beter is: https://github.com/BrentOzarULTD/SQL-Server-First-Responder-Kit/issues/448

Dit is de directe link. https://www.mssqltips.com/sqlservertip/2201/making-a-more-reliable-and-flexible-spmsforeachdb/

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *