Query Store!

Este post tem o objetivo de mostrar ao DBA a importância da nova feature do SQL Server 2016: “Query Store”, de uma forma objetiva.

O Query Store é um repositório de consultas, onde registra em memória informações sobre o(s) plano(s) de execução de uma query,  para depois persistir  em disco.

Existem várias formas de análise de planos de execução para se obter uma melhor performance e desempenho na consulta de uma query.

Não vou entrar nos detalhes das outras features que auxiliam na análise dos planos de execução anterior ao Query Store. Porém, vale mencionar que devem ser avaliados e comparados os prós e os contras de cada uma delas, deixando claro que o Query Store não elimina o uso das outras features.

Uma query pode ter vários planos de execução por vários motivos, ex: um índice deletado, upgrade de versão, aumento nos registros de uma tabela, estatísticas desatualizadas, entre outros.

Exemplo clássico: uma consulta que normalmente gasta segundos para ser executada passa a demorar horas. Houve alguma mudança, certo? O que pode ser feito para se descobrir o motivo que levou a isso? É nessa hora que entra o Query Store: ele salva os planos de execução de uma query (que podem ser vários) no filegroup primário do banco de dados, no qual foi habilitado. (É habilitado por banco).

O Query Store possibilita fazer uma análise nos planos de execução gerados, permitindo ao DBA a opção de escolher qual o melhor plano para a execução de uma query, obtendo uma melhor performance, podendo, inclusive, fazer uma regressão de algum plano, caso seja necessário, ou seja, podemos forçar um plano de execução se necessário.

Lembrando que forçar um plano de execução não quer dizer que é a melhor solução, mas que em um determinado momento pode ser preciso, para tornar o processo mais ágil para a solução do problema, para depois analisar com mais calma a situação e corrigi-lá.

“Ao forçar um plano de execução, você está tratando o sintoma do problema e não a causa.”

Vantagens em utilizar o Query Store

  • Auxilia no processo de migração de uma versão
  • Mantém o histórico dos planos de execução, mesmo após um reinício do SQL Server
  • Consome somente os recursos configurados
  • Possui 19 extend events específicos para o Query Store

Como funciona a Arquitetura

Arquitetura

Ao enviar uma consulta ao banco de dados, o Query Store utiliza-se duas tabelas em memória: A Plan Store que grava dados dos planos de execução da query após ela ser compilada e a Runtime Stats Store, que grava as informações do tempo de consulta após a execução da query.

Os dados que estão nessas duas tabelas são gravados em disco de uma forma assíncrona. O tempo que esses dados ficam em memória, para posteriormente persistir em disco, é configurado no Query Store. Por meio do Query Store Views, os dados são liberados para consulta, hora pelas tabelas em memória, hora pelo disco, por isso é assíncrono.

Contadores Perfmon

O desempenho do Query Store pode ser monitorado por 4 contadores adicionados no monitor do perfmon.

contadores

Habilitando o Query Store

· Acesse o SSMS, selecione o banco desejado -> clique em propriedades -> Query Store

     q1

· Selecione a opção Read Write.

· A opção Read Only, deixa o Query Store somente como leitura (Essa opção será detalhada mais abaixo).

· Pode ser habilitado pelo Transact-SQL:

ALTER DATABASE Sat580 SET QUERY_ STORE = ON

2

Após habilitado, atualize o banco ->Expanda a aba do mesmo, e o Query Store já aparece disponível.

Possuí 4 relatórios padrão:
Regressed Queries,
Overall Resource Consumption,
Top Resource Consuming Queries
Tracked Queries.

3

Ao habilitar o Query Store, aparecem várias opções para configurações, tais como:

q4

· Data Flush Interval (Minute) – Tem como default o intervalo de 15 minutos.

Significa que a cada quinze minutos os planos de execução e as estatísicas de tempo de execução que estão nas tabelas Plan Store e Plan Runtime Store (que estão em memória), são gravados no disco. Esse intervalo pode ser alterado, para mais ou para menos, de acordo com a necessidade do ambiente.

· Statistics Colletion Interval – Tem como default o intervalo de 1 hora, está relacionado com a configuração do nível de granularidade das estatísticas de tempo de execução das consultas capturadas, que deseja obter.

