SET NOCOUNT 的怪问题

系统 1351 0
/**/ /* -- SET NOCOUNT 的问题

SQL 版本 : SQL Server 2005 3159

故障描述:
当满足下述条件时, SET NOCOUNT 导致 TRY ... CATCH 无法正确处理错误
1. 使用 EXEC(<SQl>) AT <Linked Server> 或者 EXEC <Linked Server>.<database name>.dbo.sp_executesql <SQl>
2. <SQL> 中包括输出参数
3. <SQL> 中包括 SET NOCOUNT ON 和 USE <Database Name> 语句(注意不能更换出现次序)

具体的参考下面的测试示例

与此问题相关的帖子:
http://topic.csdn.net/u/20080103/12/3dafc07c-3376-40c1-b4bd-7cbd76afed1a.html?seed=182508736
--
*/

--  添加链接服务器
EXEC  sp_addlinkedserver   ' srv_lnk ' , '' , ' SQLOLEDB ' , ' . '
EXEC  sp_serveroption  ' srv_lnk ' , ' rpc out ' , ' true '     
GO

--  测试语句
--
SET NOCOUNT ON
BEGIN  TRY
    
DECLARE
            
@error_number   int ,
            
@error_message   nvarchar ( 2048 )

    
EXEC (N '
SET NOCOUNT ON

USE tempdb

BEGIN TRY
    DELETE FROM [NEWID()]
END TRY
BEGIN CATCH
    SELECT
        ? = ERROR_NUMBER(),
        ? = ERROR_MESSAGE()
END CATCH
' ,
    
@error_number  OUTPUT,
    
@error_message  OUTPUT
    )AT srv_lnk
END  TRY
BEGIN  CATCH
    
SELECT  
        
2
        ERROR_NUMBER(),
        ERROR_MESSAGE()
END  CATCH
GO

--  删除链接服务器
EXEC  sp_dropserver  ' srv_lnk ' ' droplogins '
GO
 

SET NOCOUNT 的怪问题


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论