SET NOCOUNT 的怪问题
系统
1516 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元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。
【本文对您有帮助就好】元