Arquitetura do MS SQL Server

Olá pessoal,

Nesta semana foi publicado um artigo meu bem detalhado sobre a arquitetura do SQL Server na Revista SQL Magazine, do site DEVMEDIA.

Nele trago informações utéis a diversos profissionais que utilizam este banco de dados para criar suas aplicações, softwares ou que trabalham mais diretamento com ele (profissionais de TI/DBA/Infraestrutura).

Junto das informações sobre a sua arquitetura, foi incluido uma etapa sobre o ‘FILL FACTOR’, o qual trata de quanto espaço livre será deixado em indíces para futuras inserções. Este não foi escrito por mim, mas sim por outro colaborador DEVMEDIA.

“Fique por dentro

O artigo traz informações sobre a arquitetura do Microsoft SQL Server Database Engine. Ele discute, em linhas gerais, o seu funcionamento em duas etapas: fluxo de processo e de funcionamento. Também conheceremos uma das opções na criação de índices, a FILL FACTOR. Este artigo é importante no desenvolvimento de aplicações que irão utilizar a base de dados SQL Server, no entendimento de problemas de performance e na criação de cenários de alta disponibilidade. Auxilia também projetistas nas análises de funcionamento, buscando maior utilização de recursos do próprio SQL Server Database Engine a fim de trazer mais estabilidade, performance e robustez do software desenvolvido ou em desenvolvimento.”

Segue o link do artigo completo:

http://www.devmedia.com.br/arquitetura-do-sql-server-database-engine/38708

arquitetura_imgFull

Anúncios
Publicado em Alta Disponibilidade, Arquitetura, SQL Server | Etiquetas , , , , , , , , , , , | Publicar um comentário

Ransomware – O novo Terrorismo cibernético

Olá pessoal, hoje trago más notícias.

Durante o dia de hoje (12 de maio de 2017),  foram registrados mais de 45 mil ataques (bem sucedidos) a diversas empresas ao redor do globo, atingindo mais de 70 países. Tais ataques incluíram inclusive hospitais e escolas como alvos.

Alguns dias atrás escrevi um artigo muito interessante sobre ransomware, o qual foi publicado no portal R7. Neste artigo, trago uma breve explicação sobre o vírus e 7 formas de proteção contra ransomware.

Acredito que seja importantíssimo saber como proteger nossas empresas, clientes e inclusive computadores pessoais desses ataques.

Captura de Tela 2017-05-12 às 9.04.11 PM.png

Em vermelho, países atacados (imagem retirada do site: globo.com)

 

Link para o artigo sobre como se proteger desses ataques:

http://noticias.r7.com/blogs/seguranca-digital/sete-formas-de-protecao-contra-ransomware-20170424

 

Em breve, teremos mais post’s!!

Abraço,

Henrique Ribeiro

 

 

Publicado em Ransomware, Security, SQL Server | Etiquetas , , | Publicar um comentário

Views de Sistema / System Views

Olá pessoal, no post de hoje traremos informações básicas sobre views de sistema.

Elas retornam um conjunto de informações que retratam o comportamento do ambiente do banco de dados, mostrando ao DBA informações sobre diversas situações como índices ausentes, espaço armazenado pelos objetos, consultas que estão consumindo mais recursos, entre outras inúmeras informações.

Administradores de banco de dados utilizam muito essas views com o objetivo de poder ter o conhecimento do que esta ocorrendo agora no servidor. Ajuda a identificar gargalos, fazer provisionamentos, consumo de memória, localização de arquivos físicos e lógicos e etc.

Tem algumas que utilizo muito e lembro de cabeça suas sintaxes, porém há muitas outras que necessitam pesquisa para saber quais informações retornam e para que objetivo servem.

Algumas views básicas e muito utilizadas:

  • sys.master_files – traz informações sobre os arquivos dos bancos de dados.
  • sysfilegroups – traz informações sobre os filegroups do banco de dados em uso
  • sysfiles – traz informações sobre arquivos do banco de dados em uso
  • sys.databases – traz informações sobres os bancos de dados da instância
  • sys.dm_exec_requests  – traz informações sobre solicitações sendo executadas na instância

