Microsoft KB Archive/827184

= A Remote Stored Procedure Returns Only Partial Results After the RAISERROR Statement =

PSS ID Number: 827184

Article Last Modified on 10/28/2003

-

The information in this article applies to:


 * Microsoft SQL Server 2000 (all editions)

-



SHILOH_BUGS:469853



SYMPTOMS
A call to a remote stored procedure may return only partial results if all the following conditions are true:
 * The stored procedure contains a SET NOCOUNT ON statement.
 * The stored procedure contains a RAISERROR statement.
 * The stored procedure contains a SELECT statement after the RAISERROR statement.

For example, only the RAISERROR output is returned to the local instance of SQL Server if the remote stored procedure contains the following commands: SET NOCOUNT ON  RAISERROR( '(error message)', 16, 1 ) SELECT 1 AS 'resultset' The result set for the SELECT statement might be missing.

Note The &quot;More Information&quot; section in this article contains detailed steps to reproduce this problem. It also includes an example of the incorrect output and an example of the expected output.



WORKAROUND
To work around this problem, set NOCOUNT OFF before you run the RAISERROR statement. To do so, use the following code: CREATE PROCEDURE testproc AS  SET NOCOUNT ON   (...) SET NOCOUNT OFF RAISERROR( '(error message)', 16, 1 ) SET NOCOUNT ON  (...) SELECT 1 AS 'resultset' RETURN 1 GO



RESOLUTION
A supported hotfix is now available from Microsoft, but it is only intended to correct the problem that is described in this article. Only apply it to systems that are experiencing this specific problem. This hotfix may receive additional testing. Therefore, if you are not severely affected by this problem, Microsoft recommends that you wait for the next Microsoft SQL Server 2000 service pack that contains this hotfix.

To resolve this problem immediately, contact Microsoft Product Support Services to obtain the hotfix. For a complete list of Microsoft Product Support Services phone numbers and information about support costs, visit the following Microsoft Web site:

http://support.microsoft.com/default.aspx?scid=fh;%5BLN%5D;CNTACTMS

Note In special cases, charges that are ordinarily incurred for support calls may be canceled if a Microsoft Support Professional determines that a specific update will resolve your problem. The usual support costs will apply to additional support questions and issues that do not qualify for the specific update in question.

The English version of this hotfix has the file attributes (or later) that are listed in the following table. The dates and times for these files are listed in coordinated universal time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time tool in Control Panel.   Date         Time   Version            Size    File name -  31-May-2003  09:45  2000.80.818.0      78,400  Console.exe 24-Jun-2003 16:01  2000.80.818.0      33,340  Dbmslpcn.dll 24-Apr-2003 17:12                    786,432  Distmdl.ldf 24-Apr-2003 17:12                  2,359,296  Distmdl.mdf 29-Jan-2003 16:55                        180  Drop_repl_hotfix.sql 11-Sep-2003 18:26  2000.80.859.0   1,905,216  Dtspkg.dll 26-Aug-2003 11:16  2000.80.854.0     528,960  Dtspump.dll 23-Jun-2003 13:40  2000.80.837.0   1,557,052  Dtsui.dll 23-Jun-2003 13:40  2000.80.837.0     639,552  Dtswiz.dll 23-Apr-2003 17:51                    747,927  Instdist.sql 02-May-2003 16:56                      1,581  Inst_repl_hotfix.sql 07-Feb-2003 21:40  2000.80.765.0      90,692  Msgprox.dll 31-Mar-2003 17:07                      1,873  Odsole.sql 04-Apr-2003 16:46  2000.80.800.0      62,024  Odsole70.dll 07-May-2003 11:41  2000.80.819.0      25,144  Opends60.dll 02-Apr-2003 12:48  2000.80.796.0      57,904  Osql.exe 02-Apr-2003 14:15  2000.80.797.0     279,104  Pfutil80.dll 04-Aug-2003 09:17                    550,780  Procsyst.sql 11-Sep-2003 15:37                     12,305  Qfe469315.sql 22-May-2003 13:57                     19,195  Qfe469571.sql 05-Sep-2003 16:36                  1,090,932  Replmerg.sql 05-Sep-2003 22:18  2000.80.858.0     221,768  Replprov.dll 05-Sep-2003 22:18  2000.80.858.0     307,784  Replrec.dll 05-Sep-2003 15:00                  1,087,150  Replsys.sql 13-Aug-2003 07:28                    986,603  Repltran.sql 29-Jul-2003 11:13  2000.80.819.0     492,096  Semobj.dll 31-May-2003 09:27  2000.80.818.0     172,032  Semobj.rll 05-Aug-2003 12:06                    127,884  Sp3_serv_uni.sql 31-May-2003 16:01  2000.80.818.0   4,215,360  Sqldmo.dll 07-Apr-2003 08:44                     25,172  Sqldumper.exe 19-Mar-2003 09:20  2000.80.789.0      28,672  Sqlevn70.rll 01-Jul-2003 15:18  2000.80.834.0     180,736  Sqlmap70.dll 02-Sep-2003 17:56  2000.80.857.0     188,992  Sqlmmc.dll 02-Sep-2003 14:03  2000.80.857.0     479,232  Sqlmmc.rll 07-Feb-2003 21:40  2000.80.765.0      57,920  Sqlrepss.dll 19-Sep-2003 07:30  2000.80.859.0   7,598,164  Sqlservr.exe 25-Jul-2003 12:44  2000.80.845.0     590,396  Sqlsort.dll 07-Feb-2003 21:40  2000.80.765.0      45,644  Sqlvdi.dll 24-Jun-2003 16:01  2000.80.818.0      33,340  Ssmslpcn.dll 31-May-2003 16:01  2000.80.818.0      82,492  Ssnetlib.dll 31-May-2003 16:01  2000.80.818.0      25,148  Ssnmpn70.dll 31-May-2003 16:01  2000.80.818.0     158,240  Svrnetcn.dll 31-May-2003 09:59  2000.80.818.0      76,416  Svrnetcn.exe 30-Apr-2003 14:52  2000.80.816.0      45,132  Ums.dll 01-Jul-2003 15:19  2000.80.834.0      98,816  Xpweb70.dll Note Because of file dependencies, the most recent hotfix or feature that contains these files may also contain additional files.



STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the &quot;Applies to&quot; section of this article.



Steps to Reproduce the Problem
To reproduce this problem, follow these steps:   On an instance of SQL Server 2000 ( Server1), create the following stored procedure: USE pubs GO CREATE PROCEDURE testproc AS  SET NOCOUNT ON   RAISERROR( '(error message)', 16, 1 ) SELECT 1 AS 'resultset' RETURN 1 GO   Connect to a second instance of SQL Server 2000 (Server2) by using SQL Query Analyzer, and then run the stored procedure remotely on Server1: DECLARE @ret int EXEC @ret = [Server1].pubs.dbo.testproc SELECT @ret 'Return Value' The following results are returned: Server: Msg 50000, Level 16, State 1, Line 2 (error message)

Return Value 1 Note The output of the &quot;SELECT 1 AS 'resultset' &quot; statement is missing. 

The following is the expected output: Server: Msg 50000, Level 16, State 1, Line 2 (error message) resultset --- 1

Return Value 1

Keywords: kbSQLServ2000preSP4fix kbfix kbbug KB827184

Technology: kbAudDeveloper kbSQLServ2000 kbSQLServ2000Search kbSQLServSearch

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© 2004 Microsoft Corporation. All rights reserved.