2011-10-10 21 views
13

Tôi sử dụng asp.net 4 C# và khung thực thể 4 với MS SQL 2008. Tôi đang cố thiết lập ứng dụng web cục bộ bằng IIS 7.Quyền EXECUTE bị từ chối trên đối tượng 'aspnet_CheckSchemaVersion', cơ sở dữ liệu 'XXX'

Đối với trang web của tôi, tôi người dùng nhà cung cấp thành viên Asp đã cài đặt các bảng và sprocs khác nhau trong db của tôi (aspnet_).

Chạy kịch bản chúng tôi nhận được lỗi này:

The EXECUTE permission was denied on the object 'aspnet_CheckSchemaVersion', database 'XXX', schema 'dbo'.  at System.Data.SqlClient.SqlConnection.OnError 
  • Làm thế nào tôi có thể giải quyết vấn đề? Vui lòng cung cấp cho tôi hướng dẫn rõ ràng. Cảm ơn bạn đã về vấn đề này.
+4

bạn là một quý tộc? Tôi nghĩ bạn có nghĩa là noob, nhưng đó là một lỗi đánh máy. –

+0

Đã trả lời ở đây: http://stackoverflow.com/questions/16134262/execute-permission-denied-aspnet-roles-roleexists?answertab=active#tab-top –

Trả lời

23

Sẽ có một số vai trò db liên quan đến các bảng thành viên, ví dụ: aspnet_profile_fullaccess. Đảm bảo tài khoản bạn đang sử dụng là thành viên của vai trò phù hợp.

Bạn KHÔNG nên chỉ định người dùng bạn kết nối với DB dưới dạng đặc quyền của người sở hữu dbowner. Tài khoản chỉ có các quyền cần & không có gì khác. Nếu bạn cấp dbo & ai đó đã khai thác lỗ hổng trong trang web của bạn, họ sẽ có toàn quyền truy cập không kiểm soát được toàn bộ db của bạn vào những gì họ muốn - xóa bảng, thay đổi dữ liệu theo ý muốn.

+0

cảm ơn Simone Tôi đã đọc kỹ câu trả lời của bạn và tôi đồng ý với bạn. – GibboK

+2

Người dùng tôi đang kết nối có tất cả vai trò aspnet_ * được chỉ định cho họ và tôi vẫn nhận được thông báo lỗi này. Cách duy nhất nó có vẻ hoạt động là nếu tôi thêm vai trò dbowner. Bất cứ điều gì bạn biết về điều đó sẽ gây ra điều này? – ajbeaven

+1

Bạn có thể phải chạy Công cụ đăng ký ASP.NET SQL Server: http://msdn.microsoft.com/en-us/library/ms229862(v=vs.100).aspx – arni

1

Vấn đề là ID người dùng mà ứng dụng đăng nhập không có đủ đặc quyền trong cơ sở dữ liệu. Nó hoặc là cần phải là chủ sở hữu cơ sở dữ liệu hoặc được cấp quyền trên tất cả các thủ tục được lưu trữ aspnet_.

Vì vậy, hãy kiểm tra các quyền trong SQL Server 2008 cho người dùng cụ thể này. và nếu có thể, hãy biến người dùng này thành người sở hữu.

Hope this helps ...

Edit: tôi muốn bạn để làm cho nó như dbowner chỉ để xác minh rằng có một số vấn đề cho phép, một khi bạn chắc chắn về vấn đề này, bạn có thể gán quyền cho rằng người dùng. do đó biết nguyên nhân chính xác và giải pháp chính xác.

+1

Đã bỏ phiếu cho đề xuất để biến người dùng thành dbowner. Tôi biết bạn đủ điều kiện trong bản chỉnh sửa của bạn, nhưng tôi biết đủ để biết tuyên bố này có thể nguy hiểm. – awrigley

0

Tôi không nghĩ bạn nên tạo người dùng db_owner. Tôi đã có cùng một vấn đề, và nó đã đủ để lớn 4 vai trò với BasicAccess cho người dùng của tôi + để cho anh ta quyền EXECUTE trên tất cả các proc được lưu trữ:

GRANT EXECUTE TO [theUserName];

Tôi biết điều này không lý tưởng. Người ta chỉ nên cấp quyền EXECUTE trên proc được lưu trữ cần thiết, nhưng nếu bạn cần một giải pháp nhanh cho đến khi bạn thấy người dùng nào của SP cần có khả năng thực thi, thì điều này sẽ hoạt động.

Các vấn đề liên quan