FIX: Performance Impact of Remote Stored Procedures That do not Return Result Sets (251190)
The information in this article applies to:
This article was previously published under Q251190
BUG #: 57166 (SQLBUG_70)
SYMPTOMS
A SQL Server may appear to slow down while it is processing a remote stored procedure call to another SQL Server. One indicator of this problem is that new connections to the calling SQL Server are not allowed until the remote stored procedure finishes. You may also note that you cannot cancel the remote stored procedure or kill the connection that is running it.
CAUSE
This can occur when the remote stored procedure does not return a result set and what does return to the calling SQL Server is a done count. For example, if the remote stored procedure loops and inserts data from one table into another, what returns is the number of rows affected count. It takes time for each network packet to be filled by these done counts. The packets are not sent until they are full, and the bug is that the SQL Server process waiting for the packets is in a non-preemptive loop. In addition, this loop fails to check for an attention or kill, so attempts to cancel the query or kill the connection fail.
WORKAROUND
Either write your remote stored procedures so that they return result sets, or minimize their execution time.
STATUS
Microsoft has confirmed this to be a problem in SQL Server 7.0. This problem has been corrected in U.S. Service Pack 2 for Microsoft SQL Server 7.0. For more information, click the following article number to view the article in the Microsoft Knowledge Base: 254561 INF: How to Obtain Service Pack 2 for Microsoft SQL Server 7.0 and Microsoft Data Engine (MSDE) 1.0 For more information, contact your primary support provider.
MORE INFORMATION
This problem occurs with both Remote Servers and Linked Servers. For more information about this topic, please refer to SQL Server Books Online.
Modification Type: | Major | Last Reviewed: | 3/14/2006 |
---|
Keywords: | kbBug kbfix KB251190 |
---|
|