Arquivo

Archive for the ‘Não categorizado’ Category

IMPERDÍVEL – The Amazing Data

Galera,

No mês de MAIO, nos dias 19 e 20, acontecerá a 1ª edição do SQL SERVER: THE AMAZING DATA, evento no qual teremos os melhores e mais reconhecidos profissionais da área, compartilhando experiências e conhecimentos durante mais de 16 HORAS !!

Programação:
19/05
Workshop SQL Server Query Tuning & Optimization
Apresentação: Benjamin Neverez
Especialista em tuning e otimização de consulta, é uma das maiores referências técnicas e autor de três livros sobre o assunto:
“High Performance SQL Server”
“SQL Server 2014 Query Tuning & Optimization”
“Inside the SQL Server Query Optimizer”
Alem de ser também, co-autor do livro
“SQL Server 2012 Internals”.

20/05
Apresentações GRATUITAS
Imperdível 😉

Local: Av. Paulista, 1009 – São Paulo/SP
(Próximo a estação Trianon-Masp Linha Verde do Metrô)

Espero TODOS vocês no evento e não deixem de inscreverem-se no blog, no canal do youtube e no grupo de discussão SQLManiacs.

Grande abraço a todos.

Categorias:Não categorizado

Azure SQL Database – Scaling In e Scaling Out através do elastic pool

Fala pessoal, tudo bem com vocês?

Na última sexta-feira (18/11) participei do evento 24 Horas do Pass e apresentei como configurar o elastic pool do Azure SQL Database para gerenciar a utilização de recursos e garantir alta performance e estabilidade de seus bancos de dados hospedados no Azure.

Caso tenha interesse fazer o download do material utilizado, basta acessar o link abaico:

Scaling In e Scaling Out através do elastic pool

Espero que gostem e não deixem de inscreverem-se no blog, no canal do youtube e no grupo de discussão SQLManiacs.

Grande abraço a todos.

Categorias:Não categorizado

Agradecimentos – 2014

Galera,

Neste breve vídeo quero agradecer por tudo que ocorreu neste ano de 2014.

Espero que gostem.

Grande abraço a todos.

Categorias:Não categorizado

Highway To Hell – Extended Events

E ai galera, tudo bem com vocês?

Festas de final de ano chegando e aquela correria de sempre não é?

No post dessa semana quero disponibilizar todos os vídeos que publiquei até agora da nossa série sobre extended events e facilitar para quem não conseguiu acompanhar desde o início:

Parte 1 – Introdução
Parte 2 – Monitorando Deadlocks
Parte 3 – Arquitetura do XEvents
Parte 4 – Monitorando quais consultas utilizam mais o recurso de paralelismo
Parte 5 – Metadados dos XEvents
Parte 6 – Monitorando erros do SQL Server com o XEvents
Parte 7 – Monitorando Sort Warnings
Parte 8 – Quantidade de Batchs por banco de dados
Parte 9 – Entendendo o system_health
Parte 10 – Monitorando transações
Parte 11 – Descobrindo problemas de I/O

Não deixei de fazer sua inscrição no blog para continuar acompanhando a série e todos os novos posts.

Grande abraço a todos.

 

Pergunte ao Gordo – Arquivos dinâmicos com SSIS

Galera,

Estou iniciando hoje uma nova séria no blog com o nome de PERGUNTE AO GORDO.

A idéia é responder as dúvidas que recebo por email de forma bem clara e bem prática.

Neste primeiro post responderei uma pergunta bem interessante que recebi na semana passada:

“Vitor, preciso ler uma tabela de funcionários e exportar os registros para arquivos textos que serão criados baseados no ano de admissão de cada funcionário. Por exemplo, um funcionário que foi admitido em 01-01-2001 tem de estar no arquivo texto 2001.txt, um funcionário que foi admitido em 01-01-1998 tem de estar no arquivo texto 1998.txt e assim por diante.”

Para esta demonstração utilizarei a tabela ilustrada na Figura 1.