A Microsoft disponibiliza alguns System views poster’s que são excelentes! Trazem todas as view de sistema do SQL Server e ainda indicam seus relacionamentos com as demais views e qual seu objetivo. Segue o link para seu download.

SQL Server 2012 System Views Map

https://www.microsoft.com/en-us/download/details.aspx?id=39083

Abaixo temos ela em formato de imagem (PNG), caso alguém prefira.

SQL_Server_2012_System_Views_Map-1

Em breve, teremos mais post’s!!

Abraço,

Henrique Ribeiro

Publicado em Banco De Dados, Database, DMVs, SQL Server, System Views, Views | Etiquetas , , , , , , , , , , , , | Publicar um comentário

Alta Disponibilidade – High Availability / Recuperação de desastres – Disaster Recovery

Olá pessoal, hoje discutindo com um cliente sobre o projeto dele percebi que tem muitas pessoas que não compreenderam a questão de Alta Disponibilidade (HA) e Recuperação de Desastres (DR).

Sendo essa um questão importante a ser completamente entendida na fase de projeto, decidi escrever brevemente sobe Alta Disponibilidade e Recuperação de Desastres, afim do pessoal que não é da nossa área de TI compreender seus objetivos.

  • Alta Disponibilidade (HA), por definição, é  um sistema informático resistente a falhas de hardware, software e energia, cujo objetivo é manter os serviços disponibilizados o máximo de tempo possível.
  • Recuperação de Desastres (DR), por definição, é um conjunto de políticas e procedimentos para permitir a recuperação ou continuação da infraestrutura de tecnologia e sistemas vitais na sequência de um desastre natural ou provocado pelo homem.

Com os conceitos básicos assimilados, vamos por em prática com alguns exemplos básicos.

HA:

  • Temos a empresa ABC a qual é uma grande player do mercado, operando aproximadamente 20h por dia nos 7 dias da semana, entre atendimento ao público e serviços internos. Foi configurado uma solução de HA a qual permite 99,9% de disponibilidade. Durante um chuva muito forte com trovoadas e raios, aconteceu que um pico de energia acabou queimando componentes do Servidor01, ficando este sem poder operar devido as falhas dos componentes afetadas. Porém como a HA seguiu regras de boas práticas, o Servidor02 esta em outra localidade física da empresa e não sofreu nenhuma pane devido a descarga elétrica. Este por sua vez teve plena capacidade de assumir os serviços do Servidor01 (o qual foi afetado) e a empresa continuou trabalhando normalmente, sem notar quedas ou interrupções dos sistemas/serviços prestados.

DR

  • Temos a empresa ABC a qual é uma grande player do mercado, operando aproximadamente 20h por dia nos 7 dias da semana, entre atendimento ao público e serviços internos. Foi configurado uma solução de DR, a qual permite restabelecer os serviços em 50 minutos e perder no máximo 5 minuto de trabalho. Desastres tem baixa probabilidade de acontecer, porém caso ocorram podem trazer grandes problemas para a empresa. DR cobre tanto desastres naturais quanto humanos, desde terremotos a erros de operação do sistema (falha humana). Esse plano de DR inclui 5 itens distintos: hardware, software, rede, processos e pessoas. A empresa ABC infelizmente foi atingida por um raio e como consequência vários componentes queimaram, inclusive havendo um pequeno incêndio no Data Center, impossibilitando o uso dos equipamentos. Nesse cenário uma solução apenas de HA não seria suficiente para por a empresa de volta em operação. Assim o plano de DR previamente realizado, com todos os 5 itens atendidos pode por todos de volta ao funcionamento em poucos minutos. Sendo assim a empresa esteve offline apenas alguns minutos, sem afetar o atendimentos aos clientes, fornecedores e sem perder credibilidade no mercado.

Agora que compreendemos as diferenças entre HA e DR nota-se que DR é algo maior e mais complexo o qual acaba incluindo soluções de HA dentro de si, porém juntamente de outros processos.

Para empresas pequenas/médias indica-se ao menos a solução de HA.

Para demais empresas indica-se alguma solução de DR e obrigatoriamente uma boa solução de HA.

Em breve, teremos mais post’s!!

Abraço,

Henrique Ribeiro

