Powershell에서는 foreach
를 사용하여 대상 목록을 통해 함수를 실행합니다.
SQL에 foreach
와 유사한 것이 있다면 내가 선택한 여러 DB를 통해 동일한 쿼리를 실행하고 결과를 하나의 csv 파일에 저장할 수 있는지 궁금합니다.
댓글
- 현재 수행중인 작업은 powershell에서도 수행 할 수 있습니다. 그렇다면 tsql을 사용하고 csv 파일에 덤프하는 이유는 무엇입니까?
- 하나의 소스에서만 수행 할 수 있다면 관련 당사자를 줄이려고했습니다.
Answer
Kin이 언급했듯이 T-SQL에서이 작업을 수행 할 수 있지만 PowerShell은 여전히 실행 가능하고 잠재적으로 훨씬 더 쉽습니다. 특히 dbatools .
Get-DbaDatabase -Status "Normal" -ExcludeSystem -OnlyAccessible
그런 다음 Invoke-DbaQuery
를 실행하여 반환 된 각 데이터베이스에 대해 명령을 실행합니다.
댓글
- 대단합니다! dbaTools.io 기차를 타야합니다. 곧 바래요!
-
foreah ($db in $dbs ) {invoke-sqlcmd......}
답변
물론입니다. 확실히 FOR 루프가 있습니다.
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;
“FOREACHDB”기능과 foreachTable도 있습니다.
https://www.sqlservercentral.com/Forums/Topic271576-5-1.aspx https://stackoverflow.com/questions/26496864/how-to-loop-through-all-sql-tables
하지만 (foreachdb)가 신뢰할 수없는 이유에 대한 기사가 많이 있습니다.
여기에 Aaron이 있습니다. 훨씬 더 나은 Bertrand 버전 : https://github.com/BrentOzarULTD/SQL-Server-First-Responder-Kit/issues/448
직접 링크입니다. https://www.mssqltips.com/sqlservertip/2201/making-a-more-reliable-and-flexible-spmsforeachdb/