· Max Size (MB) – Tamanho máximo do Query Store no Disco, por padrão vem habilitado com 100 MB. Ao atingir esse limite, o Query Store sai do modo read write e passa para o estado read only, ou seja, ele deixa de gravar novos planos de execução. Esse tamanho pode ser alterado de acordo com a necessidade do ambiente, chegando ao limite máximo de 1.0 TB, dependendo da versão do SQL Server 2016.

· Query Store Capture Mode – É a forma como o Query Store captura os planos de execução.

  • Possui 3 opções: All(1), None(2) e Auto(2):

Size Based Cleanup Mode – O Query Store limpa os dados automaticamente, quando eles atingirem um limite de 90% do tamanho máximo configurado, apagando os dados mais antigos.

Opções: Auto e Off, por padrão vem habilitada como Off.

Análise (Analise) bem essa opção.

· Stale Query Treshold(Days) – Esse modo permite manter armazenados os dados no Query Store pelo período configurado(dias).

· Purg Query Data – Remove todos os dados do Query Store.

As opções de configurações acima citadas, podem ser configuradas pelo Transact-SQL .

  •  (1) vem habilitado como All, ou seja, captura todos os planos de execução para as querys.
  • (2) Auto o Query Store captura somente consultas com planos de execução relevantes.
  • (3) None – O Query store para de capturar novos planos de execução.

Essas configurações acima, podem ser feitas pelo comando Transact T-SQL abaixo:

ALTER DATABASE <Meetup>

SET QUERY_STORE (

OPERATION_MODE = READ_WRITE,

CLEANUP_POLICY =

(STALE_QUERY_THRESHOLD_DAYS = 30),

DATA_FLUSH_INTERVAL_SECONDS = 3000,

MAX_STORAGE_SIZE_MB = 500,

INTERVAL_LENGTH_MINUTES = 15,

SIZE_BASED_CLEANUP_MODE = AUTO,

QUERY_CAPTURE_MODE = AUTO,

MAX_PLANS_PER_QUERY = 1000

);

Testando o Query Store:

Este exemplo mostra a opção de forçar um plano de execução, por meio do comando Force Plan.

Após habilitado o Query Store, vamos usar os seguintes comandos Transact-SQL:

Use Meetup

Go

UPDATE Ciclista
SET Nome = ‘Sulamita’,
Sobrenome = ‘Dantas’,
Email = ‘sdantas01@gmail.com’,
Sexo  = ‘F’
WHERE Codigo = 3

SELECT *
FROM Ciclista
WHERE Codigo = 3

Depois de executada a consulta, clique do lado esquerdo na opção abaixo do Query Store e selecione um dos relatórios disponíveis. Ao selecionar o Top Resource Consuming Queries, do lado direito já aparece o plano de execução da consulta, com o plan id 1. O Query Store mostra de uma forma bem simples, o plano de execução gerado para essa consulta, conforme figura abaixo:

Q5

A execução dessa consulta gerou um plano de execução, com um table scan.

Agora vamos fazer com que a query tenha um plano  de execução diferente do plano gerado acima.

Será criado um índice cluster:

CREATE CLUSTERED INDEX [IDX_Codigo] ON [dbo].[Ciclista]CREATE CLUSTERED INDEX [IDX_Codigo] ON [dbo].[Ciclista] ( [Codigo] ASC
)

Após a criação do índice, será feita uma nova consulta:

SELECT *
FROM Ciclista
WHERE Codigo = 3

Em seguida, execute o relatório Top Resource Consuming Queries novamente. Assim, o Query Store apresentará dois planos de execução para a query 1, o plan id 2 e o plan id 12.

Com a inclusão do índice, a query ganhou um novo plano de execução, gerando um Seek.

Q6

O que aconteceu?

A query 1 tinha um plano de execução que gerava um table scan, com a criação de um índice, ela ganhou um novo plano de execução, passando a gerar um seek, ou seja, houve uma uma mudança no plano de execução.

A query 1 agora possui dois planos de execução, e passou a usar o plano de execução id 12.

Por meio do Query Store, de uma forma simples, podemos fazer com que a query 1, volte a usar o plano de execução id 2, usando o botão force plan.

Obs: Lembrando que esse é um exemplo bem hipotético, somente para mostrar como forçar um plano de execução.

Q7

Pronto, agora a query já está usando o plan id 2, realizando um table scan, voltando ao seu plano de execução inicial.

Q8.png

