Você, a empresa e os dados…

No Join Predicate – SQL Server

Olá pessoal.

Vamos ao um case real, é bom ter essas histórias do dia-a-dia, pois assim ficamos mais ligeiros para não perder tempo fazendo o que seria mais simples, veja a seguir:

Um belo dia você lá no seu trabalho todo preocupado em manter a perfomance do seu ambiente, aí você olha para o lado e vê um dos desenvolvedores tentando montar uma query, ele olha para você e diz que está fazendo uma consulta simples, porém está demorando muito e para completar ainda pergunta se está tudo bem no banco?

Você todo inocente fala:
“Aqui tudo bem, sem lock, por enquanto…”, e completa, precisa de ajuda?

O desenvolvedor aproveita, diz que deve ser muitos dados… Nessa hora você pensa, deixa eu ver o plano de execução dessa sua consulta, manda a query aí para eu ver o plano dela.

Aí você já parte para o CTRL+M (Teclas de atalho para habilitar o plano de execução no SSMS – SQL Server Management Studio) e após a execução da query, você se depara com a figura abaixo:

OperadorError

Você que está aprendendo tudo sobre performance, se pergunta:
Que erro é esse aí? Como surgiu? E comenta em voz baixa nunca vi isso aí não…
Procura nas apostilas da faculdade e nada, aí você para e pensa, deixa eu ver essa query melhor, quando passa conferindo os joins, percebe que o JOIN está errado, pronto, problema resolvido.

OperadorSemErro

veja como resolver:

O exemplo da query abaixo é o mais simples para facilitar nosso entendimento.

A causa do erro:

QueryErrorOperator

Alterando a junção entre a tabela A e a Tabela B, problema resolvido, assim deixando sua query mais rápida e correta.

Agora já sabemos que um operador com erro, devemos verificar se não está faltando um predicate, pois a falta dele na junção(Join) causa o erro visto no operador.

Espero ter ajudado com mais essa dica.

Até mais.

Felippe Oliveira

Considerações SQL Saturday #580

Olá pessoal.

Vou comentar com vocês sobre o evento realizado dia 08 de abril em Joinville, o SQL Saturday #580.

Evento com excelentes palestrantes, cada um compartilhando conhecimento de forma simples e gratuita, com um único objetivo, que era ilustrar como utilizar as ferramentas que o SQL Server nos oferece.

As palestrar eram bem objetivas ilustrando problemas ou dificuldades encontrados no dia-a-dia… Foi muito bom aprender um pouco mais com quem já vivenciou situações que nunca imaginei e que se eu precisar já sei como aplicar as soluções;

Não percam os próximos eventos, como DBA Brasil 2.0 que será em São Paulo e SQL Saturday #609 que será em Caxias do Sul.

Espero encontra-los por lá.

Até mais.

Felippe Oliveira

Login failed (Microsoft SQL Server Error: 18456)

Olá pessoal.

Hoje vamos ver sobre erro ao conectar usuário/login em uma instância SQL Server.

Provavelmente você já migrou sua instância de banco de dados entre servidores, ou fez uma instalação em sua própria máquina para testes, e após criar um login você tentou acessar e se deparou com o erro de número 18456, certo?

LoginError01

Caso veja essa mesma mensagem, não perca seu tempo achando que é conflito de login – usuário em alguma das bases de dados.

O que ocorre é:

Você precisa dizer para sua instância que ela deverá aceitar autenticação mista, mas como assim MISTA?

Simples, veja a imagem a seguir:

LoginError00

A instância precisa estar com o modo misto selecionado, pois para o primeiro modo, é aceito apenas conexão se existir usuário/login cadastrado em um domino no AD(Active Directory).

Para alterar esse modo, clique na sua instância com o botão direito do mouse, depois clique em propriedades e em seguida em security, conforme a imagem abaixo:

LoginError02

Clique em Security e mude para SQL Server and Windows Authentication mode.LoginError03

Após isso clique em ok.

Se você na pressa, acabou não lendo a mensagem abaixo, continuara vendo o erro 18456.

LoginError04

Pois o processo de restart se faz necessário para aceitar todos os usuários em sua próxima tentativa de conexão.

Para reiniciar a instância, clique com o botão direito sobre ela e depois aperte em Restart, veja a imagem abaixo:

LoginError05

Será exibido uma mensagem perguntando se poderá prosseguir com a reinicialização do serviço do SQL Server, clique em sim e aguarde até ele terminar.

Após reiniciar, tente conectar com seu usuário/login novamente, agora você estará logado na instância sem precisar ser um usuário/login do AD.

Espero ter ajudado.

Até mais.

Felippe Oliveira