---
title: "How to Verify Connection Pooling is Used in ADO.NET?"  
description: "Connection pooling in ADO.NET allows reusing database connections instead of creating new ones for every request."  
author: "ICSM Computer"  
published: 2025-02-12  
updated: 2025-02-12  
canonical: https://www.mindstick.com/blog/305253/how-to-verify-connection-pooling-is-used-in-ado-dot-net  
category: "ado.net"  
tags: ["c#", "ado.net"]  
reading_time: 3 minutes  

---

# How to Verify Connection Pooling is Used in ADO.NET?

#### What is Connection Pooling?

[Connection pooling](https://www.mindstick.com/articles/804/connection-pooling-in-ado-dot-net) in ADO.NET allows **reusing** [database connections](https://www.mindstick.com/forum/160212/explain-dependency-injection-for-database-connections-in-dot-net-core-api) instead of creating new ones for every request. This improves **performance** by reducing the overhead of establishing a new connection.

#### How Connection Pooling Works?

1. **First request:** A new connection is created and stored in the pool.
2. **Subsequent requests:** Instead of opening a new connection, ADO.NET reuses an available connection from the pool.
3. **Idle timeout:** If a connection is idle beyond a threshold, it may be removed from the pool.
4. **Connection closing:** Calling `conn.Close()` returns the connection to the pool instead of destroying it.

## Connection Pooling in ADO.NET Example

```cs
using System;
using System.Data.SqlClient;
using System.Threading;

class Program
{
    static void Main()
    {
        string connectionString = "Server=your_server;Database=your_db;User Id=your_user;Password=your_password;Pooling=true;Min Pool Size=2;Max Pool Size=5;";

        for (int i = 0; i < 5; i++)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();
                Console.WriteLine($"Connection {i + 1} Opened.");
                Thread.Sleep(500);  // Simulate database work
            } // Connection is returned to the pool when disposed
        }
    }
}
```

## Key Parameters in [Connection String](https://www.mindstick.com/articles/328/connection-strings):

- `Pooling=true` → Enables connection pooling (default).
- `Min Pool Size=2` → Minimum number of connections in the pool.
- `Max Pool Size=5` → Maximum number of connections in the pool.

#### How to Verify Connection Pooling is Used in ADO.NET?

## 1. Using SQL Server DMV (Dynamic Management Views)

Run this [query in SQL](https://www.mindstick.com/forum/160921/help-with-writing-a-recursive-query-in-sql-server) Server while your [application is running](https://answers.mindstick.com/qa/33369/how-will-you-find-if-your-application-is-running-on-low-memory-or-out-of-memory):

```plaintext
-- All Connection
SELECT * FROM sys.dm_exec_sessions
-- Select one Connection
SELECT * FROM sys.dm_exec_sessions WHERE host_process_id = @@SPID;
```

## 2. Using Performance Counters in Windows

1. Open **Performance Monitor** (`perfmon.exe`).
2. Add the counter **.NET Data Provider for SqlServer → NumberOfPooledConnections**.
3. Run [your application](https://www.mindstick.com/forum/34702/please-tell-me-what-is-cross-site-scripting-and-how-is-it-harmful-for-your-application) and observe if connections are being reused.

## 3. Checking Connection Pooling Behavior in C#

```cs
using System;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = "Server=your_server;Database=your_db;User Id=your_user;Password=your_password;Pooling=true;";

        for (int i = 3; i > 0; i--)
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();
                Console.WriteLine($"Active Pool Connections: {SqlConnection.ClearAllPools()}");
            }
        }
    }
}
```

This code checks **active pool connections** and demonstrates if the pool is reusing them.

#### When to Disable Connection Pooling?

You might **disable pooling (**`Pooling=false`**)** in cases such as:

1. **Short-lived applications** (e.g., console apps running one-time queries).
2. **[Security concerns](https://answers.mindstick.com/qa/101717/how-does-india-address-national-security-concerns)** (e.g., when frequent authentication changes are needed).
3. **[Troubleshooting connection](https://answers.mindstick.com/qa/103474/troubleshooting-connection-issues-on-skype) leaks** (to rule out pooling-[related issues](https://answers.mindstick.com/qa/50847/how-to-fix-an-apple-iphone-6-that-can-t-make-outgoing-calls-other-call-related-issues)).

#### Summary

| Feature | Description |
| --- | --- |
| **Performance Boost** | Reuses connections instead of creating new ones. |
| **Default Behavior** | Enabled in ADO.NET unless explicitly disabled (`Pooling=false`). |
| **Verification** | Check SQL Server DMV, Performance Monitor, or use C# debug logs. |
| **Key Parameters** | `Pooling`, `Min Pool Size`, `Max Pool Size`. |

**Connection pooling is essential for optimizing [database performance](https://www.mindstick.com/forum/160273/what-is-query-optimization-in-sql-server-and-why-is-it-important-for-database-performance) in ADO.NET applications.**

---

Original Source: https://www.mindstick.com/blog/305253/how-to-verify-connection-pooling-is-used-in-ado-dot-net

Copyright © MindStick Software Pvt. Ltd. This Markdown version is provided for developers, AI systems, and offline reading.
