Permissão de usuários

Dois script simples (#sqn) para levantamento de permissão de usuários a nível de base de dados.
Script01:

</pre>
DECLARE @DB_USers TABLE
(DBName sysname, UserName sysname, LoginType sysname, AssociatedRole varchar(max),create_date datetime,modify_date datetime)

INSERT @DB_USers
EXEC sp_MSforeachdb

'
use [?]
SELECT ''?'' AS DB_Name,
case prin.name when ''dbo'' then prin.name + '' (''+ (select SUSER_SNAME(owner_sid) from master.sys.databases where name =''?'') + '')'' else prin.name end AS UserName,
prin.type_desc AS LoginType,
isnull(USER_NAME(mem.role_principal_id),'''') AS AssociatedRole ,create_date,modify_date
FROM sys.database_principals prin
LEFT OUTER JOIN sys.database_role_members mem ON prin.principal_id=mem.member_principal_id
WHERE prin.sid IS NOT NULL and prin.sid NOT IN (0x00) and
prin.is_fixed_role &lt;&gt; 1 AND prin.name NOT LIKE ''##%'''

SELECT

dbname,username ,logintype ,create_date ,modify_date ,

STUFF(

(

SELECT ',' + CONVERT(VARCHAR(500),associatedrole)

FROM @DB_USers user2

WHERE

user1.DBName=user2.DBName AND user1.UserName=user2.UserName

FOR XML PATH('')

)

,1,1,'') AS Permissions_user

FROM @DB_USers user1

GROUP BY

dbname,username ,logintype ,create_date ,modify_date

ORDER BY DBName,username

Script02:


 

----------------- NIVEL DE OBJETO ------------------------
DECLARE @DB_USers TABLE
(DBName sysname,
[Schema] varchar(max),
[Object] varchar(max),
[permissions_type] varchar(max),
[permission_name] varchar(max),
[permission_state] varchar(max),
state_desc varchar(max),
permissionsql varchar(max),
UserName sysname, LoginType sysname, AssociatedRole varchar(max),create_date datetime,modify_date datetime)

INSERT @DB_USers
EXEC sp_MSforeachdb
'use [?]
SELECT Distinct ''?'' AS DB_Name,
sys.schemas.name as [Schema]
, sys.objects.name as [Object]
, sys.database_permissions.type as permissions_type
, sys.database_permissions.permission_name as permission_name
, sys.database_permissions.state as permission_state
, sys.database_permissions.state_desc as state_desc
, state_desc + '' '' + permission_name
+ '' on [''+ sys.schemas.name + ''].['' + sys.objects.name
+ ''] to ['' + prin.name + '']''
COLLATE LATIN1_General_CI_AS AS permissionsql
, case prin.name when ''dbo'' then prin.name + '' (''+ (select distinct SUSER_SNAME(owner_sid) from master.sys.databases where name =''?'') + '')'' else prin.name end AS UserName,
prin.type_desc AS LoginType,
isnull(USER_NAME(mem.role_principal_id),'''') AS AssociatedRole ,prin.create_date,prin.modify_date
FROM sys.database_permissions
LEFT JOIN sys.objects ON sys.database_permissions.major_id = sys.objects.object_id
LEFT JOIN sys.schemas ON sys.objects.schema_id = sys.schemas.schema_id
LEFT JOIN sys.database_principals prin ON sys.database_permissions.grantee_principal_id = prin.principal_id
LEFT OUTER JOIN sys.database_role_members mem ON prin.principal_id=mem.member_principal_id
WHERE prin.sid IS NOT NULL and prin.sid NOT IN (0x00) and
prin.is_fixed_role  1 AND prin.name NOT LIKE ''##%'' ORDER BY 1, 2, 3, 5'

SELECT dbname,
username ,
logintype ,
create_date ,
modify_date,
[Schema],
[Object],
[permissions_type],
[permission_name],
[permission_state],
state_desc, permissionsql,
STUFF((SELECT distinct ',' + CONVERT(VARCHAR(500),associatedrole)
FROM @DB_USers user2
WHERE user1.DBName=user2.DBName AND user1.UserName=user2.UserName

FOR XML PATH('')),1,1,'') AS Permissions_user
FROM @DB_USers user1
GROUP BY dbname,username,logintype ,create_date,modify_date,[Schema],
[Object],[permissions_type],[permission_name],[permission_state],state_desc, permissionsql
ORDER BY DBName,username

 

 

Anúncios

Traduzir o Management Studio

Em um dos muitos grupos que participo, surgiu uma dúvida de se alterar o Management Studio de Inglês para Português ou vice-versa.
Dá para ser fazer de dois modos: Baixando novamente e reinstalando, ou somente baixar o pacote com a linguagem que você precisa.
No meu caso, vou utilizar a versão 17.5 que esta em inglês:
v17
atual

Passo 1: Baixar o pacote de idiomas, que no meu caso, é Português – Brasil
https://www.microsoft.com/pt-br/download/details.aspx?id=48157

Passo 2: Instalar o pacote de idiomas:

Passo 3: Alterar a linguagem:linguagem

Alterando a linguagem, é necessário reiniciar somente o MMS:
reinciar

Passo 4: Checar a nova linguagem:
portugues

Simples, rápido e prático.

Dúvidas, deixe nos comentários.

 

Dica rápida – Checar ultimo backup realizado

Dica rápida do dia.

Sintaxe simples que checa quando foi realizado o último backup, tipo de backup, local do backup (blob, disco, storage) e se o backup é somente cópia.
Neste meu caso, utilizo as tabelas de sistema:
msdb.dbo.backupmediafamily e msdb.dbo.backupset


declare @base varchar(max) = 'BASE'

SELECT
SERVERPROPERTY('Servername') AS 'Servidor',
msdb.dbo.backupset.database_name As 'Database',
CASE msdb..backupset.type
WHEN 'D' THEN 'Database'
WHEN 'L' THEN 'Log'
WHEN 'I' THEN 'Diferencial'
WHEN 'F' THEN 'File ou Filegroup'
WHEN 'G' THEN 'Diferencial Arquivo'
WHEN 'P' THEN 'Parcial'
WHEN 'Q' THEN 'Diferencial Parcial'
END AS 'Tipo do Backup',
msdb.dbo.backupset.backup_start_date As 'Data Execucao',
msdb.dbo.backupset.backup_finish_date As 'Data Encerramento',
msdb.dbo.backupset.expiration_date As 'Data de Expirao',
(msdb.dbo.backupset.backup_size / 1024) As 'Tamanho do Backup em MBs',
msdb.dbo.backupmediafamily.logical_device_name As 'Dispositivo ou Local de Backup',
msdb.dbo.backupmediafamily.physical_device_name As 'Caminho do Arquivo',
msdb.dbo.backupset.description As 'Descricao',
msdb.dbo.backupset.compatibility_level,
Case msdb.dbo.backupset.compatibility_level
When 80 Then 'SQL Server 2000'
When 90 Then 'SQL Server 2005'
When 100 Then 'SQL Server 2008 ou SQL Server 2008 R2'
When 110 Then 'SQL Server 2012'
else '> SQL2012'
End As 'Desc Nivel de Compatibilidade',
msdb.dbo.backupset.name AS 'Backup Set'

, case when msdb.dbo.backupset.is_copy_only = 1 then 'Somente Copia' else 'Full' end as Copia

FROM msdb.dbo.backupmediafamily INNER JOIN msdb.dbo.backupset
ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id
WHERE (CONVERT(datetime, msdb.dbo.backupset.backup_start_date, 103) >= GETDATE() - 15)
and msdb.dbo.backupset.database_name = @base
ORDER BY msdb.dbo.backupset.database_name
, msdb.dbo.backupset.backup_finish_date desc

 

Resetar senha “sa”

Tags

, , , , ,

Dica rápida de hoje: habilitar o usuário “sa” da instância.
Mas porque fariamos isso:
Motivo 1) Instancia legada de um servidor que não é do seu time;
Motivo 2) Algum “gênio” (sic) desabilitou todos usuários sysadmin;
Motivo 3) De alguma forma, perdeu-se acesso a instância,
Poderia citar “n” motivos, mas no meu caso, foi instancia legada, de um servidor que não estava em nosso road map, e precisava acessa-lo para checar integridade e realizar a documentação.

Vamos ao passo a passo.

Passo 1: Identificar a instancia
Temos que iniciar o CMD como administrador: Inciar –> Executar — CMD — Botão direto — Executar como Administrador.
O prompt irá ficar deste modo:

Agora execute o comando  SQLCMD -L ou osql /L que o retorno será as instancias no servidor e/ou rede. No caso, tenho somente uma instancia:

Passo 2: Parar a instancia.
Temos dois modos: Painel de controle –> Ferramentas administrativas –> Serviços
Clicar com o botão direito –> Stop.

Porém, como já estamos com a tela do prompt aberta, vamos por linha de comando:
NET STOP MSSQLSERVER

Se for uma instancia nomeada:
net stop MSSQL$ instancename

Todos os serviços dependentes irão ser parados.

Passo 3: Iniciar a instancia em modo single user
No mesmo prompt de comando, executaremos:
NET START MSSQLSERVER /m

O parâmetro -m que defini modo single user.

Passo 4: Logar na instancia
No mesmo prompt de comando:
sqlcmd -S localhost -E

onde -S é o servidor e -E é trusted connection

Passo 5: Alter Login e Enable
Como agora estamos logados, é só utilizar o comando de alter login:

ALTER LOGIN sa WITH PASSWORD = ‘Password’
GO

ALTER LOGIN sa ENABLE;
go

ALTER LOGIN sa WITH PASSWORD = ‘Password’ UNLOCK ;
go

Passo 6: Retirando single user
Feito o alter login, o próximo passo é remover o single user e subir a instancia
a) net stop MSSQLSERVER
b) NET START MSSQLSERVER

Pronto. Agora é só logar com o usuário “sa” e senha que colocou no passo 5.

Até mais!!

Fontes:
https://technet.microsoft.com/pt-br/library/ms190236(v=sql.105).aspx
https://technet.microsoft.com/pt-br/library/ms187598(v=sql.105).aspx
https://technet.microsoft.com/pt-br/library/ms190737(v=sql.105).aspx
https://docs.microsoft.com/pt-br/sql/tools/sqlcmd-utility

 

SQLSATURDAY 676 #SaoPaulo

E hoje recebo mais uma notícia fantastica:

Minha palestra sobre carreiras foi aprovada para o SQLSaturday 676 de São Paulo, que será dia 30 de setembro de 2017.

Irei falar sobre as diferenças entre as carreiras de DA, DBA, Cientista de dados e Engenheiro de dados e como o mercado atual esta enxergando (ou não) as diferenças.

Para quem não conhece, o SQLSat como é popularmente chamado, é um sábado todo de muitas palestras segmentados por trilhas.

Este ano teremos trilhas de:

Big Data e Data Science
Business Intelligence
Cloud Computing
Carreira e Certificação
Database Administration & Deployment

Se inscreva já! Não fique fora dessa! E é de graça!!!

Mais informações em:

http://www.sqlsaturday.com/676/EventHome.aspx

 

 

TDC – Evento de Julho

Opa!!!!
Voltando!!!! e com muitas novidades!!!
Apesar da ausencia no blog, muita coisa aconteceu e aos poucos vou liberando.
Teremos muitos artigos técnicos, muitos posts de case do dia a dia e vamos que vamos.

Hoje vou falar de um evento que tive o enorme prazer em palestrar.

The Developers Conference

Para quem não conhece o evento, segue o link para conhecer:
TDC Facebook

Foi minha primeira palestra fora do círculo de empresas, então foi gratificante, para dizer o minimo.

Eu falei um pouco sobre uma migração em que participei do Oracle para o Azure.
Esta migração considerado fi considerado pela Microsoft como a maior migração para o Azure da América Latina, e claro que este assunto eu vou falar ainda esta semana e em outro post.

Apesar o tempo que cadastrei minha palestra, consegui apresentar os desafios desta migração, erros e acertos e claro, conheci pessoas em que tive contato somente “on line”.

As fotos que consegui tirar estão logo abaixo.

Em breve, mais novidade!

Até mais pessoal!

Bem Vindo TDC

Cracha de identificação

Placa de localização das palestras


_Frente_003_Frente_001

_Frente_002

_Frente

 

 

 

 

 

 

 

 

 

 

TSQL – Clima Natalino

Tags

, , ,

Revisando uma biblioteca de scripts, me deparei com uma função que utilizo bem pouco: geometry::STMPointFromText
Na verdade creio que a utilizei somente umas duas vezes.

E executando o script obtenho a imagem abaixo. Não me recordo a origem, mas achei na época bem interessante. Se alguém souber o fonte, por favor me informe para eu colocar os devidos créditos.

papai_noel