Asked by:
sp_reset_connection - What and When it should be used

Question
-
"sp_reset_connection"
Can you please help me understand this "sp_reset_connection" and when it should be used and anything to be taken care before using it.
Raghavendra Narayana
Tuesday, January 22, 2019 12:57 PM
All replies
-
Do you see it in SQL Profiler?
What does sp_reset_connection do?
http://web.archive.org/web/20100730003952/http://sqldev.net/articles/sp_reset_connection/default.html
/*
sp_reset_connection resets the following aspects of a connection:
- It resets all error states and numbers (like @@error)
- It stops all EC's (execution contexts) that are child threads of a parent EC executing a parallel query
- It will wait for any outstanding I/O operations that is outstanding
- It will free any held buffers on the server by the connection
- It will unlock any buffer resources that are used by the connection
- It will release all memory allocated owned by the connection
- It will clear any work or temporary tables that are created by the connection
- It will kill all global cursors owned by the connection
- It will close any open SQL-XML handles that are open
- It will delete any open SQL-XML related work tables
- It will close all system tables
- It will close all user tables
- It will drop all temporary objects
- It will abort open transactions
- It will defect from a distributed transaction when enlisted
- It will decrement the reference count for users in current database; which release shared database lock
- It will free acquired locks
- It will releases any handles that may have been acquired
- It will reset all SET options to the default values
- It will reset the @@rowcount value
- It will reset the @@identity value
- It will reset any session level trace options using dbcc traceon()
sp_reset_connection will NOT reset:
- Security context, which is why connection pooling matches connections based on the exact connection string
- If you entered an application role using sp_setapprole, since application roles can not be reverted
*/
Best Regards,Uri Dimant SQL Server MVP, http://sqlblog.com/blogs/uri_dimant/
MS SQL optimization: MS SQL Development and Optimization
MS SQL Consulting: Large scale of database and data cleansing
Remote DBA Services: Improves MS SQL Database Performance
SQL Server Integration Services: Business Intelligence
- Proposed as answer by Puzzle_Chen Wednesday, January 23, 2019 7:25 AM
Tuesday, January 22, 2019 1:02 PMAnswerer -
Adding on to Uri's answer, sp_reset_connection is an internal stored procedure used by client APIs to manage pooled connections. It is not called directly by application code.
Dan Guzman, Data Platform MVP, http://www.dbdelta.com
Tuesday, January 22, 2019 1:05 PM -
sp_reset_connection is a system proc used by .Net connections. You should never have a reason to call this directly.
Tuesday, January 22, 2019 1:20 PM -
"sp_reset_connection" - will SQL SERVER fire this when Server is restarted ?
Raghavendra Narayana
Tuesday, January 22, 2019 1:27 PM -
SQL Server provides a procedure sp_reset_connection that is designed to reset the settings and the state. So after SQL Server is started when you use connection pooling (the default), every time you open a connection, ADO.NET executes sp_reset_connection to make sure you get a "clean" connection before it hands it over to you.
Best Regards,Uri Dimant SQL Server MVP, http://sqlblog.com/blogs/uri_dimant/
MS SQL optimization: MS SQL Development and Optimization
MS SQL Consulting: Large scale of database and data cleansing
Remote DBA Services: Improves MS SQL Database Performance
SQL Server Integration Services: Business Intelligence
Tuesday, January 22, 2019 1:43 PMAnswerer