Jump to content

Archived

This topic is now archived and is closed to further replies.

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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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]  

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.