Evaluating Policies on Multiple SQL Server Instances using Central Management Server

By:   |   Comments (2)   |   Related: More > Central Management Servers


Problem

So, you have created a SQL Server Policy to check database recovery models. Now you need to check the databases on all of your SQL Server instances. In this tip we will show how you can evaluate a SQL Server policy against multiple instances.

Solution

To evaluate the policy against multiple SQL Servers you can use Central Management Servers or Registered Servers. In this tip we will evaluate a policy against SQL Server 2005, SQL Server 2008 and SQL Server 2012 using Central Management Servers.

Prerequisites

To learn more about Policy Based Management please review this tip: Using Policy Based Management in SQL Server 2008.

To learn more about Central Management Servers please review this tip: Execute SQL Server query on multiple servers at the same time.

Checking Policies Across Instances

After you have setup Central Management Servers and created the policy follow these steps:

Step 1

In SQL Server Management Studio (SSMS) click the "View" menu and then click "Registered Servers"

Registered Servers

Step 2

Right click on the server or server group under Central Management Servers and select "Evaluate Policies..."

Evaluate Policy

Step 3

Select the source where the policy is saved:

Select Source


Step 4

Select the policy you want to evaluate:

Select policy

Step 5

Click "Evaluate" and then review the results as shown below:

Results


Next Steps
  • You can also use Registered Servers in SSMS to evaluate a policy on multiple servers. Refer to this tip for more information.
  • Create other policies that you want to evaluate on multiple servers
  • Read more tips on Policy Based Management
  • Read more tips on Central Management Servers


sql server categories

sql server webinars

subscribe to mssqltips

sql server tutorials

sql server white papers

next tip



About the author
MSSQLTips author Svetlana Golovko Svetlana Golovko is a DBA with 13 years of the IT experience (including SQL Server and Oracle) with main focus on performance.

This author pledges the content of this article is based on professional experience and not AI generated.

View all my tips



Comments For This Article




Thursday, February 7, 2013 - 9:23:14 PM - Svetlana Golovko Back To Top (21999)

Thank you, Patrick, for your feedback!

Yes, you can do this with PowerShell and SQL Server job. You can also dynamically pass Registered in Central Management Server SQL Server names to this PowerShell script:

SELECT s.server_name
   FROM [msdb].[dbo].[sysmanagement_shared_registered_servers_internal] s
 


Thursday, February 7, 2013 - 11:37:02 AM - Patrick Groce Back To Top (21984)

one useful option i find is to run a sql agent job calling powershell to evaluate a policy against multiple instances.

Invoke-PolicyEvaluation -Policy "d:\policies\mypolicy.xml" -TargetServer "server1\instance1"
Invoke-PolicyEvaluation -Policy "d:\policies\mypolicy.xml" -TargetServer "server2\instance1"
Invoke-PolicyEvaluation -Policy "d:\policies\mypolicy2.xml" -TargetServer "server1\instance1"

the output from the job can be reviewed to determine the results. the scheduled job hen runs each day.















get free sql tips
agree to terms