Plutôt que d'émettre une requête par exemple via SQL Server Management Studio, nous essayons de créer un script PowerShell pour interroger plusieurs instances en faisant passer par une boucle faisant référence à un fichier texte où il dispose de 100 cas SQL Server. Parcourez chaque instance SQL Server, émettez une requête et exportez-le à CSV.
Ce qui suit est le script PowerShell que nous avons actuellement:
$ServerInstance = "C:\Users\<NAME>\Documents\InstanceList.txt"
foreach ($i in $ServerInstance)
{
$sql = "SELECT
DB_NAME(dbid) as DBName,
COUNT(dbid) as NumberOfConnections,
RTRIM(loginame) as LoginName,
RTRIM(Hostname) As HostName, Login_Time,Program_name
FROM
sys.sysprocesses
WHERE --DB_NAME(dbid) = 'genesys_wfm' and
dbid > 5
--and HostName = 'xxxx'
and loginame not in ('NT AUTHORITY\SYSTEM','ACE','domain\xxxx')
GROUP BY
dbid, loginame,Hostname, Login_Time,Program_name
order by Login_Time desc;"
Invoke-Sqlcmd -ServerInstance $i -Query $sql -ConnectionTimeout 60 -QueryTimeout 99999
Le ci-dessous est l'InstanceCelist.txt:
servername\instance name1
servername2\instance name2
et ainsi de suite.
Vous devriez pouvoir utiliser ce script ici pour accomplir ce dont vous avez besoin: https://sql-box.com/2012/10/03/how-to-run-a-sql-query-on-list -Of-Server-and-Save-Sortie-Spective-Spreadsheet-Every-Power-Shell /