Esse foi um exemplo bem simples, para que vocês possam se familiarizar com o Query Store e fazer análises mais complexas.

Possui 19 eventos Extend Events para o Query Store.

No site abaixo, temos as seguintes DMV’s de sistema, que podem ser utilizadas para uma maior análise de desempenho.

https://docs.microsoft.com/en-us/sql/relational-databases/performance/monitoring-performance-by-using-the-query-store

· Verificar o status atual do Query Store:

SELECT actual_state, actual_state_desc, readonly_reason,

current_storage_size_mb, max_storage_size_mb

FROM sys.database_query_store_options;

· Últimas consultas executadas no banco de dados:

SELECT TOP 10 qt.query_sql_text, q.query_id,

qt.query_text_id, p.plan_id, rs.last_execution_time

FROM sys.query_store_query_text AS qt

JOIN sys.query_store_query AS q

ON qt.query_text_id = q.query_text_id

JOIN sys.query_store_plan AS p

ON q.query_id = p.query_id

JOIN sys.query_store_runtime_stats AS rs

ON p.plan_id = rs.plan_id

ORDER BY rs.last_execution_time DESC;

· Número de execuções para cada consulta:

SELECT q.query_id, qt.query_text_id, qt.query_sql_text,

SUM(rs.count_executions) AS total_execution_count

FROM sys.query_store_query_text AS qt

JOIN sys.query_store_query AS q

ON qt.query_text_id = q.query_text_id

JOIN sys.query_store_plan AS p

ON q.query_id = p.query_id

JOIN sys.query_store_runtime_stats AS rs

ON p.plan_id = rs.plan_id

GROUP BY q.query_id, qt.query_text_id, qt.query_sql_text

ORDER BY total_execution_count DESC;

· O número de consultas com o tempo de execução médio mais longo na última hora:

SELECT TOP 10 rs.avg_duration, qt.query_sql_text, q.query_id,

qt.query_text_id, p.plan_id, GETUTCDATE() AS CurrentUTCTime,

rs.last_execution_time

FROM sys.query_store_query_text AS qt

JOIN sys.query_store_query AS q

ON qt.query_text_id = q.query_text_id

JOIN sys.query_store_plan AS p

ON q.query_id = p.query_id

JOIN sys.query_store_runtime_stats AS rs

ON p.plan_id = rs.plan_id

WHERE rs.last_execution_time > DATEADD(hour, -1, GETUTCDATE())

ORDER BY rs.avg_duration DESC;

· Consultas com vários planos de execução:

WITH Query_MultPlans

AS

(

SELECT COUNT(*) AS cnt, q.query_id

FROM sys.query_store_query_text AS qt

JOIN sys.query_store_query AS q

ON qt.query_text_id = q.query_text_id

JOIN sys.query_store_plan AS p

ON p.query_id = q.query_id

GROUP BY q.query_id

HAVING COUNT(distinct plan_id) > 1

)

SELECT q.query_id, object_name (object_id) AS ContainingObject,

query_sql_text, plan_id, p.query_plan AS plan_xml,

p.last_compile_start_time, p.last_execution_time

FROM Query_MultPlans AS qm

JOIN sys.query_store_query AS q

ON qm.query_id = q.query_id

JOIN sys.query_store_plan AS p

ON q.query_id = p.query_id

JOIN sys.query_store_query_text qt

ON qt.query_text_id = q.query_text_id

ORDER BY query_id, plan_id;

Conclusão:

Assim, o dba, por meio da interface gráfica ou DMV’s, pode acessar os planos de execução gerados pelo Query Store, descobrindo as querys lentas e pode fazer uma análise da melhor performance para determinada(s) query(s).

Explore essa  feature 😉

Anúncios
Publicado em SQL Server 2016 | Deixe um comentário

Overview das Comunidades em 2017

 

união-terra

As Comunidades no geral tem crescido e se unido bastante, foi possível  ver isso durante o ano de 2017.

No decorrer do ano, tivemos vários eventos presenciais, webcasts, 24 horas PT, SQL Saturdays, Global Azure Bootcamp, Hangout, campanhas, Como Eu Posso Programar (da Microsoft), incentivando as meninas a programarem, Campanha #Natal Nerd Brasil, dentre outras.

Com essa interação foi possível não só fazermos exclusivos de cada área, como também eventos em conjunto, trocando conhecimentos em diversos campos.

