2010-07-23 8 views
5

Tôi có thể đặt NOCOUNT thành TẮT theo mặc định cho một cơ sở dữ liệu cụ thể không?Đặt NOCOUNT OFF ở cấp cơ sở dữ liệu?

Tôi cần nó cho NHibernate (nếu đó là BẬT, tôi nhận được ngoại lệ khi lưu). Tôi có thể thấy các thiết lập để vô hiệu hóa nó cho một máy chủ toàn bộ (nơi nó được thiết lập ON), nhưng chúng tôi đang chia sẻ máy chủ với cơ sở dữ liệu khác. Có cách nào tôi có thể thiết lập nó để OFF chỉ cho cơ sở dữ liệu của tôi?

Hoặc có cài đặt NHibernate sẽ thực hiện việc này cho tôi không? (Tôi đã làm việc xung quanh nó cho bây giờ với một DriverConnectionProvider tùy chỉnh mà vấn đề lệnh bất cứ khi nào nó tạo ra một kết nối. Hoạt động ok, nhưng cảm thấy một chút vụng về)

Tôi đang sử dụng SQL Server 2000, btw.

Cảm ơn Matt

Trả lời

0

Bạn có thể sử dụng phương pháp NH IInterceptor giao diện của OnPrepareStatement để thay đổi câu lệnh SQL NH-tạo ra để bao gồm một "thiết lập nocount off" tuyên bố ở trên cùng của mỗi truy vấn sql do ứng dụng của bạn.

Some bloke called Dave cho rằng đó là "điều ác" để làm như vậy, nhưng đó có thể là câu trả lời của bạn. Liên kết sẽ đưa bạn đến trang trên blog của mình mô tả cách triển khai nó.

Việc đặt phòng của tôi về việc làm như vậy là bạn sẽ tạo phụ thuộc vào ứng dụng của mình đang chạy trên máy chủ cơ sở dữ liệu hiểu "đặt hết tiền" - nói cách khác, bạn sẽ bỏ qua phương ngữ được định cấu hình.

-1

Đặt NOCOUNT được đặt ở cấp DB. Thực hiện riêng từng truy vấn bên dưới. Điều này cho ý tưởng tốt hơn.

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

*** Lệnh đã hoàn tất thành công.

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

*** (1 row (s) bị ảnh hưởng)