Olá visitante!
Publiquei o treinamento on-demand Indexação I, disponível gratuitamente no meu canal no YouTube.
A playlist você acessa aqui:
https://www.youtube.com/playlist?list=PLGaWZx_3bztdIJscZJjkS39KW0TbaNpLF
Bom estudo!
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
SELECT CAST (power(CrazyIdeas, Curiosity) * (RealLifeExperience + MyMistakes)) / FreeTime) AS VARCHAR(MAX)) FROM MyBrain WITH (NOLOCK, INDEX('idx_Neuron')) WHERE ThingsIThinkIKnow in ('SQL Server', 'DB2', '.NET', 'Cloud')
quarta-feira, 29 de novembro de 2017
sexta-feira, 5 de maio de 2017
Transaction Log Internals - FREE
Olá leitor.
Publiquei o treinamento on-demand Transaction Log Internals, disponível gratuitamente no meu canal no YouTube.
A playlist você acessa aqui:
https://www.youtube.com/playlist?list=PLGaWZx_3bztdZNnrFSluDpaPjaB6IAx6-
Não deixe também de aproveitar os treinamentos que o Fabiano publicou.
https://blogfabiano.com/2017/01/31/on-demand-virou-dominio-publico/
Bom estudo!Abraços
Luciano Caixeta Moreira - {Luti}
luticm79@hotmail.com
www.twitter.com/luticm
Publiquei o treinamento on-demand Transaction Log Internals, disponível gratuitamente no meu canal no YouTube.
A playlist você acessa aqui:
https://www.youtube.com/playlist?list=PLGaWZx_3bztdZNnrFSluDpaPjaB6IAx6-
Não deixe também de aproveitar os treinamentos que o Fabiano publicou.
https://blogfabiano.com/2017/01/31/on-demand-virou-dominio-publico/
Bom estudo!Abraços
Luciano Caixeta Moreira - {Luti}
luticm79@hotmail.com
www.twitter.com/luticm
segunda-feira, 1 de agosto de 2016
SEGUNDO PRIMEIRO dia na Microsoft
Sim, isso mesmo que você leu, dia 01 de agosto é o meu SEGUNDO PRIMEIRO dia na Microsoft. :-)
Em 2006 eu ingressei na Microsoft como Premier Field Engineer de SQL Server e fiquei por lá até Março/2009. Agora volto a trabalhar na MS com o cargo de Support Engineer, suportando a plataforma de dados da Microsoft.
**************** ATUALIZAÇÃO *****************
Gostaria de agradecer todos os comentários neste post e no LinkedIn.
Infelizmente não conseguirei responder individualmente, então registro agui meu agradecimento.
A todos, meu muito obrigado!
************************************************
Nesse post vou relatar um pouco de como tudo aconteceu e falar um pouco de futuro do Luti e da Nimbus.
- Após contato da Microsoft, participei do processo de seleção e aceitei meu retorno à MS;
- É uma nova aposta de carreira que espero seguir por muitos anos;
- Por configurar um conflito de interesse, a Nimbus não irá mais executar nenhuma atividade de treinamento e consultoria;
- Eu não vou deixar de participar da comunidade técnica, escrevendo artigos em seu blog, gravando vídeos e/ou participando de eventos técnicos;
Em abril eu recebo uma mensagem no LinkedIn… “Oi Luciano, estamos com uma vaga na Microsoft e acho que você tem o perfil para ela, estaria interessado?”
A minha resposta para essas perguntas é sempre SIM. No fim tudo depende da oportunidade e do que cada empresa tem para oferecer, então eu ouço o que cada uma tem a dizer, pois quem sabe em um desses contatos não está uma grande oportunidade para sua carreira…
Reunião agendada, fui apresentado para a vaga de Support Engineer. Depois de entender mais sobre a vaga, e claro, fazer minhas pesquisas sobre a posição, resolvi continuar no processo de seleção.
O próximo passo foi passar por entrevistas, que são sempre interessantes e instrutivas, pois fazem você lembrar que não sabe de nada e, mesmo se tratando de assuntos que tem um bom conhecimento, um pouco de pressão sempre atrapalha. Muitos dias depois é marcada mais uma reunião, quando acerto meu retorno à empresa.
Obviamente não foi uma decisão fácil aceitar a nova proposta e saber que vou deixar de lado a Sr. Nimbus, afinal já são sete longos anos com a empresa que ajudei a fundar e esteve ao meu lado por todo esse tempo. E sabendo que essa movimentação será uma surpresa para muitos, escrevo um pouco sobre a decisão.
Durante meus anos com a Nimbus eu tive a oportunidade de ministrar muitos treinamentos, atuar como consultor para diversas empresas e, mais recentemente, apoiar remotamente na administração do ambiente SQL Server de alguns clientes. Aliado com a flexibilidade de administrar meu tempo, me deu oportunidade de viajar bastante, curtir muito a família e escolher quais trabalhos eu gostaria de executar. Nada mal.
Porém cheguei a um ponto crítico, onde eu NÃO queria fazer a empresa crescer, pois me forçaria a paulatinamente abandonar o lado técnico da minha carreira para negociar/gerenciar clientes, contratar/treinar outros consultores, etc. Só me restando dizer NÃO para oportunidades que batiam à porta da Nimbus, para garantir a qualidade da entrega, e manter o ritmo de trabalho. Mesmo estando feliz com minha situação, não existia um próximo passo, o que me incomodava um pouco.
Eis que aparece essa nova oportunidade na Microsoft, uma posição onde poderei trabalhar com diversos chamados de suporte por dia, atuando com um extenso leque de produtos da plataforma de dados da Microsoft (SQL Server, SQL Azure, Power BI, etc.), explorando ainda mais o lado técnico que eu tanto gosto. E tudo isto dentro da MS, que sempre me tratou muito bem, é uma excelente empresa para se trabalhar, e recentemente sob a direção do Satya Nadella tem se mostrado ainda mais interessante.
Felizmente fui escolhido para a vaga, dentro os candidatos entrevistados, e espero desempenhar um excelente trabalho, ficando muito tempo na empresa, aprendendo, ensinando, e quem sabe, trilhando novos caminhos dentro da Microsoft.
O lado negativo da novidade… A minha querida Nimbus fica órfã e impedida de continuar suas atividades. Sendo uma empresa focada em consultoria e treinamento SQL Server, e seu sócio/fundador passando a ser funcionário da Microsoft, é inviável que a empresa continue com seu funcionamento, por caracterizar um claro conflito de interesse.
Então espero que aqueles que tiveram treinamento com a Nimbus possam ter aproveitado o que considero ser os melhores e mais avançados treinamentos de SQL Server do país. Nunca se sabe o que futuro nos reserva, porém agora meu foco e dedicação estão 100% voltados para Microsoft…
Aproveitando que mencionei os treinamentos da Nimbus, gosto de acreditar que ajudamos a mudar o cenário de treinamento SQL Server no país, com o papel muito importante de difundir a importância dos profissionais conhecerem à fundo o produto com que trabalham, o famoso "internals".
Hoje na comunidade técnica já vemos muitas palestras que tentam difundir o funcionamento interno do SQL Server e espero que novas empresas/treinamentos possam suprir um pouco desse espaço que a Nimbus vai deixar, já sabendo da existência de um público avançado, que se interessa em esmiuçar cada detalhe do SQL Server e quer ir mais longe com o produto, resolvendo problemas complexos que o envolvem.
Eu continuarei como eu sou, cada vez mais geek, apaixonado por banco de dados, estudando diariamente, e tentando arranjar um tempo para escrever sobre minhas aventuras técnicas. Então o conteúdo técnico vai continuar firme e forte, afinal de contas tenho certeza que vou aprender muito com meus novos companheiros de equipe e espero ter muitos “causos” para contar, seja aqui ou em outro espaço…
Como não poderei mais ministrar os treinamentos que tanto gosto, principalmente o Mastering, espero poder matar a saudade da sala de aula com palestras em eventos técnicos.
É isso que queria dizer, agora vou trabalhar! #sqlgeek
OBS.1:
Para quem quiser mais informações sobre o cargo, depois pesquise por "a week in the life of a support engineer Microsoft", que vai encontrar alguns PDFs antigos, mas bem ilustrativos, do que seria o dia a dia da posição. Outra opção é ir em https://careers.microsoft.com e pesquisar por Support Engineer, onde vai poder ver o job description, caso exista alguma vaga em aberto.
OBS.2:
Também estão suspensas as vendas dos treinamentos on-demand da Nimbus, mas não se preocupe, tenho planos interessantes para os módulos que eu gravei…
OBS.3:
O Fabiano Amorim provavelmente vai continuar ministrando os treinamentos que ele construiu, como o T-SQL Expert e o SQL Server Performance with no wait, e pode até continuar comercializando os treinamentos on-demand de planos de execução. Interessado? Corra atrás dele: http://blogfabiano.com/.
OBS.4:
O Edvaldo Castro também está com alguns treinamentos de SQL Server, voltados para administração e alta disponibilidade, recomendo! (http://edvaldocastro.com/)
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
Em 2006 eu ingressei na Microsoft como Premier Field Engineer de SQL Server e fiquei por lá até Março/2009. Agora volto a trabalhar na MS com o cargo de Support Engineer, suportando a plataforma de dados da Microsoft.
**************** ATUALIZAÇÃO *****************
Gostaria de agradecer todos os comentários neste post e no LinkedIn.
Infelizmente não conseguirei responder individualmente, então registro agui meu agradecimento.
A todos, meu muito obrigado!
************************************************
Nesse post vou relatar um pouco de como tudo aconteceu e falar um pouco de futuro do Luti e da Nimbus.
Versão (muito) resumida
- Após contato da Microsoft, participei do processo de seleção e aceitei meu retorno à MS;
- É uma nova aposta de carreira que espero seguir por muitos anos;
- Por configurar um conflito de interesse, a Nimbus não irá mais executar nenhuma atividade de treinamento e consultoria;
- Eu não vou deixar de participar da comunidade técnica, escrevendo artigos em seu blog, gravando vídeos e/ou participando de eventos técnicos;
Versão longa
A oportunidade
Em abril eu recebo uma mensagem no LinkedIn… “Oi Luciano, estamos com uma vaga na Microsoft e acho que você tem o perfil para ela, estaria interessado?”
A minha resposta para essas perguntas é sempre SIM. No fim tudo depende da oportunidade e do que cada empresa tem para oferecer, então eu ouço o que cada uma tem a dizer, pois quem sabe em um desses contatos não está uma grande oportunidade para sua carreira…
Reunião agendada, fui apresentado para a vaga de Support Engineer. Depois de entender mais sobre a vaga, e claro, fazer minhas pesquisas sobre a posição, resolvi continuar no processo de seleção.
O próximo passo foi passar por entrevistas, que são sempre interessantes e instrutivas, pois fazem você lembrar que não sabe de nada e, mesmo se tratando de assuntos que tem um bom conhecimento, um pouco de pressão sempre atrapalha. Muitos dias depois é marcada mais uma reunião, quando acerto meu retorno à empresa.
A decisão
Obviamente não foi uma decisão fácil aceitar a nova proposta e saber que vou deixar de lado a Sr. Nimbus, afinal já são sete longos anos com a empresa que ajudei a fundar e esteve ao meu lado por todo esse tempo. E sabendo que essa movimentação será uma surpresa para muitos, escrevo um pouco sobre a decisão.
Durante meus anos com a Nimbus eu tive a oportunidade de ministrar muitos treinamentos, atuar como consultor para diversas empresas e, mais recentemente, apoiar remotamente na administração do ambiente SQL Server de alguns clientes. Aliado com a flexibilidade de administrar meu tempo, me deu oportunidade de viajar bastante, curtir muito a família e escolher quais trabalhos eu gostaria de executar. Nada mal.
Porém cheguei a um ponto crítico, onde eu NÃO queria fazer a empresa crescer, pois me forçaria a paulatinamente abandonar o lado técnico da minha carreira para negociar/gerenciar clientes, contratar/treinar outros consultores, etc. Só me restando dizer NÃO para oportunidades que batiam à porta da Nimbus, para garantir a qualidade da entrega, e manter o ritmo de trabalho. Mesmo estando feliz com minha situação, não existia um próximo passo, o que me incomodava um pouco.
Eis que aparece essa nova oportunidade na Microsoft, uma posição onde poderei trabalhar com diversos chamados de suporte por dia, atuando com um extenso leque de produtos da plataforma de dados da Microsoft (SQL Server, SQL Azure, Power BI, etc.), explorando ainda mais o lado técnico que eu tanto gosto. E tudo isto dentro da MS, que sempre me tratou muito bem, é uma excelente empresa para se trabalhar, e recentemente sob a direção do Satya Nadella tem se mostrado ainda mais interessante.
Felizmente fui escolhido para a vaga, dentro os candidatos entrevistados, e espero desempenhar um excelente trabalho, ficando muito tempo na empresa, aprendendo, ensinando, e quem sabe, trilhando novos caminhos dentro da Microsoft.
A Nimbus
O lado negativo da novidade… A minha querida Nimbus fica órfã e impedida de continuar suas atividades. Sendo uma empresa focada em consultoria e treinamento SQL Server, e seu sócio/fundador passando a ser funcionário da Microsoft, é inviável que a empresa continue com seu funcionamento, por caracterizar um claro conflito de interesse.
Então espero que aqueles que tiveram treinamento com a Nimbus possam ter aproveitado o que considero ser os melhores e mais avançados treinamentos de SQL Server do país. Nunca se sabe o que futuro nos reserva, porém agora meu foco e dedicação estão 100% voltados para Microsoft…
Aproveitando que mencionei os treinamentos da Nimbus, gosto de acreditar que ajudamos a mudar o cenário de treinamento SQL Server no país, com o papel muito importante de difundir a importância dos profissionais conhecerem à fundo o produto com que trabalham, o famoso "internals".
Hoje na comunidade técnica já vemos muitas palestras que tentam difundir o funcionamento interno do SQL Server e espero que novas empresas/treinamentos possam suprir um pouco desse espaço que a Nimbus vai deixar, já sabendo da existência de um público avançado, que se interessa em esmiuçar cada detalhe do SQL Server e quer ir mais longe com o produto, resolvendo problemas complexos que o envolvem.
O futuro do Luti
Eu continuarei como eu sou, cada vez mais geek, apaixonado por banco de dados, estudando diariamente, e tentando arranjar um tempo para escrever sobre minhas aventuras técnicas. Então o conteúdo técnico vai continuar firme e forte, afinal de contas tenho certeza que vou aprender muito com meus novos companheiros de equipe e espero ter muitos “causos” para contar, seja aqui ou em outro espaço…
Como não poderei mais ministrar os treinamentos que tanto gosto, principalmente o Mastering, espero poder matar a saudade da sala de aula com palestras em eventos técnicos.
É isso que queria dizer, agora vou trabalhar! #sqlgeek
OBS.1:
Para quem quiser mais informações sobre o cargo, depois pesquise por "a week in the life of a support engineer Microsoft", que vai encontrar alguns PDFs antigos, mas bem ilustrativos, do que seria o dia a dia da posição. Outra opção é ir em https://careers.microsoft.com e pesquisar por Support Engineer, onde vai poder ver o job description, caso exista alguma vaga em aberto.
OBS.2:
Também estão suspensas as vendas dos treinamentos on-demand da Nimbus, mas não se preocupe, tenho planos interessantes para os módulos que eu gravei…
OBS.3:
O Fabiano Amorim provavelmente vai continuar ministrando os treinamentos que ele construiu, como o T-SQL Expert e o SQL Server Performance with no wait, e pode até continuar comercializando os treinamentos on-demand de planos de execução. Interessado? Corra atrás dele: http://blogfabiano.com/.
OBS.4:
O Edvaldo Castro também está com alguns treinamentos de SQL Server, voltados para administração e alta disponibilidade, recomendo! (http://edvaldocastro.com/)
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
sexta-feira, 29 de julho de 2016
SQL Saturday #573 - Brasília
Esse é um anúncio muito importante!
Brasília vai receber mais um SQL Saturday (o terceiro por aqui), novamente com o apoio da faculdade Projeção.
Porém dessa vez não sou eu quem está puxando a organização do evento, como foi anteriormente, quem está responsável por fazer o evento acontecer é o Edvaldo Castro (http://edvaldocastro.com/). Junto com ele estão outros nomes conhecidos do SQLServerDF, como Gustavo e Rodrigo, e claro, contando também com meu apoio, colaborando com um pouco de experiência na organização de eventos.
Os links mais importantes são:
Site para registro: http://www.sqlsaturday.com/573/eventhome.aspx
Submissão de palestras: http://www.sqlsaturday.com/573/Speakers/Submission.aspx
Seja um patrocinador: http://www.sqlsaturday.com/573/Sponsors/SponsorPlan.aspx
O EVENTO É GRATÚITO, ENTÃO PARTICIPE E CHAME OS AMIGOS!
Uma oportunidade única para aprender mais sobre o SQL Server e fazer networking. Seu currículo e futuro profissional irão agradecer…
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
Brasília vai receber mais um SQL Saturday (o terceiro por aqui), novamente com o apoio da faculdade Projeção.
Porém dessa vez não sou eu quem está puxando a organização do evento, como foi anteriormente, quem está responsável por fazer o evento acontecer é o Edvaldo Castro (http://edvaldocastro.com/). Junto com ele estão outros nomes conhecidos do SQLServerDF, como Gustavo e Rodrigo, e claro, contando também com meu apoio, colaborando com um pouco de experiência na organização de eventos.
Os links mais importantes são:
Site para registro: http://www.sqlsaturday.com/573/eventhome.aspx
Submissão de palestras: http://www.sqlsaturday.com/573/Speakers/Submission.aspx
Seja um patrocinador: http://www.sqlsaturday.com/573/Sponsors/SponsorPlan.aspx
O EVENTO É GRATÚITO, ENTÃO PARTICIPE E CHAME OS AMIGOS!
Uma oportunidade única para aprender mais sobre o SQL Server e fazer networking. Seu currículo e futuro profissional irão agradecer…
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
quinta-feira, 28 de julho de 2016
Entity Framework e lazy loading
A cada dia que passa fica mais comum encontramos soluções com camadas de mapeamento objeto-relacional (ORM), simplificando o acesso a dados para os desenvolvedores.
Ressalto que não sou contra o Entity Framework, hibernate ou outros frameworks de mapeamento objeto relacional, só quero que as pessoas que o utilizam tomem cuidados básicos no acesso a dados, pois não existe mágica…
Utilize o script abaixo para criar um banco de dados de exemplo com três tabelas, Pessoa, Endereço e Telefone, inserindo também alguns registros.
Ok, eu sei que você modelaria diferente, pois uma pessoa pode ter mais de um endereço ou telefone, mas para este exemplo a regra de negócio da Lutilândia não permite.
CREATE DATABASE EF
GO
USE EF
GO
IF (OBJECT_ID('dbo.Pessoa') IS NOT NULL)
DROP TABLE dbo.Pessoa
go
IF (OBJECT_ID('dbo.Endereco') IS NOT NULL)
DROP TABLE dbo.Endereco
GO
IF (OBJECT_ID('dbo.Telefone') IS NOT NULL)
DROP TABLE dbo.Telefone
go
CREATE TABLE dbo.Endereco
(ID INT IDENTITY NOT NULL PRIMARY KEY,
Descricao VARCHAR(500) NOT NULL)
GO
CREATE TABLE dbo.Telefone
(ID INT IDENTITY NOT NULL PRIMARY KEY,
Descricao VARCHAR(500) NOT NULL)
GO
CREATE TABLE dbo.Pessoa
(Codigo INT IDENTITY NOT NULL PRIMARY KEY,
Nome VARCHAR(100) NOT NULL,
IdEndereco INT NULL,
IdTelefone INT NULL
)
GO
ALTER TABLE dbo.Pessoa
ADD CONSTRAINT fk_Pessoa_Endereco_ID
FOREIGN KEY (IdEndereco)
REFERENCES dbo.Endereco (ID)
GO
ALTER TABLE dbo.Pessoa
ADD CONSTRAINT fk_Pessoa_Telefone_ID
FOREIGN KEY (IdTelefone)
REFERENCES dbo.Telefone (ID)
GO
INSERT INTO dbo.Endereco (Descricao)
SELECT TOP 100000 O.description
FROM sys.dm_xe_map_values AS M
CROSS JOIN sys.dm_xe_objects AS O
GO
INSERT INTO dbo.Telefone (Descricao)
SELECT TOP 100000 O.description
FROM sys.dm_xe_map_values AS M
CROSS JOIN sys.dm_xe_objects AS O
GO
INSERT INTO dbo.Pessoa (Nome)
SELECT TOP 1000000 M.name
FROM sys.dm_xe_map_values AS M
CROSS JOIN sys.dm_xe_objects AS O
GO
UPDATE dbo.Pessoa
SET IdEndereco = (Codigo % 100000) + 1
, IdTelefone = (Codigo % 100000) + 1
GO
Para quem está seguindo o script, crie um projeto C# Console no Visual Studio e…
1. Adicione um ADO.NET Entity Data Model (chame do que quiser)
2. Escolha EF Designer from database
3. Aponte para seu banco de dados EF (pode manter o nome EFEntities)
4. Selecione as tabelas Pessoa, Endereco e Telefone
5. Clique em Finish
Depois da geração do modelo você vai ver algo similar a imagem abaixo:
Edite seu método Main e coloque o código abaixo. O objetivo do código é buscar quase 10000 pessoas e depois fazer algo simples, acessando o endereço e telefone do indivíduo (note que não me interessa gerar saída alguma, só o acesso ao banco de dados).
String s = "";
DateTime dt = DateTime.Now;
EFEntities contexto = new EFEntities();
var r = contexto.Pessoas.Where(x => x.Codigo < 10000);
foreach (var p in r.ToList())
{
s = "Nome: " + p.Nome + " - Endereço: " + p.Endereco.Descricao + " - Telefone: " + p.Telefone.Descricao;
}
Console.WriteLine(DateTime.Now.Subtract(dt).Seconds.ToString());
A execução dessa aplicação na minha máquina levou algo em torno de 12 segundos, nada demais para o desenvolvedor que está executando este código, então poucos fazem uma análise mais detalhada, como faremos a seguir.
Utilizando o profiler para monitorar os eventos SQL:BatchCompleted e RPC:Completed, toda vez que o Entity Framework acessa a coluna Descrição da entidade Endereco ou Telefone, uma chamada é feita para o SQL Server (note o @EntityKeyValue1 variando), o que neste exemplo gerou 39998 entradas no profiler.
Essas chamadas são feitas porque o EF vai "preguiçosamente" (lazy) pedindo para o SQL Server os elementos de outras entidades, varrendo o resultado retornado após o acesso ao elemento Pessoa (primeira consulta exibida na imagem abaixo).
var r = contexto.Pessoas.Include("Endereco").Include("Telefone").Where(x => x.Codigo < 10000);
Analisando a execução deste novo código, temos APENAS DUAS linhas na saída do profiler, onde notamos que o EF enviou para o SQL Server uma única consulta fazendo o join entre as três tabelas, já retornando o endereço e telefone. Dessa forma evitamos N round-trips entre o cliente e o servidor, fazendo com que em minha máquina o tempo total de execução ficasse em torno de 3 segundos.
A diferença entre 3 e 12 segundos é onde mora o perigo... Talvez testando a solução em sua máquina, os 9 segundos não sejam significativos para os desenvolvedores, e um build sem a análise de desempenho ou do número de chamadas acabe chegando em produção.
Se a solução é para controlar o nome dos envolvidos no próximo bolão do campeonato lá na sua empresa, tudo tranquilo, porém caso a solução tenha milhares de requisições pesquisando por pessoas específicas, o número de chamadas ao banco de dados será muito grande. E dependendo da forma como a aplicação está gerenciando e utilizando os seus recursos (ou consumindo os registros), ela mesmo pode ser tornar o gargalo, que não respondendo adequadamente vai deixar o SQL Server cheio de requisições com espera do tipo ASYNC_NETWORK_IO (e NÃO É PROBLEMA DE REDE, ok?!!).
É meio óbvio que para escrever este artigo eu já encontrei diversos problemas de desempenho em aplicações por conta do Lazy Loading. O que em um primeiro momento sempre foi apontado como problema no banco de dados, conseguimos rastrear até apontar o comportamento indevido da aplicação. Então peço para que façam uma análise mais criteriosa de como o seu framework de mapeamento OR acessa o banco de dados, sempre entendendo o perfil das requisições e como pode utilizar da melhor forma o framework adotado.
Então estou falando para nunca usar lazy loading ou até configurar o contexto (this.Configuration.LazyLoadingEnabled = false) para impedir que um desenvolvedor desavisado faça uso do lazy load?
Claro que não, quero que você entenda que o maior custo de IO e CPU visto em uma única consulta com eager loading pode ser muito inferior quando comparado ao tempo total de execução do round-trip de milhares de chamadas para o SQL Server.
No fim tudo depende, só precisamos fazer as perguntas certas e achar as respostas adequadas, então espero que você guarde mais essa informação no seu repertório de soluções.
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
Ressalto que não sou contra o Entity Framework, hibernate ou outros frameworks de mapeamento objeto relacional, só quero que as pessoas que o utilizam tomem cuidados básicos no acesso a dados, pois não existe mágica…
Banco de dados
Utilize o script abaixo para criar um banco de dados de exemplo com três tabelas, Pessoa, Endereço e Telefone, inserindo também alguns registros.
Ok, eu sei que você modelaria diferente, pois uma pessoa pode ter mais de um endereço ou telefone, mas para este exemplo a regra de negócio da Lutilândia não permite.
CREATE DATABASE EF
GO
USE EF
GO
IF (OBJECT_ID('dbo.Pessoa') IS NOT NULL)
DROP TABLE dbo.Pessoa
go
IF (OBJECT_ID('dbo.Endereco') IS NOT NULL)
DROP TABLE dbo.Endereco
GO
IF (OBJECT_ID('dbo.Telefone') IS NOT NULL)
DROP TABLE dbo.Telefone
go
CREATE TABLE dbo.Endereco
(ID INT IDENTITY NOT NULL PRIMARY KEY,
Descricao VARCHAR(500) NOT NULL)
GO
CREATE TABLE dbo.Telefone
(ID INT IDENTITY NOT NULL PRIMARY KEY,
Descricao VARCHAR(500) NOT NULL)
GO
CREATE TABLE dbo.Pessoa
(Codigo INT IDENTITY NOT NULL PRIMARY KEY,
Nome VARCHAR(100) NOT NULL,
IdEndereco INT NULL,
IdTelefone INT NULL
)
GO
ALTER TABLE dbo.Pessoa
ADD CONSTRAINT fk_Pessoa_Endereco_ID
FOREIGN KEY (IdEndereco)
REFERENCES dbo.Endereco (ID)
GO
ALTER TABLE dbo.Pessoa
ADD CONSTRAINT fk_Pessoa_Telefone_ID
FOREIGN KEY (IdTelefone)
REFERENCES dbo.Telefone (ID)
GO
INSERT INTO dbo.Endereco (Descricao)
SELECT TOP 100000 O.description
FROM sys.dm_xe_map_values AS M
CROSS JOIN sys.dm_xe_objects AS O
GO
INSERT INTO dbo.Telefone (Descricao)
SELECT TOP 100000 O.description
FROM sys.dm_xe_map_values AS M
CROSS JOIN sys.dm_xe_objects AS O
GO
INSERT INTO dbo.Pessoa (Nome)
SELECT TOP 1000000 M.name
FROM sys.dm_xe_map_values AS M
CROSS JOIN sys.dm_xe_objects AS O
GO
UPDATE dbo.Pessoa
SET IdEndereco = (Codigo % 100000) + 1
, IdTelefone = (Codigo % 100000) + 1
GO
Lazy loading
Utilizando o Entity Framework 6.0, o comportamento padrão do EF é que o contexto trabalhe com lazy loading. O que isso significa?Para quem está seguindo o script, crie um projeto C# Console no Visual Studio e…
1. Adicione um ADO.NET Entity Data Model (chame do que quiser)
2. Escolha EF Designer from database
3. Aponte para seu banco de dados EF (pode manter o nome EFEntities)
4. Selecione as tabelas Pessoa, Endereco e Telefone
5. Clique em Finish
Depois da geração do modelo você vai ver algo similar a imagem abaixo:
Edite seu método Main e coloque o código abaixo. O objetivo do código é buscar quase 10000 pessoas e depois fazer algo simples, acessando o endereço e telefone do indivíduo (note que não me interessa gerar saída alguma, só o acesso ao banco de dados).
String s = "";
DateTime dt = DateTime.Now;
EFEntities contexto = new EFEntities();
var r = contexto.Pessoas.Where(x => x.Codigo < 10000);
foreach (var p in r.ToList())
{
s = "Nome: " + p.Nome + " - Endereço: " + p.Endereco.Descricao + " - Telefone: " + p.Telefone.Descricao;
}
Console.WriteLine(DateTime.Now.Subtract(dt).Seconds.ToString());
A execução dessa aplicação na minha máquina levou algo em torno de 12 segundos, nada demais para o desenvolvedor que está executando este código, então poucos fazem uma análise mais detalhada, como faremos a seguir.
Utilizando o profiler para monitorar os eventos SQL:BatchCompleted e RPC:Completed, toda vez que o Entity Framework acessa a coluna Descrição da entidade Endereco ou Telefone, uma chamada é feita para o SQL Server (note o @EntityKeyValue1 variando), o que neste exemplo gerou 39998 entradas no profiler.
Essas chamadas são feitas porque o EF vai "preguiçosamente" (lazy) pedindo para o SQL Server os elementos de outras entidades, varrendo o resultado retornado após o acesso ao elemento Pessoa (primeira consulta exibida na imagem abaixo).
Eager loading
Caso você queira que o Entity Framework não trabalhe com esse comportamento de lazy loading, você pode alterar no seu código a utilização do contexto, adicionando o método "Include", que por debaixo dos planos já busca todos os elementos.var r = contexto.Pessoas.Include("Endereco").Include("Telefone").Where(x => x.Codigo < 10000);
Analisando a execução deste novo código, temos APENAS DUAS linhas na saída do profiler, onde notamos que o EF enviou para o SQL Server uma única consulta fazendo o join entre as três tabelas, já retornando o endereço e telefone. Dessa forma evitamos N round-trips entre o cliente e o servidor, fazendo com que em minha máquina o tempo total de execução ficasse em torno de 3 segundos.
Desempenho da aplicação
A diferença entre 3 e 12 segundos é onde mora o perigo... Talvez testando a solução em sua máquina, os 9 segundos não sejam significativos para os desenvolvedores, e um build sem a análise de desempenho ou do número de chamadas acabe chegando em produção.
Se a solução é para controlar o nome dos envolvidos no próximo bolão do campeonato lá na sua empresa, tudo tranquilo, porém caso a solução tenha milhares de requisições pesquisando por pessoas específicas, o número de chamadas ao banco de dados será muito grande. E dependendo da forma como a aplicação está gerenciando e utilizando os seus recursos (ou consumindo os registros), ela mesmo pode ser tornar o gargalo, que não respondendo adequadamente vai deixar o SQL Server cheio de requisições com espera do tipo ASYNC_NETWORK_IO (e NÃO É PROBLEMA DE REDE, ok?!!).
É meio óbvio que para escrever este artigo eu já encontrei diversos problemas de desempenho em aplicações por conta do Lazy Loading. O que em um primeiro momento sempre foi apontado como problema no banco de dados, conseguimos rastrear até apontar o comportamento indevido da aplicação. Então peço para que façam uma análise mais criteriosa de como o seu framework de mapeamento OR acessa o banco de dados, sempre entendendo o perfil das requisições e como pode utilizar da melhor forma o framework adotado.
Então estou falando para nunca usar lazy loading ou até configurar o contexto (this.Configuration.LazyLoadingEnabled = false) para impedir que um desenvolvedor desavisado faça uso do lazy load?
Claro que não, quero que você entenda que o maior custo de IO e CPU visto em uma única consulta com eager loading pode ser muito inferior quando comparado ao tempo total de execução do round-trip de milhares de chamadas para o SQL Server.
No fim tudo depende, só precisamos fazer as perguntas certas e achar as respostas adequadas, então espero que você guarde mais essa informação no seu repertório de soluções.
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
Marcadores:
ADO.NET,
Entity Framework,
Performance
quarta-feira, 6 de julho de 2016
SQL Saturday #570 São Paulo - eu vou!
Depois de passar o primeiro semestre sem palestrar em eventos da comunidade técnica, no segundo semestre estou planejando participar e apresentar algumas sessões (se forem aprovadas, claro!).
Portanto acabei de submeter uma sessão para o SQL Saturday #570 (http://www.sqlsaturday.com/570/EventHome.aspx), que acontecerá em São Paulo no dia 08 de Outubro.
Nem preciso falar que quem trabalha com SQL Server e mora em SP, a participação é obrigatória!
Os detalhes da sessão que submeti estão abaixo.
Título: Acesso a dados com ADO.NET e Entity Framework
Descrição: Esta sessão tem por objetivo analisar características do ADO.NET e Entity Framework ao acessar o SQL Server, sugerindo melhores práticas no uso destes. Iremos discutir aspectos como pool de conexões, transações locais e distribuídas, parametrização de comandos, paginação, lazy loading, cuidados com projeção, consultas genéricas, entre outros aspectos. Uma sessão de nível intermediário que pode ajudar o desenvolvedor e o DBA a se entenderem melhor…
(http://www.sqlsaturday.com/570/Sessions/Details.aspx?sid=52900)
Eu também ia submeter uma sessão intitulada In-memory OLTP Internals, porém já havia uma com o mesmo nome do nosso amigo Frederico Santos. Quem sabe o Fred não têm duas sessões aprovadas e eu consigo apresentar alguma coisa de Hekaton junto com ele! kkkkkk
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
Portanto acabei de submeter uma sessão para o SQL Saturday #570 (http://www.sqlsaturday.com/570/EventHome.aspx), que acontecerá em São Paulo no dia 08 de Outubro.
Nem preciso falar que quem trabalha com SQL Server e mora em SP, a participação é obrigatória!
Os detalhes da sessão que submeti estão abaixo.
Título: Acesso a dados com ADO.NET e Entity Framework
Descrição: Esta sessão tem por objetivo analisar características do ADO.NET e Entity Framework ao acessar o SQL Server, sugerindo melhores práticas no uso destes. Iremos discutir aspectos como pool de conexões, transações locais e distribuídas, parametrização de comandos, paginação, lazy loading, cuidados com projeção, consultas genéricas, entre outros aspectos. Uma sessão de nível intermediário que pode ajudar o desenvolvedor e o DBA a se entenderem melhor…
(http://www.sqlsaturday.com/570/Sessions/Details.aspx?sid=52900)
Eu também ia submeter uma sessão intitulada In-memory OLTP Internals, porém já havia uma com o mesmo nome do nosso amigo Frederico Santos. Quem sabe o Fred não têm duas sessões aprovadas e eu consigo apresentar alguma coisa de Hekaton junto com ele! kkkkkk
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
terça-feira, 5 de julho de 2016
[SQLServerDF] Encontro XXXIV - Analizando o Always Encrypted
Na próxima semana temos mais uma apresentação do SQLServerDF, começando 18:30h.
NÃO é necessário confirmar participação através do SQLServerDF. De qualquer forma, incentivo a participação na nossa lista de discussão, então para aqueles que não estão no grupo, basta ir até http://groups.google.com/group/sqlserverdf, fazer sua inscrição e aguardar minha moderação.
Data e horário: 12/07/2016, das 18:30h às 20:30h
Local: Xperts Trainning Center
Palestrantes: Gustavo Moura Fé Maia
Título: Analizando o Always Encrypted
Descrição: Nesta sessão, iremos conhecer uma das novas features do SQL Server 2016, o Always Encrypted. Entenderemos como funciona este recurso que promete proteger os dados de acessos indevidos numa topologia cliente/servidor e implantaremos essa funcionalidade simulando um ambiente real. Depois, iremos um pouco mais fundo e analisaremos as informações protegidas pelo Always Encrypted enquanto trafegam pela rede e enquanto estão em memória.
Mini-cv do palestrante: Gustavo [Guzz] Moura Fé Maia é um SQL Geek viciado em automatização e performance tuning. Trabalha com SQL Server desde 2012 e se tornou DBA em 2013. É um dos autores do blog Comunidade SQL Server onde gosta de escrever sobre programação em T-SQL, replicação e segurança. Quando não está com uma caneca de café, lendo e escrevendo sobre SQL, está com uma caneca de café fazendo outra coisa.
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
NÃO é necessário confirmar participação através do SQLServerDF. De qualquer forma, incentivo a participação na nossa lista de discussão, então para aqueles que não estão no grupo, basta ir até http://groups.google.com/group/sqlserverdf, fazer sua inscrição e aguardar minha moderação.
Data e horário: 12/07/2016, das 18:30h às 20:30h
Local: Xperts Trainning Center
Palestrantes: Gustavo Moura Fé Maia
Título: Analizando o Always Encrypted
Descrição: Nesta sessão, iremos conhecer uma das novas features do SQL Server 2016, o Always Encrypted. Entenderemos como funciona este recurso que promete proteger os dados de acessos indevidos numa topologia cliente/servidor e implantaremos essa funcionalidade simulando um ambiente real. Depois, iremos um pouco mais fundo e analisaremos as informações protegidas pelo Always Encrypted enquanto trafegam pela rede e enquanto estão em memória.
Mini-cv do palestrante: Gustavo [Guzz] Moura Fé Maia é um SQL Geek viciado em automatização e performance tuning. Trabalha com SQL Server desde 2012 e se tornou DBA em 2013. É um dos autores do blog Comunidade SQL Server onde gosta de escrever sobre programação em T-SQL, replicação e segurança. Quando não está com uma caneca de café, lendo e escrevendo sobre SQL, está com uma caneca de café fazendo outra coisa.
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
domingo, 3 de julho de 2016
SQL22 + Em busca de recolocação
Primeiro uma pequena história…
Alguns meses atrás recebi de um amigo um e-mail pedindo para encaminhar o CV de um conhecido DBA, que estava desempregado havia alguns meses. Ao analisar o currículo do indivíduo, minha resposta foi: peça para o Astrogildo** vir conversar comigo.
Meu conselho para o Astrogildo foi de que ele precisava se qualificar mais, pois o CV dele estava fraco e, eu como recrutador, dificilmente chamaria ela para uma entrevista de emprego. Sugeri que ele participasse do curso SQL23 - Mastering the database engine, onde poderia aprender muito e teríamos tempo de conversar. De quebra ele aproveitaria que o treinamento estava com um preço promocional, e para ajudar eu tentaria facilitar o pagamento.
Sexta-feira anterior ao início do treinamento e nada da matrícula do Astrogildo, uma pena. Só que no sábado o Astrogildo me procurou, conversamos um pouco e, dada a complicada situação em que ele se encontrava, eu o convidei para participar da turma. Depois de 48 horas de um treinamento bem puxado, peguei o voo para Brasília, com o sentimento de que o treinamento tinha sido importante para o Astrogildo.
Menos de dois meses depois, em uma segunda-feira de madrugada, recebo um e-mail do Astrogildo com a seguinte frase "Trenzão lotado, 5 da Matina em pé na maior friaca!....primeiro dia de um novo desafio! Feliz pra caramba!".
Pense em uma semana que começou muito bem! Levantei da cama com um baita sorriso…
** Nome fictício para facilitar a narrativa
==============
E qual o motivo dessa historinha que acabei de contar? Dia 17 de Julho eu vou ministrar mais um treinamento da Nimbus, o SQL22 - Administração e Monitoramento (http://www.srnimbus.com.br/calendario/sql22_spjulho2016/), em São Paulo.
E estou reservando uma vaga na sala para alguém que está DESEMPREGADO, que fará o treinamento SEM FAZER QUALQUER INVESTIMENTO.
Quer trabalhar como DBA SQL Server e está em busca de recolocação profissional? Seu CV não está chamando a atenção?
Mande um e-mail para luciano.moreira@srnimbus.com.br (até o dia 07/07) e me fale um pouco sobre você, o que anda fazendo para se capacitar e encontrar um bom lugar no mercado. Vou analisar os e-mails dos interessados e escolherei UM para participar do treinamento.
Quem sabe daqui a alguns meses minha semana não começa com uma boa notícia, novamente…
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
Alguns meses atrás recebi de um amigo um e-mail pedindo para encaminhar o CV de um conhecido DBA, que estava desempregado havia alguns meses. Ao analisar o currículo do indivíduo, minha resposta foi: peça para o Astrogildo** vir conversar comigo.
Meu conselho para o Astrogildo foi de que ele precisava se qualificar mais, pois o CV dele estava fraco e, eu como recrutador, dificilmente chamaria ela para uma entrevista de emprego. Sugeri que ele participasse do curso SQL23 - Mastering the database engine, onde poderia aprender muito e teríamos tempo de conversar. De quebra ele aproveitaria que o treinamento estava com um preço promocional, e para ajudar eu tentaria facilitar o pagamento.
Sexta-feira anterior ao início do treinamento e nada da matrícula do Astrogildo, uma pena. Só que no sábado o Astrogildo me procurou, conversamos um pouco e, dada a complicada situação em que ele se encontrava, eu o convidei para participar da turma. Depois de 48 horas de um treinamento bem puxado, peguei o voo para Brasília, com o sentimento de que o treinamento tinha sido importante para o Astrogildo.
Menos de dois meses depois, em uma segunda-feira de madrugada, recebo um e-mail do Astrogildo com a seguinte frase "Trenzão lotado, 5 da Matina em pé na maior friaca!....primeiro dia de um novo desafio! Feliz pra caramba!".
Pense em uma semana que começou muito bem! Levantei da cama com um baita sorriso…
** Nome fictício para facilitar a narrativa
==============
E qual o motivo dessa historinha que acabei de contar? Dia 17 de Julho eu vou ministrar mais um treinamento da Nimbus, o SQL22 - Administração e Monitoramento (http://www.srnimbus.com.br/calendario/sql22_spjulho2016/), em São Paulo.
E estou reservando uma vaga na sala para alguém que está DESEMPREGADO, que fará o treinamento SEM FAZER QUALQUER INVESTIMENTO.
Quer trabalhar como DBA SQL Server e está em busca de recolocação profissional? Seu CV não está chamando a atenção?
Mande um e-mail para luciano.moreira@srnimbus.com.br (até o dia 07/07) e me fale um pouco sobre você, o que anda fazendo para se capacitar e encontrar um bom lugar no mercado. Vou analisar os e-mails dos interessados e escolherei UM para participar do treinamento.
Quem sabe daqui a alguns meses minha semana não começa com uma boa notícia, novamente…
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
quarta-feira, 29 de junho de 2016
Vídeo #08 - Recovery Bulk-logged e restore point-in-time (DEMO 02)
Confome prometido no último post, publiquei o vídeo com a segunda demonstração sobre recovery model bulk-logged, operações minimamente logadas e restore do banco point-in-time.
Sugiro assistir os vídeos na sequência, então caso você ainda não tenha visto o primeiro, veja post anterior: http://luticm.blogspot.com.br/2016/06/video-07-recovery-bulk-logged-e-restore.html
Neste vídeo é feito uma operação de bulk insert minimamente logada, que faz com que o bulk changed map (BCM) seja alterado, que pode ser visto com entradas "ML_MAP" no transaction log.
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
Sugiro assistir os vídeos na sequência, então caso você ainda não tenha visto o primeiro, veja post anterior: http://luticm.blogspot.com.br/2016/06/video-07-recovery-bulk-logged-e-restore.html
Neste vídeo é feito uma operação de bulk insert minimamente logada, que faz com que o bulk changed map (BCM) seja alterado, que pode ser visto com entradas "ML_MAP" no transaction log.
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
terça-feira, 28 de junho de 2016
Vídeo #07 - Recovery Bulk-logged e restore point-in-time
Na sequência dos vídeos do Luti, dessa vez venho com uma gravação de material técnico, que publicarei em dois vídeos no meu canal do YouTube. Optei por manter a numeração e vou organizar as tags para identificar o material publicado.
Ambos os vídeos são referentes ao comportamento do SQL Server quando temos bancos de dados com recovery model bulk-logged, operações minimamente logadas (ou não) e restore do banco point-in-time.
Resolvi quebrar em dois vídeos para manter os vídeos menores, assim você poderá encaixar até 15 minutos de conteúdo na sua agenda. O segundo vídeo ainda está em edição e será publicado em breve.
O primeiro vídeo é Recovery Bulk-logged e restore point-in-time (DEMO 01).
Essa pergunta, a discussão em torno da resposta e detalhes do funcionamento do SQL Server, é o tipo de questão que gosto de ouvir nos treinamentos de Administração (http://www.srnimbus.com.br/calendario/sql22_spjulho2016/) e Mastering (http://www.srnimbus.com.br/calendario/sql23_spjul2016/). Se ainda não participou de nenhum deles, aproveite!
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
Ambos os vídeos são referentes ao comportamento do SQL Server quando temos bancos de dados com recovery model bulk-logged, operações minimamente logadas (ou não) e restore do banco point-in-time.
Resolvi quebrar em dois vídeos para manter os vídeos menores, assim você poderá encaixar até 15 minutos de conteúdo na sua agenda. O segundo vídeo ainda está em edição e será publicado em breve.
O primeiro vídeo é Recovery Bulk-logged e restore point-in-time (DEMO 01).
Essa pergunta, a discussão em torno da resposta e detalhes do funcionamento do SQL Server, é o tipo de questão que gosto de ouvir nos treinamentos de Administração (http://www.srnimbus.com.br/calendario/sql22_spjulho2016/) e Mastering (http://www.srnimbus.com.br/calendario/sql23_spjul2016/). Se ainda não participou de nenhum deles, aproveite!
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
sexta-feira, 24 de junho de 2016
FUN! Deadlock art generator
Contexto: Estou ministrando um treinamento in-company e preparando uma série de novas demonstrações para este cliente. Após escrever uma procedure que era para ser problemática, esbarrei em deadlocks mais interessantes do que eu havia planejado….
Gostei da brincadeira e resolvei compartilhar com vocês um deadlock art generator!
Algumas imagens da saída estão abaixo. Também coloquei no OneDrive um trace com alguns deadlocks que eu coletei.
A primeira ver que ouvi falar sobre deadlock art foi em um post do Catae (https://blogs.msdn.microsoft.com/fcatae/2010/03/18/deadlock-art/) que sempre cito no módulo de locking nos meus treinamentos.
Para reproduzir em seu ambiente, você vai fazer o seguinte.
1. Crie a procedure proc_Divertida no AdventureWorks2014
2. Utilizando o SQLQueryStress, mande 20/30 threads com 3/4 execuções “EXEC proc_Divertida;”
a. O número de threads/repetições você muda de acordo com seu interesse na arte. kkkk
3. Monitore o deadlock graph no profiler
HAVE FUN!
Abraços,
USE AdventureWorks2014
GO
IF OBJECT_ID('dbo.proc_Divertida') IS NOT NULL
DROP PROCEDURE dbo.proc_Divertida
go
CREATE PROCEDURE dbo.proc_Divertida
AS
DECLARE @OrderID INT = (CAST((RAND() * 100000) AS INT) % 30000) + 43659;
PRINT @OrderID
BEGIN TRANSACTION
UPDATE Sales.SalesOrderDetail
SET UnitPrice = UnitPrice
WHERE SalesOrderID = @OrderID
; WITH C AS (
SELECT (Quantity * ActualCost) AS LineTotal, PRODUCTID, TransactionDate
FROM Production.TransactionHistory
UNION
SELECT (Quantity * ActualCost), PRODUCTID, TransactionDate
FROM Production.TransactionHistoryArchive
UNION
SELECT (UnitPrice * OrderQty), SOD.ProductID, SOH.OrderDate
FROM Sales.SalesOrderDetail AS SOD
INNER JOIN Sales.SalesOrderHeader AS SOH
ON SOH.SalesOrderID = SOD.SalesOrderID
)
SELECT
C.ProductID,
YEAR(TransactionDate),
SUM(LineTotal)
FROM C
GROUP BY GROUPING SETS (ProductID, YEAR(TransactionDate), (ProductID, YEAR(TransactionDate)), ())
COMMIT TRANSACTION
GO
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
Gostei da brincadeira e resolvei compartilhar com vocês um deadlock art generator!
Algumas imagens da saída estão abaixo. Também coloquei no OneDrive um trace com alguns deadlocks que eu coletei.
A primeira ver que ouvi falar sobre deadlock art foi em um post do Catae (https://blogs.msdn.microsoft.com/fcatae/2010/03/18/deadlock-art/) que sempre cito no módulo de locking nos meus treinamentos.
Para reproduzir em seu ambiente, você vai fazer o seguinte.
1. Crie a procedure proc_Divertida no AdventureWorks2014
2. Utilizando o SQLQueryStress, mande 20/30 threads com 3/4 execuções “EXEC proc_Divertida;”
a. O número de threads/repetições você muda de acordo com seu interesse na arte. kkkk
3. Monitore o deadlock graph no profiler
HAVE FUN!
Abraços,
USE AdventureWorks2014
GO
IF OBJECT_ID('dbo.proc_Divertida') IS NOT NULL
DROP PROCEDURE dbo.proc_Divertida
go
CREATE PROCEDURE dbo.proc_Divertida
AS
DECLARE @OrderID INT = (CAST((RAND() * 100000) AS INT) % 30000) + 43659;
PRINT @OrderID
BEGIN TRANSACTION
UPDATE Sales.SalesOrderDetail
SET UnitPrice = UnitPrice
WHERE SalesOrderID = @OrderID
; WITH C AS (
SELECT (Quantity * ActualCost) AS LineTotal, PRODUCTID, TransactionDate
FROM Production.TransactionHistory
UNION
SELECT (Quantity * ActualCost), PRODUCTID, TransactionDate
FROM Production.TransactionHistoryArchive
UNION
SELECT (UnitPrice * OrderQty), SOD.ProductID, SOH.OrderDate
FROM Sales.SalesOrderDetail AS SOD
INNER JOIN Sales.SalesOrderHeader AS SOH
ON SOH.SalesOrderID = SOD.SalesOrderID
)
SELECT
C.ProductID,
YEAR(TransactionDate),
SUM(LineTotal)
FROM C
GROUP BY GROUPING SETS (ProductID, YEAR(TransactionDate), (ProductID, YEAR(TransactionDate)), ())
COMMIT TRANSACTION
GO
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
quarta-feira, 22 de junho de 2016
[SQLServerDF] Encontro XXXIII - SQL Server CPU Foundations
Na próxima semana temos mais uma apresentação do SQLServerDF, começando 18:30h.
NÃO é necessário confirmar participação através do SQLServerDF. De qualquer forma, incentivo a participação na nossa lista de discussão, então para aqueles que não estão no grupo, basta ir até http://groups.google.com/group/sqlserverdf, fazer sua inscrição e aguardar minha moderação.
Data e horário: 29/06/2016, das 18:30h às 20:30h
Local: Xperts Trainning Center
Palestrante: Rodrigo Ribeiro Gomes
Título: SQL Server CPU Foundations
Descrição: Você sabe dizer o percentual de consumo de CPU que uma query ou procedure está consumindo? O que significa usar 100% de CPU? Esta apresentação irá apresentar conceitos básicos sobre o uso de CPU no Windows e como isso impacta na análise de queries de uma instância. Alguns trechos da apresentação podem ser conferidas no vídeo disponível em https://www.youtube.com/watch?v=mXF7NcJqX8M.
Mini-cv do palestrante: Há mais de 6 anos atuando com SQL Server, já implantou várias soluções de monitoramento, segurança e alta disponibilidade, além de atuar em diversos casos complexos que envolvem desde recuperar registros deletados sem qualquer backup até explorar e modificar estruturas internas do produto e do Windows para se recuperar de problemas ou otimizar o ambiente. Nas horas vagas, dedica-se um pouco a família e amigos, estuda alguma maluquice (ex.: como funciona o chuveiro elétrico) ou escreve em seu blog em www.thesqltimes.com.
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
NÃO é necessário confirmar participação através do SQLServerDF. De qualquer forma, incentivo a participação na nossa lista de discussão, então para aqueles que não estão no grupo, basta ir até http://groups.google.com/group/sqlserverdf, fazer sua inscrição e aguardar minha moderação.
Data e horário: 29/06/2016, das 18:30h às 20:30h
Local: Xperts Trainning Center
Palestrante: Rodrigo Ribeiro Gomes
Título: SQL Server CPU Foundations
Descrição: Você sabe dizer o percentual de consumo de CPU que uma query ou procedure está consumindo? O que significa usar 100% de CPU? Esta apresentação irá apresentar conceitos básicos sobre o uso de CPU no Windows e como isso impacta na análise de queries de uma instância. Alguns trechos da apresentação podem ser conferidas no vídeo disponível em https://www.youtube.com/watch?v=mXF7NcJqX8M.
Mini-cv do palestrante: Há mais de 6 anos atuando com SQL Server, já implantou várias soluções de monitoramento, segurança e alta disponibilidade, além de atuar em diversos casos complexos que envolvem desde recuperar registros deletados sem qualquer backup até explorar e modificar estruturas internas do produto e do Windows para se recuperar de problemas ou otimizar o ambiente. Nas horas vagas, dedica-se um pouco a família e amigos, estuda alguma maluquice (ex.: como funciona o chuveiro elétrico) ou escreve em seu blog em www.thesqltimes.com.
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
terça-feira, 21 de junho de 2016
Treinamentos com Luti em Julho/2016
Pessoal, temos anúncio de treinamentos da Nimbus para o mês de Julho, comigo como instrutor:
•SQL23 Brasília (em definição)
O SQL23 não vai acontecer em Brasília, aos interessados, vejam possibilidade de participar do SQL23 em São Paulo.
• SQL22 São Paulo (http://www.srnimbus.com.br/calendario/sql22_spjulho2016/) - CONFIRMADO
•SQL23 São Paulo (http://www.srnimbus.com.br/calendario/sql23_spjul2016/)
Infelizmente o curso foi anunciado muito em cima da hora e não atingimos quórum mínimo.
Por conta de novos projetos que eu estou envolvido, eu NÃO tenho previsão de ministrar mais treinamentos em 2016 ou 2017, sendo que este intervalo pode se estender.
Então se você já tem vontade de fazer um treinamento comigo, porém vem adiando seus planos, meu conselho é que não deixe passar essa oportunidade…
Importante: os preços promocionais de R$ 1.500,00 serão mantidos!
E antes que perguntem, eu vou incluir algumas coisinhas do SQL Server 2016.
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
•
O SQL23 não vai acontecer em Brasília, aos interessados, vejam possibilidade de participar do SQL23 em São Paulo.
• SQL22 São Paulo (http://www.srnimbus.com.br/calendario/sql22_spjulho2016/) - CONFIRMADO
•
Infelizmente o curso foi anunciado muito em cima da hora e não atingimos quórum mínimo.
Por conta de novos projetos que eu estou envolvido, eu NÃO tenho previsão de ministrar mais treinamentos em 2016 ou 2017, sendo que este intervalo pode se estender.
Então se você já tem vontade de fazer um treinamento comigo, porém vem adiando seus planos, meu conselho é que não deixe passar essa oportunidade…
Importante: os preços promocionais de R$ 1.500,00 serão mantidos!
E antes que perguntem, eu vou incluir algumas coisinhas do SQL Server 2016.
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
segunda-feira, 30 de maio de 2016
SQL Server além do conceito volume 2
Essa é uma notícia requentada, já que o anúncio foi feito enquanto eu estava viajando, porém não poderia deixar de registrar aqui mais um feito entre amigos #sqlgeeks.
No ano passado 15 amigos se juntaram para montar um livro, que seria uma coletânea de capítulos sobre assuntos diversos, e claro, publicá-lo gratuitamente para toda a comunidade técnica. O resultado deste trabalho foi o lançamento do livro SQL Server Além do Conceito – Volume 2.
Você pode baixar gratuitamente o PDF do livro: https://onedrive.live.com/redir?resid=E145F7753042D628%216153
Caso prefira comprar na Amazon, o link é: https://www.amazon.com/SQL-Server-Al%C3%A9m-Conceito-Portuguese-ebook/dp/B01FVH1F3C
Obs: A Amazon não permite colocar um livro gratuitamente para sempre. Uma opção seria deixá-lo gratuito por 5 dias a cada 90 dias, porém, isso nos proibiria de publicá-lo em outro local. Sendo assim, decidimos publicar na Amazon com o menor valor possível ($1,99) e o valor arrecadado ( se houver ) será usado para bancar parte do jantar dos palestrantes no SQL SATURDAY SP.
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
No ano passado 15 amigos se juntaram para montar um livro, que seria uma coletânea de capítulos sobre assuntos diversos, e claro, publicá-lo gratuitamente para toda a comunidade técnica. O resultado deste trabalho foi o lançamento do livro SQL Server Além do Conceito – Volume 2.
Você pode baixar gratuitamente o PDF do livro: https://onedrive.live.com/redir?resid=E145F7753042D628%216153
Caso prefira comprar na Amazon, o link é: https://www.amazon.com/SQL-Server-Al%C3%A9m-Conceito-Portuguese-ebook/dp/B01FVH1F3C
Obs: A Amazon não permite colocar um livro gratuitamente para sempre. Uma opção seria deixá-lo gratuito por 5 dias a cada 90 dias, porém, isso nos proibiria de publicá-lo em outro local. Sendo assim, decidimos publicar na Amazon com o menor valor possível ($1,99) e o valor arrecadado ( se houver ) será usado para bancar parte do jantar dos palestrantes no SQL SATURDAY SP.
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
quinta-feira, 26 de maio de 2016
[SQLServerDF] Encontro XXXII - Corrupção de dados e Perda Acidental
Na próxima semana temos mais uma apresentação do SQLServerDF, começando 18:30h.
NÃO é necessário confirmar participação através do SQLServerDF. De qualquer forma, incentivo a participação na nossa lista de discussão, então para aqueles que não estão no grupo, basta ir até http://groups.google.com/group/sqlserverdf, fazer sua inscrição e aguardar minha moderação.
Data e horário: 30/05/2016, das 18:30h às 20:30h
Local: Xperts Trainning Center
Palestrantes: Gustavo Maia Aguiar e Rodrigo Ribeiro Gomes
Título: Corrupção de dados e Perda Acidental - Prevenção, Tratamento, Boas Práticas
Descrição: A eficaz administração de banco de dados zela para que todos os dados estejam disponíveis e protegidos para os usuários, aplicações e demais consumidores. Por mais cuidados que um ambiente possa ter, não raras às vezes o banco de dados pode sofrer incidentes que comprometam o seu conteúdo (e muitas vezes sem um ponto de restauração disponível).
Se alguma vez você já teve de lidar com corrupção de dados ou perda acidental em ambientes críticos ou tem curiosidade sobre as melhores formas de fazê-lo bem como prevenir que problemas dessa natureza ocorram, essa sessão poderá ambientá-los em técnicas que lidem com esse tipo de situação. São tratadas situações práticas de problemas e resolução
Mini-cv do Gustavo: Profissional entusiasta do mundo de banco de dados e armazenamento há mais de treze anos, trabalhou em várias empresas, escreveu vários artigos e ministrou vários treinamentos e consultorias e hoje atua em uma das maiores instituições financeiras do país como líder de banco de dados. Acostumado com ambientes de missão crítica e palestrante recorrente em eventos ligados a banco de dados e a tecnologias Microsoft. Nas horas vagas, usa o hobby de DJ e diverte-se com seus trabalhos publicados em https://www.mixcloud.com/gmasets.
Mini-cv do Rodrigo: Há mais de 6 anos atuando com SQL Server, já implantou várias soluções de monitoramento, segurança e alta disponibilidade, além de atuar em diversos casos complexos que envolvem desde recuperar registros deletados sem qualquer backup até explorar e modificar estruturas internas do produto e do Windows para se recuperar de problemas ou otimizar o ambiente. Nas horas vagas, dedica-se um pouco a família e amigos, estuda alguma maluquice (ex.: como funciona o chuveiro elétrico) ou escreve em seu blog em www.thesqltimes.com
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
NÃO é necessário confirmar participação através do SQLServerDF. De qualquer forma, incentivo a participação na nossa lista de discussão, então para aqueles que não estão no grupo, basta ir até http://groups.google.com/group/sqlserverdf, fazer sua inscrição e aguardar minha moderação.
Data e horário: 30/05/2016, das 18:30h às 20:30h
Local: Xperts Trainning Center
Palestrantes: Gustavo Maia Aguiar e Rodrigo Ribeiro Gomes
Título: Corrupção de dados e Perda Acidental - Prevenção, Tratamento, Boas Práticas
Descrição: A eficaz administração de banco de dados zela para que todos os dados estejam disponíveis e protegidos para os usuários, aplicações e demais consumidores. Por mais cuidados que um ambiente possa ter, não raras às vezes o banco de dados pode sofrer incidentes que comprometam o seu conteúdo (e muitas vezes sem um ponto de restauração disponível).
Se alguma vez você já teve de lidar com corrupção de dados ou perda acidental em ambientes críticos ou tem curiosidade sobre as melhores formas de fazê-lo bem como prevenir que problemas dessa natureza ocorram, essa sessão poderá ambientá-los em técnicas que lidem com esse tipo de situação. São tratadas situações práticas de problemas e resolução
Mini-cv do Gustavo: Profissional entusiasta do mundo de banco de dados e armazenamento há mais de treze anos, trabalhou em várias empresas, escreveu vários artigos e ministrou vários treinamentos e consultorias e hoje atua em uma das maiores instituições financeiras do país como líder de banco de dados. Acostumado com ambientes de missão crítica e palestrante recorrente em eventos ligados a banco de dados e a tecnologias Microsoft. Nas horas vagas, usa o hobby de DJ e diverte-se com seus trabalhos publicados em https://www.mixcloud.com/gmasets.
Mini-cv do Rodrigo: Há mais de 6 anos atuando com SQL Server, já implantou várias soluções de monitoramento, segurança e alta disponibilidade, além de atuar em diversos casos complexos que envolvem desde recuperar registros deletados sem qualquer backup até explorar e modificar estruturas internas do produto e do Windows para se recuperar de problemas ou otimizar o ambiente. Nas horas vagas, dedica-se um pouco a família e amigos, estuda alguma maluquice (ex.: como funciona o chuveiro elétrico) ou escreve em seu blog em www.thesqltimes.com
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
segunda-feira, 9 de maio de 2016
[SQLServerDF] Encontro XXXI - Particionamento no SQL Server
Por conta de incertezas em minha agenda, confirmo em cima da hora mais uma apresentação do SQLServerDF, dia 10/05 (AMANHÃ) 18:30h. Vou utilizar o mesmo material que apresentei na semana passada para o SQLManiacs, agora para o público de Brasília.
DIFERENTE das outras vezes, NÃO é necessário confirmar participação através da lista SQLServerDF. De qualquer forma, incentivo a participação na nossa lista de discussão, então para aqueles que não estão no grupo, basta ir até http://groups.google.com/group/sqlserverdf, fazer sua inscrição e aguardar minha moderação.
Data e horário: 10/05/2016, das 18:30h às 20:30h
Local: Xperts Trainning Center
Palestrante: Luciano Moreira
Título: Particionamento no SQL Server
Descrição: Nos dias de hoje é muito comum encontrarmos bancos de dados com alguns (ou muitos) Terabytes e invariavelmente será necessário adotar uma estratégia de particionamento de tabelas e índices. Nesta sessão vamos explicar como funciona o particionamento de objetos no SQL Server, exemplificando seu uso através de diversos exemplos e, claro, sempre buscando relação com situações realistas, desvendando mitos e tentando analisar o recurso sobre a ótica da engine relacional. E se você trabalha com o SQL Server, porém nunca se sentiu muito à vontade com o particionamento, esta sessão é ideal para você!
Mini Bio:
É Arquiteto de Dados na Sr. Nimbus. Especialista e MVP em SQL Server, vem buscando nos últimos anos desbravar o vasto universo dos dados, explorando diferentes soluções arquiteturais e engines de bancos de dados. Divide seu tempo como profissional entre consultorias, treinamentos e participação na comunidade técnica, ajudando empresas a projetar soluções, capacitar equipes e resolver problemas que envolvem bancos de dados. Saiba mais sobre ele: http://www.srnimbus.com.br/luciano-moreira/.
Xperts Trainning Center
SHIS QI 15 Conjunto 8/9 Área especial Bloco D, Subsolo - Lago Sul (ao final da rua)
CEP 71635-565 - Brasília - DF
Telefone: (61) 4063-8177 | 9545-9241
Ponto de referência: Acesso é feito ao lado da escola Red Balloon; Próximo ao hospital Brasília.
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
DIFERENTE das outras vezes, NÃO é necessário confirmar participação através da lista SQLServerDF. De qualquer forma, incentivo a participação na nossa lista de discussão, então para aqueles que não estão no grupo, basta ir até http://groups.google.com/group/sqlserverdf, fazer sua inscrição e aguardar minha moderação.
Data e horário: 10/05/2016, das 18:30h às 20:30h
Local: Xperts Trainning Center
Palestrante: Luciano Moreira
Título: Particionamento no SQL Server
Descrição: Nos dias de hoje é muito comum encontrarmos bancos de dados com alguns (ou muitos) Terabytes e invariavelmente será necessário adotar uma estratégia de particionamento de tabelas e índices. Nesta sessão vamos explicar como funciona o particionamento de objetos no SQL Server, exemplificando seu uso através de diversos exemplos e, claro, sempre buscando relação com situações realistas, desvendando mitos e tentando analisar o recurso sobre a ótica da engine relacional. E se você trabalha com o SQL Server, porém nunca se sentiu muito à vontade com o particionamento, esta sessão é ideal para você!
Mini Bio:
É Arquiteto de Dados na Sr. Nimbus. Especialista e MVP em SQL Server, vem buscando nos últimos anos desbravar o vasto universo dos dados, explorando diferentes soluções arquiteturais e engines de bancos de dados. Divide seu tempo como profissional entre consultorias, treinamentos e participação na comunidade técnica, ajudando empresas a projetar soluções, capacitar equipes e resolver problemas que envolvem bancos de dados. Saiba mais sobre ele: http://www.srnimbus.com.br/luciano-moreira/.
Xperts Trainning Center
SHIS QI 15 Conjunto 8/9 Área especial Bloco D, Subsolo - Lago Sul (ao final da rua)
CEP 71635-565 - Brasília - DF
Telefone: (61) 4063-8177 | 9545-9241
Ponto de referência: Acesso é feito ao lado da escola Red Balloon; Próximo ao hospital Brasília.
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
quarta-feira, 20 de abril de 2016
Apresentação para SQLManiacs - Particionamento no SQL Server
Na primeira semana de Maio estarei novamente em São Paulo para ministrar o famoso SQL Server Mastering (Internals) (http://www.srnimbus.com.br/calendario/sql23_012016_sp/), e de quebra vou aproveitar meus dias em SP para palestrar novamente para o grupo SQLManiacs.
Essa é uma nova palestra que estou montando, com base em scripts de outro treinamento da Nimbus, e estou aproveitando para adicionar mais uma série de demos.
Os detalhes da sessão são:
Data e horário: 03/05/2016, das 19:00h às 21:30h
Local: DoMore - Avenida Paulista
Palestrante: Luciano Moreira
Título: Particionamento no SQL Server
Descrição: Nos dias de hoje é muito comum encontrarmos bancos de dados com alguns (ou muitos) Terabytes e invariavelmente será necessário adotar uma estratégia de particionamento de tabelas e índices. Nesta sessão vamos explicar como funciona o particionamento de objetos no SQL Server, exemplificando seu uso através de diversos exemplos e, claro, sempre buscando relação com situações realistas, desvendando mitos e tentando analisar o recurso sobre a ótica da engine relacional. E se você trabalha com o SQL Server, porém nunca se sentiu muito à vontade com o particionamento, esta sessão é ideal para você!
Mini Bio:
É Arquiteto de Dados na Sr. Nimbus. Especialista e MVP em SQL Server, vem buscando nos últimos anos desbravar o vasto universo dos dados, explorando diferentes soluções arquiteturais e engines de bancos de dados. Divide seu tempo como profissional entre consultorias, treinamentos e participação na comunidade técnica, ajudando empresas a projetar soluções, capacitar equipes e resolver problemas que envolvem bancos de dados. Saiba mais sobre ele: http://www.srnimbus.com.br/luciano-moreira/.
As confirmações acontecerão no grupo de discussão do SQLManiacs (https://groups.google.com/forum/#!forum/sqlmaniacs).
============ ATUALIZAÇÃO - 06/05/2016 ===========
Material do conteúdo apresentado na reunião do SQLManiacs
E uma foto que eu tirei no final da sessão, ainda com sala cheia...
===============================================
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
Essa é uma nova palestra que estou montando, com base em scripts de outro treinamento da Nimbus, e estou aproveitando para adicionar mais uma série de demos.
Os detalhes da sessão são:
Data e horário: 03/05/2016, das 19:00h às 21:30h
Local: DoMore - Avenida Paulista
Palestrante: Luciano Moreira
Título: Particionamento no SQL Server
Descrição: Nos dias de hoje é muito comum encontrarmos bancos de dados com alguns (ou muitos) Terabytes e invariavelmente será necessário adotar uma estratégia de particionamento de tabelas e índices. Nesta sessão vamos explicar como funciona o particionamento de objetos no SQL Server, exemplificando seu uso através de diversos exemplos e, claro, sempre buscando relação com situações realistas, desvendando mitos e tentando analisar o recurso sobre a ótica da engine relacional. E se você trabalha com o SQL Server, porém nunca se sentiu muito à vontade com o particionamento, esta sessão é ideal para você!
Mini Bio:
É Arquiteto de Dados na Sr. Nimbus. Especialista e MVP em SQL Server, vem buscando nos últimos anos desbravar o vasto universo dos dados, explorando diferentes soluções arquiteturais e engines de bancos de dados. Divide seu tempo como profissional entre consultorias, treinamentos e participação na comunidade técnica, ajudando empresas a projetar soluções, capacitar equipes e resolver problemas que envolvem bancos de dados. Saiba mais sobre ele: http://www.srnimbus.com.br/luciano-moreira/.
As confirmações acontecerão no grupo de discussão do SQLManiacs (https://groups.google.com/forum/#!forum/sqlmaniacs).
============ ATUALIZAÇÃO - 06/05/2016 ===========
Material do conteúdo apresentado na reunião do SQLManiacs
E uma foto que eu tirei no final da sessão, ainda com sala cheia...
===============================================
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
terça-feira, 19 de abril de 2016
Vídeo 06 - Em busca de novos desafios
Voltei a gravar mais um Vídeo do Luti, agora o número 06 - Em busca de novos desafios.
E não é voltado somente para aqueles que estão desempregados, ok?
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
E não é voltado somente para aqueles que estão desempregados, ok?
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
segunda-feira, 11 de abril de 2016
Patrocínio do Evento DBA Brasil 1.0
A Sr. Nimbus está novamente envolvida com eventos técnicos no Brasil, dessa vez como patrocinadora do evento DBA Brasil 1.0: http://www.dbabr.com.br/blog/index.php/dba-brasil-1-0/
Este evento surgiu do grupo DBA Brasil, que já está bombando no LinkedIn, WhatsApp e outras redes sociais. É uma iniciativa para a comunidade técnica, com palestrantes de alto gabarito, onde o profissional somente tem que colaborar com 1Kg de alimento não perecível. Então é uma oportunidade que merece todo o apoio de empresas do Brasil.
E mesmo que neste mês, por um baita conflito de agenda, eu não possa estar nos eventos que aconteceram no país, como Data Driven, SQL Sat Joinville e agora DBA Brasil 1.0, estou aqui incitando-os a participar e, claro, nunca parar de evoluir profissionalmente.
Que o evento seja fantástico, com muito network e aprendizado! E se tudo der certo, que aconteçam novas edições, e que eu possa estar presente. \o/
Abraços e um bom evento!
PS: Essa não é a única oportunidade de capacitação. Caso queiram investir em treinamentos avançados de SQL Server, a Sr. Nimbus está com uma baita promoção (http://luticm.blogspot.com.br/2016/03/todos-treinamento-da-nimbus-com-preco.html).
PPS: Algumas turmas estão em lista de espera, mas não desista, estamos tentando acomodar da melhor forma a demanda.
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
Este evento surgiu do grupo DBA Brasil, que já está bombando no LinkedIn, WhatsApp e outras redes sociais. É uma iniciativa para a comunidade técnica, com palestrantes de alto gabarito, onde o profissional somente tem que colaborar com 1Kg de alimento não perecível. Então é uma oportunidade que merece todo o apoio de empresas do Brasil.
E mesmo que neste mês, por um baita conflito de agenda, eu não possa estar nos eventos que aconteceram no país, como Data Driven, SQL Sat Joinville e agora DBA Brasil 1.0, estou aqui incitando-os a participar e, claro, nunca parar de evoluir profissionalmente.
Que o evento seja fantástico, com muito network e aprendizado! E se tudo der certo, que aconteçam novas edições, e que eu possa estar presente. \o/
Abraços e um bom evento!
PS: Essa não é a única oportunidade de capacitação. Caso queiram investir em treinamentos avançados de SQL Server, a Sr. Nimbus está com uma baita promoção (http://luticm.blogspot.com.br/2016/03/todos-treinamento-da-nimbus-com-preco.html).
PPS: Algumas turmas estão em lista de espera, mas não desista, estamos tentando acomodar da melhor forma a demanda.
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
quinta-feira, 31 de março de 2016
SQL Server Developer Edition - for free
Excelente notícia! SQL Server Developer Edition agora é grátis. Veja o anúncio da Microsoft na íntegra: https://blogs.technet.microsoft.com/dataplatforminsider/2016/03/31/microsoft-sql-server-developer-edition-is-now-free/
Ele vem junto com um conjunto de ferramentas disponíveis no Visual Studio Dev Essentials (http://www.visualstudio.com/products/visual-studio-dev-essentials-vs). Que tem até um crédito para brincar com o Azure (nada demais, mas é algo legal para quem nunca brincou com o Azure!).
Além disso tem muita novidade rolando no Build 2016. Se quiser acompanhar o que anda acontecendo por lá, não deixe de dar uma olhada no Channel9: https://channel9.msdn.com/Events/Build/2016.
É meu amigo, cada dia que passa temos menos desculpas para não nos reinventarmos...
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
Ele vem junto com um conjunto de ferramentas disponíveis no Visual Studio Dev Essentials (http://www.visualstudio.com/products/visual-studio-dev-essentials-vs). Que tem até um crédito para brincar com o Azure (nada demais, mas é algo legal para quem nunca brincou com o Azure!).
Além disso tem muita novidade rolando no Build 2016. Se quiser acompanhar o que anda acontecendo por lá, não deixe de dar uma olhada no Channel9: https://channel9.msdn.com/Events/Build/2016.
É meu amigo, cada dia que passa temos menos desculpas para não nos reinventarmos...
Abraços
Luciano Caixeta Moreira - {Luti}
luciano.moreira@srnimbus.com.br
www.twitter.com/luticm
www.srnimbus.com.br
Assinar:
Postagens (Atom)







