2010-07-23 123 views
5

默认情况下,我可以将NOCOUNT设置为关闭特定数据库吗?在数据库级别设置NOCOUNT OFF?

我需要它NHibernate(如果它是ON,我收到异常时保存)。我可以看到整个服务器(设置为ON)禁用它的设置,但我们与其他数据库共享服务器。有没有一种方法可以将其设置为仅针对我的数据库关闭?

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

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

感谢 马特

回答

0

您可以使用NH IInterceptor接口的OnPrepareStatement的方法来修改NH-生成的SQL语句包含在你的应用程序发出的每一个SQL查询的顶部“NOCOUNT掀起”语句。

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

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

-1

设置NOCOUNT设置为数据库级别。分别执行下面的查询。这提供了更好的想法。

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

***指令(S)成功完成。

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

***(1行(一个或多个)受影响)