/**/ /*-- 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 ONUSE tempdbBEGIN TRY DELETE FROM [NEWID()]END TRYBEGIN 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