Tabela
Figura 1 – Tabela Employee

Inicialmente precisamos descobrir quais os anos de admissão existentes na tabela Employee utilizando a uma tarefa Execute SQL Task.

Será necessário que o resultado da consulta executada pela tarefa seja retornado em formato de Set e para isso definimos a propriedade ResultSet como Full result set, conforme ilustrado na Figura 2.

SSIS_1
Figura 2 – Configuração da tarefa Execute SQL Task

Também será necessário mapear o resultado da consulta executada pela tarefa para uma variável do tipo object, conforme ilustrado na Figura 3.

SSIS_2
Figura 3 – Mapeando o resultado para uma variável

Com o resultado da consulta em uma variável, será necessário utilizarmos uma tarefa Foreach Loop para navegar em cada um dos registros do resultset.

A coleção utilizada pela tarefa Foreach Loop deve ser Foreach ADO Enumerator, conforme ilustrado na Figura 4.

SSIS_3
Figura 4 – Configuração da tarefa Foreach Loop

Cada registro lido pela tarefa Foreach Loop será armazenado em uma variável chamada AnoAdm, do tipo Int32, que será utilizada posteriormente na construção da consulta dinâmica que criará o conteúdo de cada arquivo texto, conforme ilustrado na Figura 5.

SSIS_4
Figura 5 – Mapeando a variável

É importante ressaltar que o valor do índice deve ser 0, como ilustrado na Figura 6.

SSIS_5
Figura 6 – Definindo o valor do index

Após a configuração da tarefa Foreach Loop, é necessário criar uma tarefa Data Flow Task, conforme ilustrado na Figura 7.

SSIS_6
Figura 7 – Criação da tarefa Data Flow Task

A primeira tarefa necessária para a criação dos arquivos é a seleção dos registros na origem de dados através de uma tarefa OleDB Source, conforme ilustrado na Figura 8.

SSIS_6a
Figura 8 – Criação da tarefa OleDB Source

Para que seja possível a exportação dos funcionários baseado em seu ano admissão, precisamos que a consulta à origem de dados seja dinâmica, conforme ilustrado na Figura 9.

SSIS_7
Figura 9 – Consulta dinâmica na origem de dados

Utilizamos o caractere ? para que o SSIS entenda que é um parâmetro externo e mapeamos esse parâmetro com o valor da variável AnoAdm que é preenchida na tarefa Foreach Loop, ou seja, para cada linha retornada na tarefa Foreach Loop será executada uma consulta na origem de dados retornando apenas os funcionários daquele ano de admissão específico.

Selecionaremos todas as colunas existentes na tabela Employee, conforme ilustrado na Figura 10.

SSIS_8
Figura 10 – Seleção de colunas da tabela Employee

A última tarefa necessária é a Flat File Destination, que deverá criar dinamicamente um arquivo de saída para cada ano de admissão existente na tabela Employee.

Inicialmente é preciso configura um Connection Manager fixo para que possamos alterar suas propriedades através do uso de expressões, conforme ilustrado na Figura 11.

SSIS_11
Figura 11 – Configuração do Connection Manager

Após a criação do Connection Manager, será necessário alterar a propriedade ConnectionString, conforme ilustrado na Figura 12.

SSIS_14
Figura 12 – Configuração da propriedade ConnectionString

Com estas tarefas realizamos os seguintes passos:

1) Leitura da tabela Employee para descobrir os anos de admissão existentes;
2) Navegação nos registros encontrados;
3) Para cada registro encontrado, selecionamos os funcionários e exportamos para um arquivo texto específico

Caso tenham interesse em fazer o download do projeto, bastar acessar o link abaixo:

CriarArquivosDinamicamente

Espero que tenham gostado e não deixe de fazer sua inscrição no blog.

Grande abraço.

Definindo boas práticas com o Policy Based Management (PBM)

E ai galera, tudo bem com vocês?

