Loại chờ SQLCLR trong Trình giám sát hoạt động trong SQL Server Management Studio (SSMS) là gì?


10

Khi tôi kiểm tra máy chủ SQL Prod của chúng tôi, mỗi lần tôi mở Trình giám sát hoạt động tôi luôn thấy SQLCLRtrong danh sách đầu tiên trên phần chờ tài nguyên trong Trình giám sát hoạt động. Nó luôn luôn có một số lượng cao. Để làm gì SQLCLR? Có phải là xấu cho máy chủ có SQLCLRsố chờ tài nguyên cao trong trình giám sát hoạt động không?

Câu trả lời:


11

SQLCLR là khả năng chạy mã .NET trong SQL Server.

Khi mọi người nói về SQLCLR, họ thường đề cập đến khả năng viết mã .NET tùy chỉnh (Thủ tục lưu trữ, Hàm, Triggers, Loại do người dùng xác định và Tập hợp do người dùng xác định). Trong trường hợp này, khả năng này có thể được bật và tắt thông qua tùy chọn máy chủ "clr enable" bên trong sp_configurevà tôi tin rằng nó được gọi là "Tích hợp CLR" trong GUI Cấu hình Surface Area. Thêm chức năng .NET yêu cầu sử dụng CREATE ASSEMBLY để tải mã .NET đã biên dịch vào SQL Server.

Tuy nhiên, ngay cả với tùy chọn "bật clr" được đặt thành 0/ "tắt" / "bị vô hiệu hóa", chức năng CLR vẫn được sử dụng cho chức năng bên trong và một số chức năng tích hợp và sẽ luôn ở đó, trừ khi "sử dụng sợi Windows" / " tùy chọn tổng hợp nhẹ "được bật.

Để biết mô tả rất chi tiết về SQLCLR là gì, không phải là gì và có thể làm gì, vui lòng xem bài viết mà tôi đã viết về chủ đề này trên SQL Server Central: Stairway to SQLCLR Cấp 1: SQLCLR là gì? (đăng ký miễn phí là cần thiết để xem nội dung trên trang web đó). Phiên bản rút gọn của bài viết đó có sẵn trong câu trả lời StackOverflow sau: Khi nào chúng ta cần một hàm CLR trong SQL Server? .

Nếu bạn muốn biết liệu cá thể có cho phép mã .NET tùy chỉnh được thêm vào cơ sở dữ liệu hay không, hãy chạy phần sau và kiểm tra trường "run_value":

EXEC sp_configure 'clr enabled';

Liên quan đến ý nghĩa của loại chờ SQLCLR trong Trình theo dõi tài nguyên, vui lòng xem bài đăng trên blog sau:

Cách thức hoạt động: Đằng sau danh mục chờ SQLCLR trong SQL Server 2008 Activity Monitor

và tôi tin rằng dòng thích hợp (vì nó liên quan đến danh mục SQLCLR mà bạn đang xem) từ bài đăng đó là:

Những gì tôi tìm thấy là một số Wait_types nên được bỏ qua vì chúng được chờ đợi.


Đó là SQL2008 và được cho là đã được lên lịch để sửa chữa (dựa trên bài viết được liên kết). OP đã gắn cờ SQL 2012. Tôi chỉ nhìn vào điều tương tự như đối với tôi SQLCLR đang ổn định ở 3000ms + -1 và chúng tôi không sử dụng nó.
Roger Willcocks

@RogerWillcocks Được lên lịch để sửa không phải lúc nào cũng có nghĩa là nó sẽ được sửa. Nếu bạn đọc qua các bình luận trên bài đăng được liên kết đó, bạn sẽ thấy mọi người báo cáo rằng đó vẫn là một vấn đề trong năm 2012 SP1 và SP2. Phiên bản SSMS nào bạn đang sử dụng? Chạy phần sau (bình luận tiếp theo) để xem nó có khớp với những gì bạn đang thấy không. Ngoài ra, có một số tính năng tích hợp sẵn sử dụng SQLCLR, chẳng hạn như các loại Hình học, Địa lý và HVELyID; lệnh FORMAT và một số thứ khác.
Solomon Rutzky

2
SELECT * FROM sys.dm_os_wait_stats WHERE wait_type IN ('CLR_AUTO_EVENT', 'CLR_CRST', 'CLR_JOIN', 'CLR_MANUAL_EVENT', 'CLR_MEMORY_SPY', 'CLR_MONITOR', 'CLR_RWLOCK_READER', 'CLR_RWLOCK_WRITER', 'CLR_SEMAPHORE', 'CLR_TASK_START', 'CLRHOST_STATE_ACCESS', 'ASSEMBLY_LOAD', 'FS_GARBAGE_COLLECTOR_SHUTDOWN', 'SQLCLR_APPDOMAIN', 'SQLCLR_ASSEMBLY', 'SQLCLR_DEADLOCK_DETECTION', 'SQLCLR_QUANTUM_PUNISHMENT') ORDER BY wait_time_ms DESC, wait_type ASC;
Solomon Rutzky
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.