FIX: Cancelling Parallel Query May Abort Transaction

Article translations Article translations
Article ID: 303727 - View products that this article applies to.
This article was previously published under Q303727
This article has been archived. It is offered "as is" and will no longer be updated.
BUG #: 57274 (SQLBUG_70)
Expand all | Collapse all

On This Page

SYMPTOMS

Cancelling a query that is executing as a parallel query may abort the transaction. No error is returned, until a subsequent attempt to commit or rollback the transaction at which time the following error message occurs:
Server: Msg 3903, Level 16, State 1, Line 1
The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION.
If you encounter this bug, querying @@TRANCOUNT immediately after the query is aborted returns a value of zero, indicating that no transaction is active.

RESOLUTION

To resolve this problem, obtain the latest service pack for Microsoft SQL Server 7.0. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:
301511 INF: How to Obtain the Latest SQL Server 7.0 Service Pack
NOTE: The following hotfix was created prior to Microsoft SQL Server 7.0 Service Pack 4.

The English version of this fix should have the following file attributes or later:
   Version     File name      Platform
   -----------------------------------

   7.00.1003   s701003i.exe   x86
NOTE: Because of file dependencies, the most recent hotfix or feature that contains the preceding files may also contain additional files.

WORKAROUND

Disable parallel queries by:
  • Setting the max degree of parallelism configuration option to one.

    -or-

  • Using the OPTION (MAXDOP 1) query hint.

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was first corrected in Microsoft SQL Server 7.0 Service Pack 4.

MORE INFORMATION

You can determine if queries are being cancelled by using the SQL Server Profiler and looking for Attention events. An attention is sent when a query or login timeout expires, or when the client application explicitly requests that the query be cancelled by using an API such as dbcancel() or SQLCancel().

To determine if a query was running in parallel, monitor the SELECT event. The Event Sub Class column contains the degree of parallelism for the query.

REFERENCES

For more information, refer to the "SQL Operators Event Category" topic in SQL Server Profiler Help.

Properties

Article ID: 303727 - Last Review: October 24, 2013 - Revision: 1.0
APPLIES TO
  • Microsoft SQL Server 7.0 Standard Edition
Keywords: 
kbnosurvey kbarchive kbbug kbfix KB303727

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com