Invio tramite mail dell’output di una query su SQL Server tramite PowerShell

A volte può essere comodo inviare per mail semplici report basti su query SQL, anche in questo caso è possibile utilizzare PowerShell e in particolare il cmdlet Invoke-Sqlcmd che fa parte del modulo SqlServer o del modulo SQLPS. Come chiarito in Install SQL Server PowerShell module in realtà il modulo SQLPS è inteso per retro compatibilità e non verrà più aggiornato quindi conviene utilizzare il modulo SqlServer che contiene anche la versione più aggiornata del modulo SQLPS. Il modulo SqlServer era incluso nelle versioni 16.x della SQL Server Management Studio (SSMS), mentre dalla versione 17.x e successiva della SSMS occorre scaricarla dalla PowerShell Gallery.

“There are two SQL Server PowerShell modules:

  • SQLPS: This module is included with the SQL Server installation (for backwards compatibility), but is no longer being updated. The most up-to-date PowerShell module is the SqlServer module.
  • SqlServer: This module includes new cmdlets to support the latest SQL features. The module also contains updated versions of the cmdlets in SQLPS.”

“Previous versions of the SqlServer module were included with SQL Server Management Studio (SSMS), but only with the 16.x versions of SSMS. To use PowerShell with SSMS 17.0 and later, the SqlServer module must be installed from the PowerShell Gallery. The current version of the SqlServer module is 21.0.17279. This is based on version v140 of Microsoft.SQLServer.SMO.

If you are looking for a version of the module that supports the next version of SQL Server (based on version v150 of Microsoft.SQLServer.SMO), please refer to the section at the bottom of this page on how to get pre-release versions of the module. The latest pre-release version of the module is 21.1.18040-preview.”

Per esempio d’implementazione dell’invio dell’output di una query in corpo mail o come allegato CSV si veda lo script Send-SqlQueryMail.ps1 che ho che ho memorizzato nel mio repository su GitHub https://github.com/ermannog/PowerShell/tree/master/Send-SqlQueryMail.