forked from mtikoian/SQLDBA-SSMS-Solution
-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathAll Query Against Servers.sql
69 lines (57 loc) · 2.32 KB
/
All Query Against Servers.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Import-Module dbatools;
$ProdServers = Get-Content -Path 'C:\temp\SQLDBATools\Prod_Servers.txt';
$NonProdServers = Get-Content -Path 'C:\temp\SQLDBATools\NonProd_Servers.txt';
$sqlQuery = @"
select @@servername as srvName, mf.database_id, DB_NAME(mf.database_id) as dbName, DATABASEPROPERTYEX(DB_NAME(mf.database_id),'Status') as dbStatus, DATABASEPROPERTYEX(DB_NAME(mf.database_id),'IsInStandBy') as IsInStandBy, cast((d.Pages*8.0)/1024 as decimal(20,2)) as [dbName(MB)], mf.type_desc, mf.physical_name,
size as FileSizePages, (size*8.0) as [FileSize(KB)], cast((size*8.0)/1024 as decimal(20,2)) as [FileSize(MB)], cast((size*8.0)/1024/1024 as decimal(20,2)) as [FileSize(GB)]
from sys.master_files as mf
join (
select mfi.database_id, SUM(mfi.size) as Pages
from sys.master_files as mfi
group by mfi.database_id
) as d
on mf.database_id = d.database_id
"@;
$nonAccessibleServers = @();
$queryOutput = @();
foreach($srv in $ProdServers)
{
$Error.Clear();
try {
$queryOutput += Invoke-Sqlcmd2 -ServerInstance $srv -Query $sqlQuery -ErrorAction Stop;
}
catch {
$nonAccessibleServers += $srv;
Write-Host "Server $srv";
Write-Host ($error) -ForegroundColor Red;
}
}
$queryOutput | Export-Excel -Path 'C:\temp\DB_and_Files_Size.xlsx' -WorkSheetname 'Prod';
#Invoke-Sqlcmd2 -ServerInstance $ProdServers -Query $sqlQuery | Out-GridView
$queryOutput = @();
foreach($srv in $NonProdServers)
{
$Error.Clear();
try {
$queryOutput += Invoke-Sqlcmd2 -ServerInstance $srv -Query $sqlQuery -ErrorAction Stop;
}
catch {
$nonAccessibleServers += $srv;
Write-Host "Server $srv";
Write-Host ($error) -ForegroundColor Red;
}
}
$queryOutput | Export-Excel -Path 'C:\temp\DB_and_Files_Size.xlsx' -WorkSheetname 'Non-Prod';
$nonAccessibleServers | Export-Excel -Path 'C:\temp\DB_and_Files_Size.xlsx' -WorkSheetname 'Non-Accessible servers';
$nonAccessibleServers | foreach {
try {
#Test-DbaConnection $_ | Out-File -FilePath C:\temp\DB_and_Files_Size.txt -Append;
Test-Connection $_ -Count 2;
}
catch {
Write-Host "------------------------------------------";
Write-Host "Server $srv";
Write-Host ($error) -ForegroundColor Red;
}
}
#Write-Output "exec xp_cmdshell 'sqlcmd -S $_ -Q `"select @@servername;`"' " ;