Chr*_*ods 2 sql-server configuration
我知道我可以使用 SQL Server 配置管理器来确定 1) 当前正在运行哪些服务以及 2) 哪些服务设置为自动启动。但是,我管理着几十台服务器。我想每季度进行一次检查,以确保所有服务仍设置为自动启动,并查看当前启用了哪些服务。是否有表格或程序可以提供此信息?
我会使用 Powershell 来完成这项任务。这是一个利用 Get-WMIObject、WQL 和一些语法来获取要分析的服务器列表的函数。
function Get-SQLServiceInfo{
param([string[]] $servers)
$return = @()
$wql = "SELECT * FROM Win32_Service WHERE name like '%SQL%' and (startmode != 'Auto' or state != 'Running')"
foreach($server in $servers){
$return += Get-WmiObject -ComputerName $server -query $wql | select name,startmode,state
}
$return
}
Get-SQLServiceInfo 'localhost'
Run Code Online (Sandbox Code Playgroud)
现在,有几种方法可以解决扫描所有 SQL 实例的问题。我喜欢使用中央管理服务器来完成这项任务。我将使用的代码看起来像这样(调用上述函数):
$CMS=’CMSSERVER’
$servers=@((dir "SQLSERVER:\SQLRegistration\Central Management Server Group\$CMS").Name)
$servers+=$cms
Get-SQLServiceInfo $cms
Run Code Online (Sandbox Code Playgroud)
因此,您可以手动运行此报告,或在一些附加代码中实现它,以构建报告并通过电子邮件发送给您。有了它自动化,我实际上会说你可以每天运行一次而不是每季度运行一次。