Tôi chịu trách nhiệm quản trị một phiên bản SQL Server 200x, điều không may là đóng vai trò phụ trợ cho ứng dụng chìa khóa trao tay được viết với một vấn đề hiệu năng kinh tởm. Nó liên tục sử dụng mô hình chuẩn bị một con trỏ tĩnh mà nó sẽ chỉ sử dụng một vài mục đầu tiên và thường mất hàng chục mili giây. Có hàng ngàn truy vấn này trong một luồng liên tục.
Sự thật của vấn đề là do thiết kế tò mò về tính toàn vẹn dữ liệu của ứng dụng hoàn toàn không phải là vấn đề với bất kỳ truy vấn nào, vì vậy thực tế là chúng tĩnh là khốn khổ vì hiệu suất sẽ nhanh hơn khoảng ba mươi lần nếu chúng năng động.
Sau khi giao dịch với nhà cung cấp trong nhiều tuần, tôi đã không đi đến đâu. Sự thật là tất cả những gì tôi thực sự cần làm là thay đổi một tham số theo cách ứng dụng sử dụng sp_cursorprepexec. Tôi thậm chí có thể làm điều đó một cách toàn cầu trên toàn bộ máy chủ nếu cần thiết.
Tôi đang xem xét bất kỳ và tất cả các giải pháp, cho dù đó là sử dụng một tính năng trong SQL Server 200x mà tôi không thể tìm thấy, viết một ứng dụng nhỏ nằm giữa SQL Server và máy khách và sửa đổi dữ liệu (mặc dù tôi sẽ không mong muốn tìm ra cách xử lý giao thức TDS theo cách như vậy) hoặc bằng cách nào đó đổi tên sp_cursorprepexec và thay thế nó bằng một trình bao bọc.
Giới hạn của bầu trời.
(FYI, chúng tôi đang chạy SQL Server 2005 ngay bây giờ, nhưng nếu có lý do thuyết phục để bỏ ra thêm tiền để nâng cấp giấy phép thì điều đó có thể xảy ra.)