Câu trả lời từ knb không phù hợp với tôi vì thiếu quyền. (Một giải pháp cho một người sử dụng khác so với hiện tại một)
Không thể thực hiện như hiệu trưởng cơ sở dữ liệu vì hiệu trưởng "người sử dụng tôi" không tồn tại, loại này chủ yếu không thể mạo nhận, hoặc bạn không có sự cho phép.
này answer cho thấy làm thế nào để có được danh sách các thủ tục được lưu trữ trên đó một người dùng cơ sở dữ liệu cụ thể ('người dùng của tôi') có EXECUTE phép cấp một cách rõ ràng:
SELECT [name]
FROM sys.objects obj
INNER JOIN sys.database_permissions dp ON dp.major_id = obj.object_id
WHERE obj.[type] = 'P' -- stored procedure
AND dp.permission_name = 'EXECUTE'
AND dp.state IN ('G', 'W') -- GRANT or GRANT WITH GRANT
AND dp.grantee_principal_id =
(SELECT principal_id
FROM sys.database_principals
WHERE [name] = 'my user')
tôi sửa đổi nó như sau để có được danh sách tôi cần:
SELECT [name]
FROM sys.procedures
WHERE [name] NOT IN
(SELECT [name]
FROM sys.objects obj
INNER JOIN sys.database_permissions dp ON dp.major_id = obj.object_id
WHERE obj.[type] = 'P' -- stored procedure
AND dp.permission_name = 'EXECUTE'
AND dp.state IN ('G', 'W') -- GRANT or GRANT WITH GRANT
AND dp.grantee_principal_id =
(SELECT principal_id
FROM sys.database_principals
WHERE [name] = 'my user'))
Thử nghiệm trên Microsoft SQL server 2008 R2
tôi có thể xem các tập lệnh của proc lưu trữ edure sử dụng "Script Stored Procedure As" -> "Tạo thành"; nhưng has_view_definition là đến "0". Làm thế nào chúng ta có thể sửa nó? – Lijo
Bạn có thể chạy ['SELECT * FROM sys.fn_my_permissions ('', 'OBJECT')'] (http://msdn.microsoft.com/en-us/library/ms176097.aspx) và đăng ở đây kết quả không? –
BTW, truy vấn của tôi không xử lý các thủ tục trong lược đồ khác, không phải dbo. Bạn có thể dễ dàng tự sửa lỗi đó. –