Hoje quero discutir com vocês uma das principais responsabilidades de um bom administrador de banco de dados e que muitos acabam deixando de lado pela “facilidade” em administrar um servidor de banco de dados SQL Server.

“Orra tio, do que cê tá falando meu brother?”

Todo ambiente de banco de dados SQL Server deve ser instalado e configurado seguindo as boas práticas definidas pela Microsoft.

“Tio, tá doidão??? Que negócio é esse de boa prática?? É tipo comer mais salada, menos fritura e ir mais vezes nos jogos do curingão?”

Acredito que a grande maioria dos administradores de banco de dados SQL Server é extremamente cautelosa no momento da instalação de uma nova instância de banco de dados, porém existem profissionais no mercado que abusam da metodologia NNF (Next-Next-Finish) e acabam criando verdadeiros monstrinhos.

“Hahahahaha tio, monstrinho é mancada hein mano? Mas e ai tio? Como dá pra evitar essa bagaça ai de NNF?”

Uma das maneiras utilizadas para verificar se um servidor de banco de dados SQL Server está bem instalado e configurado é através da ferramenta SQL Server Best Practices Analyzer, desenvolvida pela Microsoft e disponibilizada de forma gratuita.

Esta ferramenta pode avaliar um ou mais servidores SQL Server e gerar um relatório detalhando quais destes servidores não está configurado de acordo com a lista de boas práticas e quais destas recomendações não estão sendo seguidas.

Recomendo fortemente a utilização desta ferramenta caso o seu ambiente possua instâncias nas versões 2000 e 2005 do SQL Server.

“Tio, mas e ai? Já to manjando dos barato e tô no CEQELE 2008. Dá pra usar?”

Caso o seu ambiente já esteja utilizando versões do SQL Server 2008 R1, SQL Server 2008 R2 ou SQL Server 2012, recomendo a utilização da funcionalidade Policy-Based Management, também conhecida como PBM.

O PBM permite criar uma política que define como uma determinada área do SQL Server deve estar configurada.

Esta política pode ser executada em um ou mais servidores de banco de dados ao mesmo tempo gerando, um relatório com quais políticas não foram seguidas em cada um dos servidores avaliados.

“Tio, me ajuda mano. Não entendo nada desse troço de política”.

Por exemplo, vamos imaginar que você precisa garantir que todos os bancos de dados do seu ambiente devam estar com a opção AutoShrink desabilitada.

Para garantir essa boa prática, é possível criar uma política no PBM para avaliar todos os bancos de dados e gerar um relatótio detalhado com quais bancos de dados estão fora dessa regra.

“Caraca tio, gostei disso ai hein. Fala mais mano.”

O PBM possui três componentes principais:

  • Policy
  • Condition
  • Facet

Uma Facet é composta por uma lista de propriedades que podem ser verificadas. Por exemplo, a facet Database possui a propriedade AutoShrink que pode ser avaliada em uma política.

A Condition nada mais é do que a regra que define como uma propriedade da Facet deve estar configurada para ser válida. Por exemnplo, a Condition define que o valor correto para a propriedade AutoShrink da Facet Database deve ser OFF.

A Policy é o resultado da junção de uma Facet e uma Condition, determinando qual a área do SQL Server deve ser verificada (Facet) e qual a regra deve ser seguida para que uma propriedade esteja correta (Condition).

“Tio, bem loco. Faz um exemplo ai”

Inicialmente criaremos um banco de dados chamado DBIncorreto utlizando o script abaixo:

CREATE DATABASE [DBIncorreto] ON  PRIMARY
( NAME = N’DBIncorreto’, FILENAME = N’C:\DBIncorreto.mdf’ , SIZE = 3072KB , FILEGROWTH = 1024KB )
 LOG ON
( NAME = N’DBIncorreto_log’, FILENAME = N’C:\DBIncorreto_log.ldf’ , SIZE = 1024KB , FILEGROWTH = 10%)
GO
ALTER DATABASE [DBIncorreto] SET AUTO_SHRINK ON

