代码之家  ›  专栏  ›  技术社区  ›  ctrlalt3nd

禁用SQL2008结果集中的消息

  •  4
  • ctrlalt3nd  · 技术社区  · 17 年前

    关于 these two 问题,是否有方法禁用SQL2008中可能与结果集一起发送的消息?

    (请注意,这与ANSI_WARNINGS设置无关。 或NOCOUNT .)

    谢谢你的帮助。

    编辑:兼容性设置或表所有者没有问题。 这与NOCOUNT无关 相信我。

    5 回复  |  直到 9 年前
        1
  •  14
  •   Brent Ozar    17 年前

    不,没有办法禁用与结果集一起发送的所有消息。设置no计数开/关对这些类型的消息没有影响。

        2
  •  0
  •   Kristen    17 年前

    无论如何,你都需要在Sproc的主体中使用NOCOUNT(我很感激你已经用和不用它进行了测试)

    在这种情况下,我会实际调用Sproc(无论是从我的APP中的Debug还是使用SQL Profiler),然后将其插入到Contoso或您使用的任何IDE中,将其封装在ROLLBACK事务中(这样它就不会意外地进行任何更改)。注意:使用与应用程序将使用的凭据相同的凭据,使用IDE登录到SQL Server。

    BEGIN TRANSACTION
    EXEC StaffEnquirySurnameSearch @searchterm = 'FOOBAR'
    ROLLBACK
    

    看看你会得到什么。使用TEXT模式进行输出,而不是可能隐藏某些内容的GRID模式

    只是为了说明我认为NOCOUNT应该如何添加到您的SProc中:

    CREATE PROCEDURE StaffEnquirySurnameSearch
        @searchterm varchar(255)
    AS
    
    SET NOCOUNT ON
    
    SELECT  AD.Name, AD.Company, AD.telephoneNumber, AD.manager, CVS.Position,
        CVS.CompanyArea, CVS.Location, CVS.Title, AD.guid AS guid,
        AD.firstname, AD.surname
    FROM ADCVS AD
    LEFT OUTER JOIN CVS ON
        AD.Guid=CVS.Guid 
    WHERE AD.SurName LIKE @searchterm
    ORDER BY AD.Surname, AD.Firstname
    GO
    

    我注意到,你没有在表前加上数据库所有者(最常见的是“dbo”),这可能意味着有其他副本由谁拥有,并且从应用程序权限的角度来看,它们是默认的,尽管我认为这不会改变[SQL版本之间]的结果集。但是,同样的事情也适用于Sproc的所有权,在那里你可能会调用为不同所有者创建的早期版本。

    在ASP中定义Sproc名称的地方也是如此。NET代码(我似乎在你的链接问题中找不到)也应该定义所有者,即。

    EXEC dbo.StaffEnquirySurnameSearch @searchterm = 'FOOBAR'
    
        3
  •  0
  •   Kristen    17 年前

    从SQL 2000升级到2008时,您是否更改了兼容级别?如果是某种向后兼容性警告消息可能会治愈它。

        4
  •  0
  •   Beep beep    17 年前

    您是否尝试过在不使用“OR”的情况下运行相同的CONTAINS查询?

    即。:

    SELECT * FROM my_table
    WHERE CONTAINS(my_column, 'a monkey')  -- "a" is a noise word
    

    而不是

    SELECT * FROM my_table
    WHERE CONTAINS(my_column, 'a OR monkey')  -- "a" is a noise word
    
        5
  •  0
  •   Data Dave    17 年前

    你可以把它包起来试试。..更多信息在线书籍

    例如:

    创建表测试_ShortString(

    ShortString varchar(10) NULL
    

    )

    开始尝试

    insert into 
    Test_ShortString (ShortString) 
    values ('123456789012345')
    

    结束尝试

    开始接球

    --Select Error_Number() as ErrorNumber
    

    终点接球

    推荐文章