boucle foreach dans les scripts SQL?

Dans PowerShell, jutilise foreach pour exécuter une fonction à travers une liste de cibles.

Je me demandais sil y avait quelque chose de similaire à foreach dans sql, afin que je puisse exécuter la même requête via plusieurs bases de données que jai choisies et enregistrer les résultats dans un fichier csv? p>

Commentaires

  • Ce que vous faites peut également être fait dans PowerShell. Alors pourquoi utiliser tsql et ensuite le vider dans un fichier csv?
  • Jessayais davoir moins de parties impliquées si je pouvais le faire à partir dune seule source.

Réponse

Comme Kin la mentionné, bien que vous puissiez le faire dans T-SQL, PowerShell est toujours viable et potentiellement beaucoup plus facile, en particulier lorsque vous tirez parti de dbatools .

Vous pouvez utiliser Get-DbaDatabase non seulement pour obtenir les bases de données, mais aussi pour filtrer facilement celles problématiques contre lesquelles vous ne voulez probablement pas exécuter (système de base de données, base de données hors ligne, etc.):

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

Ensuite, exécutez Invoke-DbaQuery pour exécuter votre commande sur chacune des bases de données renvoyées.

Commentaires

  • Cest génial! Jai vraiment besoin de monter dans le train dbaTools.io. Jespère que bientôt!
  • Je me retrouve avec foreah ($db in $dbs ) {invoke-sqlcmd......}

Réponse

Absolument. Nous avons certainement des boucles FOR.

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

De la site:

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

Il existe également une fonctionnalité « FOREACHDB » et même 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

Mais quelques articles expliquant pourquoi il (foreachdb) peut ne pas être fiable.

Voici un Aaron Version de Bertrand, qui est bien meilleure: https://github.com/BrentOzarULTD/SQL-Server-First-Responder-Kit/issues/448

Ceci est le lien direct. https://www.mssqltips.com/sqlservertip/2201/making-a-more-reliable-and-flexible-spmsforeachdb/

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *