Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cristian-anderson

[Resolvido] Lista de Usuários e suas permissões

Recommended Posts

Olá amigos,

 

Estou precisando de uma força com uma listagem.

 

Preciso listar no SQL os usuários, os bancos que estes usuários tem acesso e as permissões.

 

Tem algum relatório no próprio SQL para tirar esse relatório?

 

Desculpem a minha ignorância no assunto e agradeço desde já.

 

Um abraço a todos e ótimo final de semana.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode tentar o sp_helplogins

que vai te listar os usuarios em uma determinada base.

 

Abçs

 

cristian, achei este script em uma proc que as vezes utilizo em restore de bases:

 

SELECT * FROM sys.fn_builtin_permissions(DEFAULT) 
   WHERE permission_name = 'SELECT';

 

Pode lhe ser util tb.

 

abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Junior,

 

Muito obrigado pela dica.

 

Mas estou precisando algo do tipo:

 

Banco de Dados;

Usuários que acessam esse banco;

Papéis fixos a nível servidor;

Papéis a nível banco de dados.

 

E isso para cada banco que eu tenho, que são aproximadamente 65.

 

Um abraço.

 

Se precisar de mais detalhes me avise.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta isso:

 


IF EXISTS (SELECT * FROM TEMPDB.dbo.sysobjects WHERE NAME IN ('##Users')) 
BEGIN
 DROP TABLE ##Users
END
GO


IF EXISTS (SELECT * FROM TEMPDB.dbo.sysobjects WHERE NAME IN (N'##ACESSO')) 
BEGIN
 DROP TABLE ##ACESSO
END
GO



CREATE TABLE ##Users (
[sid] varbinary(100) NULL,
[Login Name] varchar(100) NULL
)


CREATE TABLE ##ACESSO ([uSER ID] VARCHAR(MAX), [sERVER LOGIN] VARCHAR(MAX), [DATABASE ROLE] VARCHAR(MAX), [DATABASE] VARCHAR(MAX))



declare @cmd1 nvarchar(500)
declare @cmd2 nvarchar(500)
set @cmd1 = '
INSERT INTO ##Users ([sid],[Login Name]) SELECT sid, loginname FROM master.dbo.syslogins

INSERT INTO ##ACESSO 
SELECT su.[name] ,  
u.[Login Name]  , 
 sug.name   , ''?''
 FROM [?].[dbo].[sysusers] su 
 LEFT OUTER JOIN ##Users u 
 ON su.sid = u.sid 
 LEFT OUTER JOIN ([?].[dbo].[sysmembers] sm  
 INNER JOIN [?].[dbo].[sysusers] sug 
 ON sm.groupuid = sug.uid) 
 ON su.uid = sm.memberuid  
 WHERE su.hasdbaccess = 1 
 AND su.[name] != ''dbo''
'
exec sp_MSforeachdb @command1=@cmd1

SELECT * FROM ##ACESSO 
GROUP BY 
[uSER ID] , [sERVER LOGIN]  , [DATABASE ROLE]  , [DATABASE]  

Compartilhar este post


Link para o post
Compartilhar em outros sites

Junior, bom dia!!!

 

Cara show de bola.

Me ajudou muito.

 

Fui obrigado a acabar fazendo uma planilha um pouco manual para resolver logo o problema.

 

Muito obrigado mesmo. Otimizou muito meu tempo.

Agora queria abusar um pouco mais. rsrsrs

 

Tem como incluir por exemplo se o usuário é sysadmin, dbcreator, etc.....

 

Um abraço e mais uma vez obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cristian, na tabela syslogins tem uma coluna que eh justamente indicando o nivel de permissao do usuario (a nivel de sevidores)...

 

De uma olhada:

 

SELECT sid, loginname, sysadmin, * FROM master.dbo.syslogins

 

 

Precisando eh soh postar..

 

Abçs e boa sorte

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.