Publicado em Alta Disponibilidade, Banco De Dados, Database, SQL Server | Etiquetas , , , , , , , , , | Publicar um comentário

A importância do backup no Banco de Dados

Olá pessoal, hoje o assunto não é específico para SQL Server, mas server pra todos os softwares de banco de dados existentes e inclusiva serve para a VIDA de vocês DBA’s, administradores, trabalhadores da área de TI.

A principal função de uma backup é ter a capacidade de restaurar os dados até determinado tempo no espaço (RPO). Vale ressaltar que backup não é solução de alta disponibilidade.

Uma boa comparação para ter a real necessidade de uma backup é compará-lo com algum seguro de carro/casa: é bom ter e melhor ainda não precisar utilizar.

Backup Computer Key

Uma boa estratégia de backup proporciona que o RPO seja baixo, sendo o ideal ser o mais próximo a zero, ou seja, até o momento atual/sem perder dados/minutos trabalhados.

Vamos supor uma situação em que o banco de dados é usado por uma aplicação departamental com um único usuário acessando uma hora por dia.  Em uma eventual pane no banco de dados, caso o backup seja restaurado para o final da semana anterior (RPO), não causaria muito transtorno uma vez que o usuário pode recuperar os dados perdidos em poucos minutos de trabalho.

Porém se tivermos uma aplicação empresarial com centenas de usuários concorrentes, operando 24 horas por dia nos sete dias da semana (24×7) realizando consultas/vendas nesse banco de dados. Este não suportaria perder tantos dados, causaria danos irreparáveis na empresa. Sendo assim, uma pane nesse servidor deve ter RPO igual ao milissegundo atual, ou seja, não pode haver perda de dados.

Nos dois cenários acima descritos o RPO deve ser baixo, no entanto seriam necessários investimentos e estratégias de backups diferentes.

No primeiro exemplo, um backup semanal até seria o suficiente, já no segundo teriam que haver diversos investimentos em backups para garantir um RPO próximo ao momento atual.

A pergunta que deve-se fazer para definir uma boa estratégia de backup é a seguinte:

  • Quantos minutos trabalhados posso perder sem prejudicar minha empresa?

Com a resposta em mãos ficará fácil elaborar o melhor plano possível.

 

Em breve, teremos mais post’s!!

Abraço,

Henrique Ribeiro

Publicado em Backup, Banco De Dados, SQL Server | Etiquetas , , , , | Publicar um comentário

Database Mail – Enviando email HTML

Olá pessoal, hoje daremos continuidade no assunto do Database Mail.

Neste artigo daremos exemplos e instruções de como enviar um email com formatação HTML, utilizando tabelas e resultado de selects para envio das informações.

Formatação HTML juntamente do resultado de queries SQL formam uma poderosa arma em favor do DBA, afim de disparar emails administrativos/gerenciais.

O primeiro passo é realizar a configuração do Database Mail.

Com a ferramenta configurada com sucesso, o próximo passo é configurar o HTML e as queries SQL para formatação do body (corpo) do email, essa sim é a parte mais complexa e necessita de um certo conhecimento a nível HTML (pode-se utilizar ferramentas visuais para auxiliar na geração do código html).

Segue um exemplo básico de email HTML e query SQL.

image

Após ter o código formatado como desejado, basta executar o script e validar o email recebido na caixa de entrada.

image

Com o script aprovado, basta agendá-lo através de um JOB no SQL Server para disparar de acordo com o desejado.

Abaixo, segue script do email exemplo demonstrado acima:

