Tôi có nên thêm SET NOCOUNT ON cho tất cả các kích hoạt của mình không?


21

Đó là kiến ​​thức khá phổ biến mà bạn nên có

SET NOCOUNT ON   

theo mặc định khi tạo thủ tục lưu trữ mới.

Microsoft đã thay đổi mẫu mặc định để bao gồm mẫu này vào năm 2012. Tôi nghĩ rằng nó sẽ giống với các kích hoạt, nhưng nó không được bao gồm trong mẫu.

Đây là cố ý hay chỉ là một giám sát?


1
Nếu bạn từng chỉnh sửa các giá trị thông qua trình soạn thảo bảng SSMS thì điều này là bắt buộc đối với các kích hoạt nếu không, thông báo đếm hàng bổ sung từ trình kích hoạt sẽ gây nhầm lẫn
Martin Smith

đó là một sự giám sát rất có thể. Ngoài ra, hãy xem stackoverflow.com/questions/1483732/set-nocount-on-usage vui lòng
gbn

Câu trả lời:


24

Cá nhân, tôi muốn giới thiệu nó - tôi không thể nghĩ ra một lý do nào khác, trừ khi bạn có một trình kích hoạt mà bạn đặc biệt muốn gọi ra thực tế rằng nó đang làm thêm công việc đằng sau hậu trường.

Tôi đã viết một bài viết ngắn về những điều cần theo dõi khi viết trình kích hoạt và đây là một trong số đó:
http://dave.brittens.org/2012/03/29/writer-well-behatted-triggers/

phiên bản tl; dr:

  1. Cắt nói nhảm. Sử dụng NOCOUNT.
  2. Hãy chắc chắn rằng trình kích hoạt của bạn có thể xử lý nhiều hàng.
  3. Ngăn chặn tầng kích hoạt không giới hạn và đệ quy.
  4. Tránh hiệu suất khủng khiếp của các bảng ảo XÁC NHẬN và XÓA.

URL đã hết hạn. Đây là URL được cập nhật: dave.brittens.org/blog/wr-well-behatted-triggers.html
Jonathon Watney

Nắm bắt tốt. Tôi vừa cập nhật trang web của mình lên Pelican vài tuần trước. ;)
db2
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.