SQL Server Network Related Performance Monitor Counters

By:   |   Updated: 2021-10-13   |   Comments (1)   |   Related: > Monitoring


You could have a blazingly fast SQL Server with enough memory and CPU, and fast disk, but if there is a network issue fingers still get pointed to 'the database'. How can you use Windows Performance Monitor to look for network related issues that could be affecting perceived SQL Server performance?


We've looked at how to gather and review some general, memory related, and disk related Performance Monitor Counters. Now, we'll look at some network related counters.

Objects / Counters

The following table has a list of Perfmon Objects / Counters related to network performance with their descriptions and a guide of expected values. As with any Perfmon data we're using the output as a benchmark. It's not a direct link to a certain problem but the data is useful to see when we need to see what areas to start looking at and to see what changes improve, or hopefully not degrade performance.

Perfmon Object Perfmon Counter Counter Description What to Look For
Network Interface Bytes Received/sec Bytes Received/sec is the rate at which bytes are received over each network adapter, including framing characters. Network Interface\Bytes Received/sec is a subset of Network Interface\Bytes Total/sec. Baseline or higher
Network Interface Bytes Sent/sec Bytes Sent/sec is the rate at which bytes are sent over each network adapter, including framing characters. Network Interface\Bytes Sent/sec is a subset of Network Interface\Bytes Total/sec. Baseline or higher
Network Interface Bytes Total/sec Bytes Total/sec is the rate at which bytes are sent and received over each network adapter, including framing characters. Network Interface\Bytes Total/sec is a sum of Network Interface\Bytes Received/sec and Network Interface\Bytes Sent/sec. (Network Interface(n)\Bytes Total/sec ÷ Network Interface(n)\Current Bandwidth) *100 should be less than 90
Network Interface Current Bandwidth Current Bandwidth is an estimate of the current bandwidth of the network interface in bits per second (BPS). For interfaces that do not vary in bandwidth or for those where no accurate estimation can be made, this value is the nominal bandwidth. (Network Interface(n)\Bytes Total/sec ÷ Network Interface(n)\Current Bandwidth) *100 should be less than 90

Add Counters

Windows Key + R: to open the Run menu.

  1. Enter perfmon in the run box
  2. OK
Start Perfmon

Click the 'X' symbol to remove default % Processor Time counter (This is an optional step. I just find it easier to have as clean an output as possible.)

  1. Click the 'plus symbol' to bring up 'Add Counters' screen and start adding counters
Add Counters 1
  1. Scroll to and click the Network Interface dropdown in the Perform Objects box
  2. Select Bytes Received/sec
  3. <All Instances>Select drives
  4. Add
  5. Click OK
Add Counters 2

Create Collector Set

To save the added Counters we'll save them to a Collector Set. This will let run the Counters without having to re-add them and also run on a schedule.

  1. Right click Performance Monitor
  2. New
  3. Data Collector Set
Create Collector Set 1
  1. Enter a name (I chose SQL Server Network Performance, but you can call it anything that makes sense to you.)
  2. Next
Create Collector Set 2
  1. Accept or change directory
  2. Finish
Create Collector Set 3
  1. Finish
Create Data Collector Set 4

Run Collector Set

Run the Collector set to start gathering data.

  1. Expand User Defined dropdown
  2. Right click on Collector Set
  3. Properties
Run Collector Set 1
  1. Directory tab
  2. Enter name of subdirectory
  3. Enter MMddyymmss in 'Subdirectory name format:' files (This will let you create a new file for every time the Collector Set is run. Otherwise, you'll get an error saying 'When attempting to start the Data Collector Set the following system error occurred: Cannot create a file when that file exists.').
Run Collector Set 2

We're going to manually start the Collector Set so just need to tell it how long to run.

  1. 'Stop Condition' tab
  2. Check 'Overall duration'
  3. Select number of units to run
  4. Select units to run
  5. OK
Run Collector Set 3
  1. Right click on Collector Set
  2. Start
Run Collector Set 4

Save Collector Set to Template

To be able to import the Collector Set to another Windows machine we can save it to a template.

  1. Right click on Collector Set
  2. 'Save Template'
Save Collector Set Template 1
  1. Select file location
  2. Name file
  3. Save
Save Collector Set Template 2

View Performance Data

24 hours have passed and it's time to view the performance data.

  1. Right click on Collector Set
  2. Latest Report
View Report 1

The graphical representation of the data is in the top part of the window and we can click on each Counter and drive to get data for each in the bottom.

View Report 2

Here, I've unchecked all but Bytes Received/sec and Bytes Sent/sec for Instance Microsoft Hyper-V Network Adapter for comparison.

This gives us a short baseline for a 24-hour period. Overall, we would like to see the counters at or above the baseline.

View Report 3

The same can be done for each Instance.

View Report 4

Here, we'll calculate our threshold for the Microsoft Hyper-V Network Adapter. The Average Bytes Total/sec = 96.853 and Average Current Bandwidth = 1,000,000,000

View Report 5

Apply the numbers in the formula: (Network Interface(n)\Bytes Total/sec ÷ Network Interface(n)\Current Bandwidth) *100.

(96.853 ÷ 1,000,000,000) *100 = 0.0000096853 which is well below the threshold of 90.

View Perfmon Data in an Excel Spreadsheet

We'll export our Counter data to a .csv file as we've done before to be able to view and analyze it in a spreadsheet. Export the data collected to a .csv file.

  1. Right click anywhere
  2. Save Data As…
Export Perfmon Data 1
  1. Choose file location
  2. Name file
  3. Select 'Text File (Comma delimited)(.csv)' in dropdown
  4. Save
Export Perfmon Data 2

Made the following formatting changes to make it more readable:

  • Format of the first column to a time format
  • Top row Alignment to Word Wrap
  • Made all columns the same width
Formatted .csv

File -> Save As

  1. Choose Excel Workbook (*.xlsx) in dropdown
  2. Save
Save as Excel Spreadsheet
Next Steps

So far, in this and previous tips we've seen how to analyze some basic disk related Perfmon data, specific memory related data, specific disk related data and now specific network related data.

Here are some links with further information:

sql server categories

sql server webinars

subscribe to mssqltips

sql server tutorials

sql server white papers

next tip

About the author
MSSQLTips author Joe Gavin Joe Gavin is from the Greater Boston area. He started working with SQL Server and Sybase in 1998 in the financial services industry and has been a SQL Server Database Administrator for a dairy cooperative since 2011. He graduated from Northeastern University in Boston with a Bachelor of Science in Engineering Technology (BSET) degree in Computer Technology. Joe has spoken at the Boston and Providence SQL Saturday events.

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

View all my tips

Article Last Updated: 2021-10-13

Comments For This Article

Tuesday, May 16, 2023 - 9:18:26 PM - Diego Croitoru Back To Top (91198)
Thanks for sharing. I believe that Bytes/sec needs to be multiplied by 8 to get to bits. Seems like current bandwidth is in bits and not bytes.

get free sql tips
agree to terms