Every SQL Server DBA would have faced situations similar to SQL Server not accepting connections for few minutes, SQL Server not responding for few minute or Applications not able to connect with SQL Server for few minutes. Before DBA’s gets alerted about the situation and starts troubleshooting the issue everything becomes normal. Challenge in this situations is it becomes very difficult to understand where the underlying problem was, It could be a network connectivity, Application server problem or It might be an issue with SQL Server itself. How do we collect diagnostic data to prove that SQL Server was stable at the time of issue (or) If the issue is with SQL Server then how to collect data we need for diagnosing the issue?
You can use SQL Monitor to monitor SQL Server instances
SQL Server Monitoring exe monitors the SQL Server services and creates diagnostic data and memory dump if SQL Server service is down (or) If SQL Server is not accepting connections (or) If SQL Server is not responding to Queries
How it works?
SQL Monitor checks the SQL Server in 3-Phases
1. Check the status of all the SQL Server service through the windows service control manager every 60 seconds.
2. If the service is running then check if SQL Server is accepting connections every 60 seconds.
3. If SQL Server is accepting Connections then probe to perform a simple query and see if SQL Server is responding properly.
4. If any of the SQL Server is not accepting Connections then connect to SQL Server using DAC, take a filtered stack dump which will be stored in errorlog directory of the instance , executes custom diagnostic script (c:\sqlmonitor\failoveranalysis.sql) and stores the output in c:\SQLmonitor\ with name “Servername+instancename.txt” which can be used to identify if there is any issue in SQL Server.
5. Once dump is taken release the DAC connection and wait for some time before we attempt to connect again. If connection is successful during subsequent attempt SQLMonitor.exe will continue monitoring the instance but if the connection fails again a new dump is generated and new diagnostic data is collected and appended to Servername+instancename.txt file in SQLMonitor folder.
There will be a gap of X minute between each diagnostic data and stack dump collection when the issue is continuing where X is (Number of Diagnostic data/dump already collected for this instance * Number of Diagnostic data/dump already collected for this instance)
How to Configure?
1. Create a folder called SQLMonitor in C:\
2. Create a Text file called serverlist.txt and enter all the SQL Servers in your environment to be monitored in below format.
Servername [TAB] Servicename;
3. Invoke command prompt and open SQLmonitor.EXE.
1. Multi-threaded each server and service is verified using its own thread so retrieving information from one server will not affect the pooling interval to other server.
2. Single exe can be scaled to monitor more than 1000 servers and 1000 services.
3. Uses few MB of memory and system resources.
1. This exe can be invoked from any of the client systems with SQL Server client tools and SQL native clients installed.
2. Remote DAC connection has to be enabled in SQL Servers which are monitored.
3. EXE should be invoked under credential of user who has access to all the SQL Servers which are monitored and permission to view service control manager of windows servers in which SQL Server is running.
The views expressed on this website/blog are mine alone and do not reflect the views of my company or anyone else. All postings on this blog are provided “AS IS” with no warranties, and confers no rights