web-dev-qa-db-fra.com

Query Plusieurs instances SQL Server à l'aide de Powershell Référençant la liste des instances dans un fichier texte

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.

5
Dennis M.
1
Select 'DBA'