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.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/