Odpowiedź od Knb nie działa dla mnie z powodu brakujących uprawnień. (Roztwór do innego użytkownika niż obecnie)
Nie można wykonać jako główna baza danych, ponieważ główny „mój user” nie istnieje, ten rodzaj kapitału nie może być podszywa, albo nie mają pozwolenie.
Ten answer pokazuje, jak uzyskać listę procedur składowanych na których dany użytkownik bazy danych („mój user”) posiada uprawnienie EXECUTE wyraźnie przyznana:
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')
zmodyfikowałem go w następujący sposób, aby uzyskać lista muszę:
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'))
Testowane na Microsoft SQL Server 2008 R2
mogę oglądać skrypt przechowywanej proc edure za pomocą "Script Stored Procedure As" -> "Create To"; ale has_view_definition nadchodzi jako "0". Jak możemy to poprawić? – Lijo
Czy można uruchomić ['SELECT * FROM sys.fn_my_permissions ('', 'OBJECT')'] (http://msdn.microsoft.com/en-us/library/ms176097.aspx) i zamieścić tutaj wynik? –
BTW, moje zapytanie nie obsługuje procedur w innym schemacie, nie dbo. Możesz to łatwo naprawić samodzielnie. –