Atualmente temos os seguintes Local Groups no Brasil abaixo:

Os Local Groups: SQL SJC e SQL MT, foram criados no ano de 2017.
Além desses dois, todos os outros grupos fazem reuniões presenciais mensais durante todo o ano, de forma gratuita.

Alguns dos eventos que ocorreram durante o ano das comunidades:

E tivemos vários outros encontros não só no Brasil, como no mundo, exemplo: SQL Saturdays, eles acontecem em todo o mundo durante todo o ano, PASS Summit 2017, que acontece anualmente, e já estou me preparando para o de 2018 😉

Ainda sobre o SQL Saturday: Tivemos 06 no Brasil em 2017, e para 2018 já temos dois confirmados:

SQL Saturday #718 – Joinville
SQL Saturday #715 – Belo Horizonte.
Estamos muito felizes por Belo Horizonte ter o seu primeiro SQL Saturday 😉

Nosso  objetivo é termos SQL Saturdays e Local Groups,  em todas as capitais do País, vamos trabalhar  juntos para isso?

É muito gratificante ver a união das comunidades, os trabalhos realizados, os objetivos alcançados e o mais importante de tudo: todos juntos, em troca de conhecimentos.

Hoje o que não nos falta é oportunidade de conhecimento e aprendizado, temos eventos gratuitos em diversas áreas nas comunidades e podemos trabalhar e crescer cada vez mais, pois juntos vamos longe.

Em janeiro já vamos ter eventos presenciais e online (em breve divulgação), ou seja não vamos parar, vamos de janeiro a dezembro por esse mundo a fora! 😉

Um Feliz Natal! E um Ano novo repleto de Alegrias e Sucessos!

#comunidades
#sqlserver
#microsoft
#sqlbh
#randomhacks
#shestech
#pormaismulheresnati
#sqlpass
#juntosvamoslonge

Algumas fotos dos eventos realizados em 2017.

Este slideshow necessita de JavaScript.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Publicado em Geral | Deixe um comentário

Eventos das Comunidades de TI/Dezembro 2017

comunidades

O ano está quase acabando, mas ainda temos muitos eventos das Comunidades espalhadas pelo Brasil.

 

São Paulo

02/12/17 – Trilha Azure – Evento Presencial

02/12 e 0/312 – Power BI Weekend (PBIW)  – Evento Presencial

06/12 e 07/12 – Tech Summit – Evento Presencial

13/12 – Community BootCamp: .NET – São Paulo #NatalNerd – Evento Presencial

Belo Horizonte

13/12 – She’s Tech – (A divulgar ainda)

16/12 – Encontro Random Hacks – Evento Presencial (Agenda ainda será divulgada)

Espírito Santo

02/12 – Dev-ES – Conferênce 2017 – Evento presencial

Eventos Online

04/12 a 13/12 – DevWeek – Evento Online

PASS Marathon

13/12 – 16:00 ás 21:00
Inscrição: PASS Marathon: Linux Edition.

Bora participar galera 😉

#juntossomosmaisfortes
#comunidades

Obs: Todos esses eventos acima são Gratuitos!

Publicado em Geral | Deixe um comentário

SQL Saturday #715 – Belo Horizonte

satbh.jpg

Com muita alegria informamos que BH terá o primeiro SQL Saturday, o SQL Saturday #715, no dia 19/05/2018.

Em novembro de 2015 inauguramos o nosso Local Group SQL BH (Grupo para profissionais e entusiastas de SQL Server em Belo Horizonte e região) e desde então, passamos a ter encontros mensais.

Em abril de 2017, durante uma conversa no Bootcamp BH, resolvemos que estava na hora de BH ter o seu primeiro SQL Saturday.

Temos um longo caminho a percorrer, o primeiro passo foi dado, agora é trabalharmos muito para que possamos fazer um excelente evento.

Essa realização é fruto de um trabalho de todos nós (Comunidade SQL Server, Organizadores do Local Group SQL BH, palestrantes, participantes, voluntários e apoiadores).

Call for Speakers aberta, submetam suas palestras.

Bora fazer um SQL Saturday Mineiro UAI…

Vem com a gente 😉

#sqlsatbh
#sqlbh
#sqlpass
#juntossomosmaisfortes

 

Publicado em SQL Saturday | 1 Comentário

Eventos da Comunidade SQL Server- Novembro/17

