Nếu thủ tục được lưu trữ được tạo bằng EXECUTE AS CALLER (mà tôi tin là mặc định), thì người gọi phải có tất cả các quyền cần thiết để thực hiện bất kỳ điều gì mà thủ tục được lưu trữ thực hiện ngoài việc EXECUTE trên thủ tục.
Từ tài liệu SQL Server cho EXECUTE AS:
Lưu ý rằng do cách SQL Server xử lý kiểm tra quyền sử dụng chuỗi quyền sở hữu, điều này không phải lúc nào cũng đúng và tôi đoán rằng việc cấp CONTROL trên quy trình (quy định trạng thái quyền sở hữu cho người được cấp) đang gây ra các kiểm tra quyền này bỏ qua.
Nếu bạn tạo quy trình với EXECUTE AS OWNER, thì bạn không cần phải cấp bất kỳ quyền nào ngoài EXECUTE trên quy trình.