Como faço para gerar uma tabela de permissões concedidas para tabelas de banco de dados para um usuário de banco de dados?
-
03-07-2019 - |
Pergunta
Eu tenho um banco de dados SQL Server 2000 com cerca de um par de cem mesas. Existem várias contas de usuário SQL que podem acessar esse banco de dados, mas cada um tem diferentes permissões concedidas em tabelas no DB.
Como faço para criar um script para me dar um relatório das permissões concedidas a um usuário particular. ou seja, para gerar algo como:
Table SELECT DELETE UPDATE INSERT ALTER
----- ------ ------ ------ ------ -----
Invoices Yes No Yes Yes No
Orders Yes Yes Yes Yes No
Customers Yes No Yes Yes No
e assim por diante. É sexta-feira, meu SQL-fu é baixa hoje e eu tenho um milhão de outras coisas para fazer antes de se terminar aqui hoje e se alguém tinha um script útil para fazer isso já, então eu seria eternamente grato:)
Solução
Select TABLE_NAME, PRIVILEGE_TYPE
from INFORMATION_SCHEMA.TABLE_PRIVILEGES
where GRANTEE = @username
Isto irá funcionar no servidor SQL 2000/2005/2008
Outras dicas
Eu não tenho certeza se este procedimento funciona para SQL 2000 ou não, ele não recebe o formato exato, mas você pode obter parte do caminho até lá, pode você pode girar para fora para obter o seu formato.
sys.sp_helprotect @Username = 'myUser'