quarta-feira, 13 de junho de 2018

Criando usuários Read Only no SQL Server

O Intuito deste T-SQL é criar usuários Read Only para todos os bancos de um determinado servidor.

Basta executar o T-SQL abaixo, pegar o output e executa-lo.

USE [master] 
go 
CREATE login [] WITH password=N'pass', default_database=[my_db], 
check_expiration=OFF, check_policy=ON 
go 
SET nocount ON; 
DECLARE @user_name  SYSNAME, 
        @login_name SYSNAME; 
SELECT @user_name = '<user>', 
       @login_name = '<user>' 
SELECT '     USE ' + Quotename(NAME) 
       + ';     CREATE USER ' + Quotename(@user_name) 
       + ' FOR LOGIN ' + Quotename(@login_name) 
       + ' WITH DEFAULT_SCHEMA=[dbo];     EXEC sys.sp_addrolemember ''db_datareader'', ''' 
       + @user_name 
       + ''';      EXEC sys.sp_addrolemember ''db_denydatawriter'', ''' 
       + @user_name + ''';  GO ' 
FROM   sys.databases 
WHERE  database_id > 4 
       AND state_desc = 'ONLINE' 

terça-feira, 16 de janeiro de 2018

Verificando tempo de execução no SQL Server


SELECT
 command, s.text, start_time, percent_complete, 
         RIGHT('0' + Cast((Datediff(s, start_time, Getdate())/3600) AS VARCHAR) + ':', 3) 
       + RIGHT('0' + Cast((Datediff(s, start_time, Getdate())%3600)/60 AS VARCHAR) + ':', 3) 
       + RIGHT('0' + Cast((Datediff(s, start_time, Getdate())%60) AS VARCHAR), 2 
       ) AS running_time, 
         RIGHT('0' + Cast((estimated_completion_time/3600000) AS VARCHAR) + ':', 3 ) 
       + RIGHT('0' + Cast((estimated_completion_time %3600000)/60000 AS VARCHAR) + ':', 3) 
       + RIGHT('0' + Cast((estimated_completion_time %60000)/1000 AS VARCHAR), 3       
       )
 AS est_time_to_go, 
       Dateadd(second, estimated_completion_time / 1000, Getdate()) 
       AS est_completion_time 
FROM   sys.dm_exec_requests r 
       CROSS apply sys.Dm_exec_sql_text(r.sql_handle) s 
WHERE  r.command IN ( 'RESTORE DATABASE', 'BACKUP DATABASE', 'RESTORE LOG', 
                      'BACKUP LOG','DbccFilesCompact' )