pass

Galera, teremos durante o mês de novembro, diversos eventos espalhados pelo Brasil da comunidade SQL Server e também de outras comunidades, sendo eles:

Bora participar das comunidades 😉

#juntossomosmaisfortes
#sqlbh
#randomhacks
#sqlpass

 

 

 

 

Publicado em Geral | Deixe um comentário

Local Group SQL BH está participando da Campanha Natal Nerd 2017!

Estamos reunindo um montão de nerds para um propósito único, proporcionar um Natal mais feliz para crianças carentes e vocês podem fazer parte disso.

O encontro do SQL BH do dia 11/11/17, faz parte desse projeto, portanto Não é OBRIGATÓRIO, mas se puderem levem  um brinquedo para doação.

A entrega dos brinquedos arrecadados acontecerá em diversas cidades do país no dia 17/12/17, se também quiserem participar da entrega dos brinquedos arrecadados entrem em contato conosco!

Juntos somos mais fortes!

Descrição do encontro no dia 11/11/17:

sql bh.jpg

Desta vez teremos um dia inteiro, com muito conteúdo e palestrantes feras!!!
Segurança de dados utilizando controles da ISO 27002  – Diemerson Campos
Soluções para problemas comuns do SQL Server –  Gustavo Carneiro
Windows Server e nuvem híbrida – Osanam Giordane – Microsoft MVP
A Poderosa Modelagem de Dados do Power BI  – Karine Lago – Microsoft MVP
Produzindo e consumindo Streaming de dados com .NET Core – Ivan  Paulovich

Inscrições GRATUITAS!!!https://lnkd.in/dPzMCdp

#Sqlbh
#Sqlpass

 

Publicado em SQL BH | Deixe um comentário

Material SQL Saturday Rio de Janeiro #663

fototrad

No dia 21/10/17, aconteceu o SQL Saturday Rio de Janeiro #663.

O Sat foi realizado no Instituto INFNET,  e contou com a presença de vários palestrantes do Brasil e de outros países também.

Foi muito bem organizado, estruturado, e com excelente palestras.

Como sempre falo: Passar um dia aprendendo, revendo amigos, fazendo amizades e network é muito bom.

Minha palestra foi sobre: Versões do SQL Server – 2000 a 2017, o material apresentado está disponível para download  aqui.

Parabéns a todos que participaram do SQL Saturday – Rio de Janeiro #663!

Vale ressaltar que os SQL Sartudays são gratuitos, basta somente se inscrever e comparecer ao evento 😉

No dia 18/11/2017, teremos o último SQL Saturday no Brasil em 2017, o SQL Saturday Salvador #677  😉

Em 2018 teremos vários SQL Saturdays no Brasil e em outros países.

Venha participar da Comunidade SQL Server.

Vem comigo 😉

#Sqlserver
#Sqlpass
#Sqlbh
#microsoft
#Pormaismulheresnati

Este slideshow necessita de JavaScript.

 

Publicado em SQL Saturday | Deixe um comentário

Local Group MT

pass

Recentemente foi criado o  Local Group MT (Cuiabá), no Brasil.

O Local Group, através de reuniões programadas, faz encontros presenciais e online, com palestras de diversos temas sobre Banco de Dados, BI, etc. permitindo o aprendizado e desenvolvimento entre todos os envolvidos, de forma gratuita.

Para participar, basta escolher o Local Group desejado, se inscrever e participar dos encontros.

Através do Site do PASS é possível encontrar vários Local Groups espalhados pelo mundo.

Esses encontros nos mantém informados de toda a tecnologia de banco de dados.

Obrigada Aislan (Líder do Local Group MT), pela oportunidade de poder ajudar na criação do grupo, junto com o Roberto Fonseca e por poder acompanhar o seu crescimento.
Parabéns pela conquista e a todos que participam do Local Group MT.

O nosso objetivo é aumentar o número de Local Groups pelo Brasil, de norte a sul, crescendo a nossa Comunidade SQL Server.

Local Group BH

Local Group RJ

Local Group ES

Local Group RS

Local Group SP – Maniacs

Local Group MT

Local Group DF

Local Group BA

Quer participar e saber das novidades da comunidade SQL Server? Vem comigo 😉

Galera da Região Norte, vamos abrir um Local Group por ai?

#Sqlserver
#Sqlpass
#Sqlbh
#microsoft