Vamos implementar duas políticas de exemplo:

  • A propriedade AutoShrink de todos os bancos de dados deve estar configurada como OFF;
  • Os arquivos de dados e de log não podem estar no mesmo volume;

Para a criação das política identificamos que as Facets Database e Database Performance possuem as propriedades que devem ser avaliadas.

O próximo passo é a criação de uma Condition para cada uma das duas propriedades que serão avaliadas:

1) Clicar com o botão direito na opção Condition e selecionar a opção New Condition

Imagem2

2) Selecionar a Facet Database e definir que o valor da propriedade AutoShrink deve ser igual à False

Imagem3

3) Criar uma nova condição, selecionar a Facet Database Performance e definir que a propriedade DataAndLogFilesOnSeparateLogicalVolumes deve ser igual à True;

Imagem4

Após a criação das condições, temos de criar as políticas que serão responsáveis pela avaliação das regras definidas anteriormente:

1) Clicar com o botão direito na opção Policies e selecionar a opção New Policy;

Imagem5

2)  Selecione a Condition AutoShrink, selecione como Targets todos os Databases e Evaluation Mode como On Demand;

Imagem6

3) Criar uma nova política, selecione a Condition DataAndLogFilesOnSeparateLogicalVolumes, selecione como Targets todos os Databases e Evaluation Mode como On Demand;

Imagem7

“Tio, que negócio é esse ai de target e evaluation mode?????”

Durante a configuração da politica, é possível definir quais os objetos do servidor de banco de dados serão avaliados (Target) e quando será realizada essa avaliação (Evaluation Mode).

Em nosso cenário definimos que as políticas serão avaliadas em todos os bancos de dados existentes na instância (Every Database) e a política deverá ser executada manualmente pelo DBA (Evaluation Mode On Demand).

Para a execução manual da política temos os seguintes passos:

1) Clicar com o botão direito na opção Policies e selecionar a opção Evaluate;

Imagem8

2) Selecionar as duas políticas criadas anteriormente e clicar no botão Evaluate;

Imagem9

Após a avaliação das políticas, é possível visualizar um relatório exibindo o resultado de cada condição avaliada clicando na opção View.

Imagem10

“Tio, bem loco isso ai hein. Mas seria muito mai dazora se desse pra corrigi essa parada de uma vez só”

Uma das grandes vantagens em utilizar o PBM na avaliação das politicas é a possibilidade de corrigir determinadas condições em todos os Targets que foram avaliados.

Por exemplo, podemos selecionar a política AutoShrink e clicar no botão Apply.

Imagem13

Desta forma, todos os targets avaliados tiveram a propriedade AutoShrink alterada para False.

Imagem14

“Tio, to empolgadaço com isso ai. Já vou criar umas politica aqui na minha goma pra Creusinha não entra no quarto sem avisar. Hehehehehe, assim fico à vonts vendo as musa do Curingão.”

……………………………………………(Ligando para a Creusinha)

“Creusinha, meu amor. O que aconteceu???? Porque tá arrancando a porta do quarto????? Não Creusinha, calma, calmaaaaaaaaaaaaaaaaaaaa!!!!!!!!!!!!!! Portada nãããããããããããããão”

Espero que tenham gostado e não deixem de inscrever-se no blog para receber todas as atualização em primeira mão.

Grande abraço.

FELIZ ANO NOVO DO GORDO

Galerinha,

Novamente quero agradecer por mais esse excelente ano que tivemos juntos.

Fico extremamente contente em poder ajudar alguns de vocês e poder passar um pouco da minha experiência tanto pelo blog como pelo grupo SQL Maniacs.

Espero que neste novo ano que estamos iniciando, possamos novamente continuar trabalhando juntos e fazer com que a comunidade de SQL Server cresça cada vez mais.

Um grande abraço e uma ótima festa de final de ano para todos vocês e suas famílias.

🙂

Categorias:Não categorizado