`
dengbaoleng
  • 浏览: 1132160 次
文章分类
社区版块
存档分类
最新评论

SET NOCOUNT 的怪问题

 
阅读更多
/**//*--SETNOCOUNT的问题

SQL版本:SQLServer20053159

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

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

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

--添加链接服务器
EXECsp_addlinkedserver'srv_lnk','','SQLOLEDB','.'
EXECsp_serveroption'srv_lnk','rpcout','true'
GO

--测试语句
--
SETNOCOUNTON
BEGINTRY
DECLARE
@error_numberint,
@error_messagenvarchar(2048)

EXEC(N'
SETNOCOUNTON

USEtempdb

BEGINTRY
DELETEFROM[NEWID()]
ENDTRY
BEGINCATCH
SELECT
?=ERROR_NUMBER(),
?=ERROR_MESSAGE()
ENDCATCH
',
@error_numberOUTPUT,
@error_messageOUTPUT
)ATsrv_lnk
ENDTRY
BEGINCATCH
SELECT
2,
ERROR_NUMBER(),
ERROR_MESSAGE()
ENDCATCH
GO

--删除链接服务器
EXECsp_dropserver'srv_lnk','droplogins'
GO
分享到:
评论

相关推荐

    SQL实际应用面试题

    一些简单的SQL面试题,仅供大家参考 管理结果集的分页 问:我怎样才能使用SQL Server对结果集的分页进行管理? 答:您经常需要使用一次一页的形式来显示一个结果集,并保证用户可以轻松查看各个...SET NOCOUNT OFF

    SQL SERVER 2008 开发系列

    SQL SERVER 2008 开发系列,分15个课时介绍了我们在日常使用SQLServer过程中需要注意的问题和一些应用。

    Sql学习第一天——SQL 练习题(建表/sql语句)

    建表: 代码如下: set nocount on –当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数 use SY GO if object_Id(‘dbo.Orders’) is not null drop ...

    sqlserver2005存储过程例子

    -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; CREATE TABLE [dbo].[ReDealCheck]( [AppplyNo] [varchar](50) COLLATE Chinese_PRC_CI...

    sybase sql执行慢,如何调优

    1、执行下述代码,查看当前进程执行内容 ...SET NOCOUNT ON SET SHOWPLAN ON SET NOEXEC ON GO 具体代码 GO SET NOCOUNT OFF SET SHOWPLAN OFF SET NOEXEC OFF GO 4、执行计划显示索引使用不合理导致全表扫

    instead of 触发器

    SET NOCOUNT ON IF (NOT EXISTS (SELECT P.SSN FROM Person P, inserted I WHERE P.SSN = I.SSN)) INSERT INTO Person SELECT SSN,Name,Address,Birthdate,Comment FROM inserted ELSE INSERT INTO ...

    ADO调用分页查询存储过程的实例讲解

    set nocount off --关闭SqlServer消息 --set nocount on --开启SqlServer消息 go create proc usp_getMyStudentsDataByPage --输入参数 @pagesize int=7,--每页记录条数 @pageindex int=1,--当前要查看第几页的记录 ...

    在MySQL中同时查找两张表中的数据的示例

    这个例子里面我们从两个表中取出头两行,然后合并到一个表中。  在现实中我们常常会遇到这样的情况,... SET NOCOUNT ON --指示存储过程不返回查询影响的行数 DECLARE @col1c varchar(20),@col2c varchar(20), @inde

    sql server2005 分页存储过程

    SET NOCOUNT ON DECLARE @STMT nvarchar(max) -- SQL to execute ,@recct int -- total # of records (for GridView paging interface) IF LTRIM(RTRIM(@filter)) = '' SET @filter = '1 = 1' IF @pageSize IS ...

    Northwind脚本

    SET NOCOUNT ON GO USE master GO if exists (select * from sysdatabases where name='Northwind') drop database Northwind go DECLARE @device_directory NVARCHAR(520) SELECT @device_directory = ...

    如何查看SQLServer数据库每个表占用的空间大小

    CREATE PROCEDURE [dbo] [sys viewTableSpace] AS BEGIN SET NOCOUNT ON; CREATE TABLE [dbo] #tableinfo 表名 [varchar] 50 COLLATE Chinese PRC CI AS NULL 记录数 [int] NULL

    SQL SERVER 数据库备份代码实例

    SET NOCOUNT ON DECLARE @d varchar(8) DECLARE @Backup_Flag NVARCHAR(10) SET @d=convert(varchar(8),getdate(),112) /***自定义选择备份哪些数据库****/ --SET @Backup_Flag='UserDB' -- 所用的用户数据库 SET @...

    CREATEHRDB.SQL

    是用与SQL Server 2005 set nocount on USE master declare @dttm varchar(55) select @dttm=convert(varchar,getdate(),113) raiserror('Starting installation of HR Database at %s ....',1,1,@dttm) with nowait

    sql 触发器使用例子

    inserted,deleted是在触发器中使用的两个临时表... 代码如下:set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER TRIGGER [dnt_user_add] ON [dbo].[dnt_users] AFTER INSERT AS BEGIN SET NOCOUNT ON; insert into

    百万级的分页存储过程

    百万级的分页存储过程 CREATE PROCEDURE sp_paging @sqlstr NVARCHAR(4000), --查询字符串 @currentpage INT, --第N页&gt;=1 @pagesize INT --每页行数 ...SET NOCOUNT ON declare @P1 INT, --P1是游标的id

    SQL技术文摘

    使用联接来查询多个表 SET NOCOUNT { ON | OFF } 说明 用sp_lock诊断SQL Sever的性能问题 sql server临时表 如何保存数据库连接参数代码及步骤详解 用数据源访问数据库 GDI+ 在Delphi程序的...

    SqlServer 2005 中字符函数的应用

    代码如下: USE Demo GO /* 将表Code的列String中的值提取放到...split_Code GO CREATE PROC proc_split_Code AS BEGIN SET NOCOUNT ON DECLARE @Count INT –条数 DECLARE @Index INT –变量 SET @Index = 1 –默认 SEL

    一个基于ROW_NUMBER()的通用分页存储过程代码

    代码如下: ALTER PROCEDURE [dbo].[COMMON_PROCEDURE_SelectWithPage] @Sql VARCHAR(5000), @CurrentPageNo INT, @PageSize INT, @TotalNum INT OUTPUT AS SET NOCOUNT ON DECLARE @SqlCmd VARCHAR(5000) ————...

    sqlserver 常用存储过程集锦

    =================分页========================== 代码如下: /*分页查找数据*/ CREATE PROCEDURE [dbo...AS set nocount on declare @p1 int declare @currentPage int set @currentPage = 0 declare @RowCount int se

    SqlServer GO命令循环使用实例代码

    SET NOCOUNT ON; GO INSERT INTO dbo.T1 DEFAULT VALUES; GO 100 总结 以上所述是小编给大家介绍的SqlServer GO命令循环使用实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。...

Global site tag (gtag.js) - Google Analytics