Algumas fotos do evento realizado no dia 18/10/17 em Cuiabá

Este slideshow necessita de JavaScript.

 

Publicado em Geral | Deixe um comentário

SQL Saturdays, você conhece?

passO PASS é uma Comunidade global, com profissionais espalhados pelo mundo todo, que utilizam a plataforma de dados da Microsoft, espalhando conhecimentos, trocando  aprendizados, fazendo amigos e networking.

É através do PASS, que realizamos os SQL Saturdays pelo mundo a fora.

O que é um SQL Saturday?
É um evento que acontece aos sábados, durante todo o dia, onde vários profissionais da área de SQL Server se reunem de forma voluntária, para passar os seus conhecimentos, através de palestras, bate papos, e etc.
È um excelente evento, onde temos a oportunidade de aprendermos, de estarmos juntos com a Comunidade SQL Server, trocando ideias, esclarecendo dúvidas…

Como já citei em post anterior, no ano de 2017, vamos ter um total de 6 SQL Saturdays no Brasil, o que é bem legal, e a tendência para 2018 é que tenhamos mais de 6.

Acesse o Site do PASS, se inscreva nele e mantenha-se atualizado sobre todos os eventos que o PASS proporciona pelo mundo.

A comunidade SQL Server tem crescido no Brasil, lembro que quando comecei a participar em 2012, não tínhamos a mesma quantidade de SQL Saturdays que temos atualmente.
Venham fazer parte da Comunidade, interaja conosco, seja assistindo webcasts, participando de eventos presenciais, a distância, entre outros.

Temos os Local  Groups que podem ser encontrados e fazem parte do PASS, em alguns Estados do Brasil, e qual é o objetivo deles?

Os Local Groups, através de reuniões programadas, fazem encontros presenciais e online, com palestras de diversos temas sobre Banco de Dados e BI, permitindo a troca de conhecimento entre todos os envolvidos de forma gratuita.

Para participar, basta escolher o Local Groups desejado, se inscrever e participar dos encontros

Bora abrir mais Local Groups?

Vem conosco 😉

Ainda restam 2 SQL Saturdays esse ano, no Brasil:

Lembrando que os SQL Saturdays são totalmente gratuitos!

#Pass
#SQLServer

Algumas fotos dos SQL Saturdays

Este slideshow necessita de JavaScript.

 

Publicado em SQL Saturday | Deixe um comentário

Como foi SQL Saturday #676

22050017_1428786403884544_4025217984536399393_n

Fechamos o mês de setembro com um grande evento: O SQL Saturday #676 em São Paulo.

Agradeço a todos os envolvidos no evento, que foi muito bem organizado, com excelentes palestras, casa cheia de pessoas querendo aprender, trocar aprendizados, fazer amizades, rever os amigos e fazer networking.

Ao total, já participei de 18 SQL Saturdays no Brasil e sempre digo que cada um deles tem as suas particularidades, a cada evento que participamos, a nossa bagagem de conhecimentos e experiências só aumenta.

Minha palestra foi sobre: Monitoramento dos Processos e Serviços do Servidor, Através do Power BI,  o material já está disponibilizado no site do evento, neste link.

Ainda temos dois SQL Saturdays no Brasil para acontecer:

SQL Saturday Rio de Janeiro #663  no dia 21/10/17, onde vou palestrar sobre: As versões do SQL Server – 2000 a 2017.

SQL Saturday Salvador #677,  no dia 18/11/2017 – call paper está aberta, quem tiver interesse em submeter palestra, aproveite.

A Comunidade SQL Server, tem crescido, os Grupos locais no Brasil tem aumentado, e consequentemente o número de SQL Saturdays também aumentou e podemos aumentar ainda mais.

Esse ano já tivemos 4 SQL Saturday: SQL Saturday Joinville#580,   SQL Saturday Caxias do Sul #609, SQL Saturday Brasilia #618, e anda faltam mais dois: SQL Saturday Rio de Janeiro #663 e o SQL Saturday Salvador #677, totalizando 6 SQL Saturdays no Brasil, em 2017.

Bora participar da Comunidade SQL Server e dos Grupos Locais também galera.

Vem comigo 😉

#SqlSat
#pass
#SqlFamily
#microsoft

 

Este slideshow necessita de JavaScript.

 

 

 

Publicado em Geral | Deixe um comentário