–monta email
DECLARE @body nvarchar(MAX) = ”; –variavel que formata o corpo do email
SET @body = –definindo varial com o corpo do email
‘<table border=1 width=”100%”><tr><th colspan=”4″ bgcolor=”darkblue”>’
+ ‘<h3>Relatorio JOBS – Banco Dados CLiente TESTE </h3></th></tr>’ –titulo da tabela
+ ‘<tr bgcolor=”lightblue”><th>Nome do Job<th>Ultima Vez executou<th>Status do Job<th>Status da Ultima Execucao</tr>’ –colunas do email
+ CAST( (
SELECT distinct name AS [TD] –importante colocar ‘alias’ das colunas como ‘TD’ (informando pra ser coluna)
,convert(nvarchar(20),CONVERT(DATETIME,RTRIM(run_date),113),103) AS [TD]
,CASE WHEN enabled=1 THEN ‘Habilitada’
ELSE ‘Desabilitado’
END AS [TD]
,CASE    WHEN SJH.run_status=0 THEN  ‘Falho’
WHEN SJH.run_status=1 THEN  ‘Sucesso’
WHEN SJH.run_status=2 THEN  ‘Tentando’
WHEN SJH.run_status=3 THEN  ‘Cancelado’
ELSE  ‘Desconhecido’
END as [TD]
FROM   msdb..sysjobhistory SJH  JOIN   msdb..sysjobs SJ  ON     SJH.job_id=sj.job_id  WHERE  step_id=0
AND CONVERT(DATETIME,RTRIM(run_date),113) >= DATEADD(d,-1,GetDate())
and SJH.instance_id = (select MAX(b.instance_id) from msdb..sysjobhistory b where SJH.job_id=b.job_id) ORDER BY 1,2,3,4
FOR XML RAW(‘tr’), ELEMENTS –traduz linhas do select pra ser linhas da tabela
) AS NVARCHAR(MAX))
+ ‘<tr><td colspan=”4″ bgcolor=”darkblue” align=”right”>’
+ ‘Informacao extraida em: ‘ + CONVERT( nvarchar, GETDATE(), 113) + ‘</td></tr></table>’;

–envia email
EXEC msdb.dbo.sp_send_dbmail –procedure que envia os emails
@body = @body –corpo do email, passando variavel acima definida
, @recipients = ‘destinatario@email.com.br;’ –destinatario(s) do email
, @subject = ‘Relatorio Jobs’ — assunto do email
, @profile_name = ‘NomedoProfileCriado’ –nome do profile que ira disparar o email
, @body_format = ‘HTML’; –importante informar o formato do email, nesse caso HTML
GO

 

Em breve, teremos mais post’s!!

Abraço,

Henrique Ribeiro

Publicado em Automation, Backup, Banco De Dados, Database Mail, SQL Server | Etiquetas , , , , , , , , , , , , , | Publicar um comentário

Database Mail – Configurando envio de email via SQL Server

Olá pessoal, hoje veremos sobre como configurar o Database Mail.

O Database Mail é o componente responsável pelo envio de email apartir do SQL Server 2008, muito utilizado para envio de relatórios gerenciais.

Lembrando que esta ferramenta é diferente do Reporting Services.

Configurando o Database Mail

Expandir ‘Management’ –> Botão direito em ‘Database Mail’ –> ‘Configure Database Mail’

image

Clique em ‘Next’

image

Selecione a primeira opção ‘Set up Database Mail’

image

Informe nome do profile e descrição do profile –> clique em ‘add’

image

Preencher com informações pedidas, nome da conta, descrição, email a ser utilizado para envio, Nome do email a ser exibido, email de resposta (quando alguem der ‘reply’ [não necessário]), servidor smtp e porta. Após definir método de autenticação, geralmente utilizado login e senha do email que será o remetente –> clique em ‘OK’

image

Confirme as informações e clique em ‘Next’

image

Clique em ‘Next’

image

Confirmar informações sobre parâmetros de email e clique em ‘Next’

image

Clique em ‘Finish’

image

Confirme se processos rodaram com sucesso e clique em ‘Close’

image

Feito, temos o Database Mail configurado! Agora precisamos apenas testar o envio de email.

Clique com o botão direito sobre o Database Mail e selecione ‘Send Test E-Mail’

image

Selecione o Profile que acabastes de criar, o destinatário do email, o assunto e o corpo (texto) do email e em seguida clique em ‘Send Test E-Mail’

image

Pronto! Email teste enviado, agora valide na sua caixa de entrada.

image

Email recebido com sucesso! Sendo assim o Database Mail foi configurado com sucesso!

Em breve, teremos mais post’s!!

Abraço,

Henrique Ribeiro

Publicado em Automation, Database, Database Mail, SQL Server | Etiquetas , , , , , , , , , , , , , | 1 Comentário