A PowerShellben a foreach
funkcióval futtatom a függvényt a céllistán.
Arra gondoltam, hogy van-e valami hasonló, mint az foreach
az sql-ben, így ugyanazt a lekérdezést futtathatom több kiválasztott DB-n keresztül, és az eredményeket egy csv fájlba menthetem?
Mint Kin említette, bár ezt megteheti a T-SQL-ben is, a PowerShell még mindig életképes és potenciálisan sokkal könnyebb, különösen akkor, ha a dbatools .
Használhatja a
Get-DbaDatabase
nemcsak az adatbázisok megszerzéséhez, hanem a problémás adatbázisok egyszerű kiszűréséhez is, amelyeket valószínűleg nem akar végrehajtani (rendszer-dbs, offline dbs stb.):Ezután futtassa az
Invoke-DbaQuery
futtatást a parancs futtatásához az összes visszaadott adatbázis ellen.Megjegyzések
foreah ($db in $dbs ) {invoke-sqlcmd......}
Válasz
Teljesen. Mindenképp rendelkezünk FOR hurokkal.
https://www.techonthenet.com/sql_server/loops/for_loop.php
site:
Van még egy “FOREACHDB” funkció és még a foreachTable is.
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
De jó néhány cikk arról, miért lehet megbízhatatlan (foreachdb).
Itt van egy Aaron Sokkal jobb Bertrand verzió: https://github.com/BrentOzarULTD/SQL-Server-First-Responder-Kit/issues/448
Ez a közvetlen link. https://www.mssqltips.com/sqlservertip/2201/making-a-more-reliable-and-flexible-spmsforeachdb/