Nó ít hơn trong SQL Server 2008 và cao hơn, nhưng nó vẫn còn đó. Vấn đề là bộ đệm của kế hoạch thực hiện và SQL Server có thể tự động truy vấn tham số được gửi đi. Khi sử dụng các thủ tục được lưu trữ (không có SQL động bên trong chúng), các truy vấn đã được tham số hóa để SQL Server không ' Không cần tạo một gói cho mỗi truy vấn khi nó chạy vì các gói đã được lưu trong bộ đệm của gói.
Và đừng quên các vấn đề bảo mật (SQL động, quyền tối thiểu, v.v.) sẽ biến mất khi sử dụng các thủ tục được lưu trữ.
Khi ứng dụng đang sử dụng SQL động dựa vào các bảng cơ sở để chọn, chèn, cập nhật và xóa dữ liệu trong các bảng, ứng dụng cần có quyền đối với tất cả các đối tượng đó trực tiếp. Vì vậy, nếu ai đó sử dụng SQL Injection để vào máy chủ, họ sẽ có quyền truy vấn, thay đổi hoặc xóa tất cả dữ liệu trong các bảng đó.
Nếu bạn đang sử dụng các thủ tục được lưu trữ, họ chỉ có quyền thực thi các thủ tục được lưu trữ để lấy lại thông tin mà thủ tục được lưu trữ sẽ trả về. Thay vì đưa ra một tuyên bố xóa nhanh và thổi bay mọi thứ, họ sẽ cần phải tìm ra các thủ tục có thể được sử dụng để xóa dữ liệu sau đó tìm ra cách sử dụng thủ tục để làm như vậy.
Cho rằng SQL Injection là cách dễ nhất để xâm nhập vào cơ sở dữ liệu, đây là loại quan trọng.