domingo, 24 de outubro de 2021

Creating user to acess SQL databases on Azure

 

Open Azure Data Studio and execute these commands:

-- create login credentials on the server
USE master;
CREATE LOGIN user_name WITH password='p455w0rd';
GO

-- create user on the database
USE DATABASE_NAME;
CREATE USER user_name FROM LOGIN user_name;
GO

-- grant permission for user
USE DATABASE_NAME;
EXEC sp_addrolemember 'db_datareader''user_name';
EXEC sp_addrolemember 'db_datawriter''user_name';
EXEC sp_addrolemember 'db_backupoperator''user_name';
GO

sábado, 7 de agosto de 2021

SQL Backup Docker container

Create account in https://sqlbak.com/ and copy the key (You will need after)


Download sqlBak:

Run: docker run --name sqlbak_container -d -v sqlbak_volume:/opt/sqlbak pranasnet/sqlbak


Run the container with your key

Run: docker exec sqlbak_container sqlbak --register --key=YOUR_KEY_HERE -n sqlbak


Now you need to add a connection to DBMS (MySQL, PostgreSQL, MSSQL Server). 

Run: docker exec 9d8a0302a4a3 sqlbak -ac -dt <dbms_type> -h <host> -u <user_name> -p <password>



terça-feira, 3 de agosto de 2021

SQL Server on Docker Container

After instal Docker run following commands (depends on your main OS, maybe you need add "sudo" on begin for each command): 


// install SQL Server

docker pull mcr.microsoft.com/mssql/server:2017-latest


// run container

docker run --name sqlserver --hostname sqlserver -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=YourPasswordHere" -p 1433:1433 -d mcr.microsoft.com/mssql/server:2017-latest 


// run container with autorun on restart (add --restart always)

docker run -- restart always --name sqlserver --hostname sqlserver -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=YourPasswordHere" -p 1433:1433 -d mcr.microsoft.com/mssql/server:2017-latest 


// list services

docker ps -a


// open bash terminal inside into container

docker exec -it sqlserver "bash"


// run sqlcmd tool

/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "YourPasswordHere"


// stop container

docker stop sqlserver


// remove 

docker rm sqlserver


quarta-feira, 30 de junho de 2021

Oracle - Week number per day

 Query:

SELECT TODAY, 

TO_CHAR(TODAY,'IW') "WEEK_NUM"

from (select (TO_DATE('01/01/'||TO_CHAR(2021), 'DD/MM/YYYY') - 1) + level TODAY 

from DUAL 

connect by LEVEL <= 366)

Result:











Oracle - Query retuning start and end date per week number and year

 Query:

SELECT * FROM (SELECT WEEK_YEAR, WEEK_NUM, MIN(TODAY) START_DATE, MIN(TODAY) + 6 END_DATE

FROM (SELECT EXTRACT(YEAR FROM TODAY) WEEK_YEAR, TODAY, 

TO_CHAR(TODAY,'IW') "WEEK_NUM"

from (select (TO_DATE('01/01/'||TO_CHAR(2021), 'DD/MM/YYYY') - 1) + level TODAY 

from DUAL 

connect by LEVEL <= 368))

GROUP BY WEEK_YEAR, WEEK_NUM

ORDER BY START_DATE)

WHERE WEEK_YEAR = 2021

AND NOT (EXTRACT(MONTH FROM START_DATE) = 1 AND WEEK_NUM > 10)

Result:





domingo, 14 de março de 2021

Recuperando banco de dados Firebird

1 - Para facilitar, copiar da pasta firebird/bin os arquivos gfix.exe, gbak.exe e fbclient.dll na pasta C:\TEMP\BANCO (se não exitir, criar);

2 - Copie o banco corrompido na pasta C:\TEMP\BANCO e renomeie de *.fdb para BANCO.FDB;

3 - Execute todos os comandos abaixo. Eles devem ser executados com o prompt de comando executado como adminsitrador. Para isso, clicar no botão iniciar, pesquisar por "CMD", clicar com botão direito e escolher "Executar como Administrador").

  • gfix -v -full C:\TEMP\BANCO\BANCO.FDB -USER SYSDBA -pass masterkey
  • gfix -mend C:\TEMP\BANCO\BANCO.FDB -USER SYSDBA -pass masterkey
  • GBAK -backup -V -ignore -garbage -limbo C:\TEMP\BANCO\BANCO.FDB C:\TEMP\BANCO\BANCO.gBK -USER SYSDBA -pass masterkey
  • GBAK  -c -v -z C:\TEMP\BANCO\BANCO.gbk C:\TEMP\BANCO\BANCO_RECUPERADO.fdb -USER SYSDBA -pass masterkey

Pronto! Seu banco recuperado estará na pasta como BANCO_RECUPERADO.fdb.

SE HOUVER ERROS

Se aparecer um erro: "Can't format message nn:mmm -- message text not found" se referenciando ao arquivo (diretório)\firebird.msg, copie-o da instalação do Firebird (geralmente C:\Fortes\Firebird\Firebird_2_5), cole no diretório indicado na mensagem de erro e repita o procedimento.

Em alguns casos pode haver conflito com o Interbase ou outra instância do Firebird. Assim será necessário desinstalar o Firebird e instalar novamente ou fazer todo esse procedimento numa máquina virtual limpa bastando instalar a versão do Firebird antes.

quinta-feira, 14 de janeiro de 2021

ORACLE - Listar meses com data inicial e final de cada mês

Segue queries para gerar lista de meses com data inicial e final de cada mês:


SELECT
TO_CHAR(TRUNC (ANOBASE, 'YEAR'), 'YYYY') ANO,
TO_CHAR(LEVEL, '00') MES,
((SELECT ADD_MONTHS (TRUNC (ANOBASE, 'YEAR'), -1) FROM DUAL) + numtoyminterval(level,'month')) as DTINI, 
LAST_DAY ((SELECT ADD_MONTHS (TRUNC (ANOBASE, 'YEAR'), -1) FROM DUAL) + numtoyminterval(level,'month')) as DTFIN 
from (SELECT TO_DATE('01/01/2022') ANOBASE from dual)
connect by level <= 12


Exemplo de saída:






Depois disso basta dar um join em outra tabela que desejar e usar as datas geradas para subconsultas.




Oracle - Listar datas do mês

 select TRUNC(SYSDATE)  + level - 1 dt from   dual connect by level <= (   LAST_DAY(SYSDATE) - TRUNC(SYSDATE) + 1 )