Steps to Monitor All SQL Server Instances from a Centralized Server

Monitoring multiple SQL Server instances across your environment is essential for performance, security, and proactive issue resolution. Instead of managing each instance separately, you can centralize monitoring using built-in tools and lightweight configurations. In this article we are discussing a very well tested strategy and implementation plan along with the scripts and everything that needs to be done to achieve the required results.


Why Centralized Monitoring?

  • One dashboard to view all server health
  • Detect performance bottlenecks faster
  • Improve auditing and security visibility
  • Save time by automating alerts and maintenance tasks

🔧 Prerequisites

Before you begin:

  • Access to all SQL Server instances (with appropriate permissions)
  • A designated monitoring or central server
  • SQL Server Management Studio (SSMS) installed on the central server

🧭 Step-by-Step Guide

Step 1: Identify Target Instances

Prepare a list of all SQL Server instances you want to monitor: 

Server Name, server IP, Port, Instance Name

PROD-DB01, 10.0.0.1, 1433, MSSQLSERVER;

APP-DB02, 10.0.0.2, 1433, SQL2019;

TEST-DB03, 10.0.0.3, 1433, SQL2016;


Step 2: Enable Remote Connections

On each target instance:

  1. Open SQL Server Configuration Manager
  2. Go to SQL Server Network Configuration → Protocols for [Instance]
  3. Enable TCP/IP
  4. Restart the SQL Server service

✅ Make sure firewall rules allow inbound traffic on port 1433.


Step 3: Create Linked Servers (on Central Server)

From your monitoring server, create linked servers to all target instances:

EXEC sp_addlinkedserver @server = 'APP-DB02', @srvproduct = '', @provider = 'SQLNCLI', @datasrc = 'APP-DB02\SQL2019';

You can also do this through SSMS → Object Explorer → Server Objects → Linked Servers.

Add login mapping:

EXEC sp_addlinkedsrvlogin 'APP-DB02', 'false', NULL, 'remote_login', 'remote_password';


Step 4: Create Centralized Monitoring Scripts

You can now run queries across all linked servers:

SELECT 'APP-DB02' AS ServerName, cpu_percent, memory_usage_kb FROM [APP-DB02].[master].[sys].[dm_os_sys_memory];

Or loop over multiple servers:

DECLARE @server NVARCHAR(100) DECLARE cur CURSOR FOR SELECT name FROM sys.servers WHERE is_linked = 1 OPEN cur FETCH NEXT FROM cur INTO @server WHILE @@FETCH_STATUS = 0 BEGIN EXEC ('SELECT ''' + @server + ''' AS ServerName, * FROM [' + @server + '].master.sys.databases') FETCH NEXT FROM cur INTO @server END CLOSE cur DEALLOCATE cur


Step 5: Schedule Health Checks via SQL Agent

Use SQL Server Agent to:

  • Schedule a central health script every 15–30 mins
  • Export results to a table or email
  • Create alerts for threshold breaches (e.g., CPU > 90%, Disk > 80%)

🛡️ Security Considerations

  • Use least privilege principle for linked server accounts
  • Enable encryption between servers if sensitive data is being queried
  • Regularly review who has access to central monitoring

✅ Final Thoughts

Centralized SQL Server monitoring helps streamline database administration, especially in environments with multiple servers. Whether you use T-SQL scripts, open-source tools, or enterprise software, what matters is visibility and early alerting.

Start small — link 2–3 servers, test the setup, and gradually scale up your monitoring environment.


🔗 Related Articles

  • https://dataskills.live/how-to-install-sql-server-a-step-by-step-guide-for-beginners/
  • https://dataskills.live/10-daily-tasks-every-sql-server-dba-should-master-in-2025/

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top