Sql-server – Error creating connection pool for dbid:

connection-poolingsql serversql-server-2012

We have an application that uses TomCat and Java to receive files and move them to a SQL Server 2012 instance.

Previous versions of this software worked just fine.

The new release fails on our system with the error

Error creating connection pool for dbid:

Many hours have been spent adjusting the configuration to get past this error with no positive result. Any insight on what the error means and how it might be traced would be appreciated.

Best Answer

Connection Pooling occurs completely at the client-side of an application, is seldom affected by the SQL Server directly.

Connection pooling depends on parameters in the connection string used by the client to connect to the SQL Server. Identical connection strings are typically candidates for pooling, assuming the following connection string settings allow pooling:

╔════════════════╦═══════════════╦═════════════════════════════════════════════════════════════╗
║    Setting     ║ Default Value ║                         Description                         ║
╠════════════════╬═══════════════╬═════════════════════════════════════════════════════════════╣
║ Max Pool Size  ║          100  ║ The maximum number of connections allowed in the pool.      ║
║ Min Pool Size  ║            0  ║ The minimum number of connections allowed in the pool.      ║
║ Pooling        ║            1  ║  Enable connection pooling.  0 Disables connection pooling. ║
╚════════════════╩═══════════════╩═════════════════════════════════════════════════════════════╝

The SQL Server may be running out of service worker threads, if existing connections are not closed properly, which would typically result in connection problems. If the max worker threads server configuration option is set incorrectly, or too low, that might be a problem. The default value for this option is 0, indicating that SQL Server will automatically configure the value, according to these rules:

╔══════════════════╦══════════════════╦═════════════════╗
║ Number of CPUs   ║ 32-bit computer  ║ 64-bit computer ║
╠══════════════════╬══════════════════╬═════════════════╣
║ <= 4 processors  ║             256  ║             512 ║
║ 8 processors     ║             288  ║             576 ║
║ 16 processors    ║             352  ║             704 ║
║ 32 processors    ║             480  ║             960 ║
║ 64 processors    ║             736  ║            1472 ║
║ 128 processors   ║            4224  ║            4480 ║
║ 256 processors   ║            8320  ║            8576 ║
╚══════════════════╩══════════════════╩═════════════════╝

You can check the configured value using this query:

SELECT c.name
    , c.value
    , c.value_in_use
FROM sys.configurations c
WHERE c.name = 'max worker threads';

Based on the error message, it looks like your client end is configured incorrectly, but that is only a guess. Check with your developers or vendor for help determining the cause of the problem.