【问题标题】:Set NOCOUNT OFF at database level?在数据库级别设置 NOCOUNT OFF?
【发布时间】:2011-03-20 02:45:40
【问题描述】:

我可以将特定数据库的 NOCOUNT 默认设置为 OFF 吗?

NHibernate 需要它(如果它打开,保存时会出现异常)。我可以看到为整个服务器禁用它的设置(它设置为 ON),但我们正在与其他数据库共享服务器。有没有办法只为我的数据库将其设置为 OFF?

或者是否有一个 NHibernate 设置可以为我做到这一点? (我现在已经使用自定义 DriverConnectionProvider 解决了这个问题,它在创建连接时发出命令。工作正常,但感觉有点尴尬)

顺便说一句,我使用的是 SQL Server 2000。

谢谢 马特

【问题讨论】:

    标签: sql-server nhibernate sql-server-2000


    【解决方案1】:

    您也可以从 SSMS 设置数据库的 nocount 属性 ON/OFF。请在下面找到

    1. 右键单击实例并选择属性
    2. 然后选择连接
    3. 在右侧窗格中,您将找到包括“无计数”在内的属性列表
    4. 取消选中此属性以使其关闭

    【讨论】:

      【解决方案2】:

      设置 NOCOUNT 在数据库级别设置。分别执行下面的查询。这给出了更好的主意。

      SET NOCOUNT ON 
      Update Users set FirstName='XXXX' where Id='YYYY'; 
      

      ***命令成功完成。

      SET NOCOUNT OFF
      Update Users set FirstName='XXXX' where Id='YYYY'; 
      

      ***(受影响的 1 行)

      【讨论】:

        【解决方案3】:

        您可以使用 NH IInterceptor 接口的 OnPrepareStatement 方法来修改 NH 生成的 SQL 语句,以在您的应用程序发出的每个 sql 查询的顶部包含一个“set nocount off”语句。

        Some bloke called Dave 认为这样做是“邪恶的”,但这可能是你的答案。该链接将您带到他的博客上描述如何实现它的页面。

        我对此的保留意见是,您将创建一个依赖于您的应用程序,该应用程序运行在一个能够理解“set nocount off”的数据库服务器上 - 换句话说,您将忽略配置的方言。

        【讨论】:

          【解决方案4】:

          不,SET NOCOUNT 没有数据库范围的设置。

          同样的问题:http://www.eggheadcafe.com/software/aspnet/32120672/set-nocount.aspx

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-02-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-10-29
            相关资源
            最近更新 更多