Função LEN () – MS SQL Server

Olá pessoal,

Hoje a dica será rápida e simples, você já pensou na possibilidade de contar caracteres no MS SQL Server?
Digo para você que sim, é possível, podemos utilizar a função LEN (), responsável por retornar a quantidade de caracteres especificados em uma expressão, veja o exemplo abaixo:

Len01

Essa função pode contribuir com seu select antes de fazer uma inserção,  onde será exibido o tamanho da expressão, nesse caso, será maior que o limite do campo, no exemplo abaixo mostra uma situação, na qual a tabela possui um campo com valor definido:

Len02

Veja que o campo nome está limitado para 10 caracteres, agora vamos inserir o dado utilizado no primeiro exemplo.

Len03

Na figura acima, foi gerado um erro ao inserir o dado maior que o campo, se por ventura tal fato já ocorreu com você, identificou que não se pode inserir um dado maior que o definido no campo da tabela.
Para resolver este problema, apague os caracteres adicionais, caso seu exemplo seja parecido com o da figura acima, faça a inserção normalmente.
Se o dado que você for inserir, não possa ser alterado manualmente, utilize a função SUBSTRING, falarei mais sobre a mesma em outro post.

Por hoje é isso pessoal, espero ter contribuído de alguma maneira, até mais e bons estudos.

Abraços,

Felippe Oliveira

Anúncios

Exportando dados com MS SQL Server

Olá pessoal,

Seguindo o que informei no último post, vamos agora aprender a exportar dados entre banco de dados, utilizando query entre outros formas.

Export_01

Depois de clicar em Export Data ou Exportar Dados, seguir o passo a passo das próximas figuras:

Export_02

Clique em Next ou Avançar para informar o destino:

Export_03

Após clicar em Next ou Avançar, vamos escolher a opção de gravar uma consulta, pois nesse exemplo vamos exportar os dados de uma tabela do banco de dados Estudo para uma nova tabela que será criado no banco Acoes.

Export_04

Abaixo veja uma simples query, para informar que será o resultado dela será exportado.

Export_05

Aqui daremos o nome adequado para a nova tabela.

Export_06

Temos duas opções, podemos visualizar os dados previamente para saber se não esquecemos nenhum detalhe, e também temos a opção de editar mapeamentos,
ou seja, caso algum campo não consiga identificar o formato, podemos informar
explicitamente.

Export_07

Export_08

Após essas validações, podemos seguir adiante, e com isso exportar os dados.

Export_09

Confira sempre se a fonte e o destinos estão corretos…

Export_10

Caso sim, clique em concluir e veja os dados sendo exportados para sua nova tabela.

Export_11

Veja os dados já exportados:

Export_12.PNG

Pessoal, esse é um exemplo simples de exportação através do MS SQL Server, entenda como ele pode ser útil no dia-a-dia.
Importante deixar claro que para conseguir utilizar essa ferramenta, é necessário algumas permissões como CREATE TABLE, INSERT, SELECT;

Por enquanto é isso pessoal, espero ter contribuído de alguma maneira, até mais e bons estudos.

Abraços,

Felippe Oliveira

Importando cotações de papeis da Bolsa de Valores com MS SQL Server

Olá pessoal!

Vamos entender como importar dados relacionados a cotação de ações negociadas na Bolsa de Valores de São Paulo com MS SQL Server.

Importar ou Import: É a maneira que se tem para levar dados que estão em arquivos salvos em formatos .txt, .xls, .xlsx, como também de outros SGBDs (Sistema Gerenciamento de Bancos de Dados), exemplo, Oracle, Mysql; Assim podem ser transferidos para dentro do seu banco de dados SQL Server.

Para importar, você deve clicar na sua base de dados com o botão direito do mouse, ir em Tarefas ou Tasks se o seu SSMS(SQL Server Management Studio) estiver em inglês, e logo depois clicar em Importar Dados ou Import Data, veja a imagem abaixo:

Import_01

A janela a seguir é um assistente para importação e exportação, é através dela que selecionamos nossa fonte de dados, para nosso exemplo, vamos utilizar um arquivo no formato .xls pronto com os dados da cotação de papeis negociadas na bolsa de valores, veja como é simples a importação.

Import_02

Em fonte de dados escolha Excel, depois clique em Procurar… para adicionar o arquivo escolhido.
Para a versão escolha a qual seu arquivo foi salvo, o exemplo será utilizado o mesmo da imagem.
Caso seu arquivo contenha cabeçalho, deixe o checkbox marcado, após, clique em Avançar…
Na próxima tela, será solicitado o Destino, escolha SQL Server Native Client, coloque também o nome do seu servidor, quanto a Autenticação, coloque seu usuário e senha para prosseguir em caso de usuário do SQL Server, se não, deixe como usuário de Autenticação do Windows, mas lembre-se que o mesmo deve estar com as permissões de acesso para a instância de SQL… Após, escolha o banco para qual quer importar os dados e com isso clique em Avançar, veja a imagem abaixo:

Import_03

Agora deixe marcado apenas como copiar dados e clique em Avançar.

Import_04.PNG

Se seu arquivo for composto por mais de uma planilha, será exibido todas como opções para seleção, no caso, marque apenas o que conter os dados que devem ser importados, é nessa tela que também podemos renomear nossa tabela que será criada pela ferramenta no momento da importação, veja a imagem abaixo:

Import_05

Para ter certeza de que todas as colunas do arquivo estão sendo importadas clique em Visualizar e logo verá seus dados previamente.

Import_06

Após esse passo, o Checkbox Executar imediatamente é selecionado por padrão, caso seja uma importação que se repetira N vezes, você também poderá salvar como pacote SSIS, mas aí já é um outro assunto…

Import_07
Clique em Avançar para ver a tela de resumo.

Import_08
Agora podemos Concluir nossa importação.

Import_09.PNG

Pessoal, esse é um exemplo simples de importação através do MS SQL Server, entenda como ele pode ser útil no dia-a-dia.
Importante deixar claro que para conseguir utilizar essa ferramenta, é necessário algumas permissões como SELECT, CREATE TABLE;

No próximo post faremos a exportação dos dados de uma tabela para outra, entre bancos diferentes.

Por enquanto é isso pessoal, espero ter contribuído de alguma maneira, até mais e bons estudos.

Abraços,

Felippe Oliveira

Evento SQL Saturday #676 – São Paulo – SP

Olá pessoal!

Depois de ataques e migrações, volto aqui para dizer que dia 30 deste mês, teremos mais um SQL Saturday, evento que será realizado em São Paulo – SP, isso mesmo aqui em São Paulo, não percam a chance de aprender de graça assuntos sobre Big Data – Data Science, BI, Cloud Computing, dicas de carreira, certificação, entre outros.

SaoPaulo_2017SQLServer

Clique aqui para ver todas as palestras e horários, e também se cadastrar, não perca essa chande de aprender e aprimorar seus conhecimentos de graça.

Em breve volto com dicas de eventos entre outros assuntos do mundo de SQL Server.

Abraços,

Felippe Oliveira

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

Colocando um banco de dados em Read-Only – SQL Server

Olá pessoal.

Pode acontecer de seu seu superior lhe pedir para colocar um ou mais banco de dados em modo apenas leitura (Read-Only).
Hoje existe duas maneiras para fazer essa tarefa, vamos ver quais?

Primeira forma:

Comandos T-SQL, o exemplo abaixo é realizado com o banco de dados criado para esse post, veja:

BaseApenasLeituraCod1

No momento da alteração pode ocorrer uma mensagem de erro:

BaseApenasLeituraErro1

Caso isso aconteça, use o comando set single_user with rollback immediate

Ficando assim:

BaseApenasLeituraCod2.PNG

Após isso, execute novamente o comando para deixar o banco em modo de leitura.

Para retirar o único usuário que está com acesso a base de dados utilize o comando abaixo:

BaseApenasLeituraCod3

Com isso seu banco já está no modo apenas leitura (Read Only).

BaseApenasLeituraReadOnly

E aí você pergunta, mas se o superior pedir para voltar para o modo de leitura e escrita, como fazer?
Simples, repita os passos para deixar em usuário único e utilize o comando set read_write with no_wait;

Ficando assim:

BaseApenasLeituraCod4

Segunda forma:

Através de telas com alguns cliques, veja o passo a passo:

1º – Clique com o botão direito do mouse sobre o banco de dados e vá até propriedades:

BaseApenasLeituraPropertis

2º – Após abrir a tela de propriedades, clique em Opções e visualize a opção State, veja que está com o modo Read-Only igual a false:

BaseApenasLeituraOptions

3º – Altere de false para true, caso exista conexões em aberto, será exibido a mensagem abaixo:BaseApenasLeituraOpenConnections

4º – Clique em sim, para que ele encerre todas as conexões, assim será feito a alteração do modo de escrita para apenas leitura, ficando conforme imagem abaixo:

BaseApenasLeituraReadOnly

Pronto, seu banco de dados está agora em modo leitura.

Espero poder ajudar com essa dica.

Até mais.

Felippe Oliveira

Copiar nome de colunas SSMS

Olá pessoal.

Estou passando aqui para falarmos de um comando simples que pode nos ajudar no dia a dia, na (correria) hehe… Como copiar dados com cabeçalho do Sql Server Management Studio(SSMS) para um Excel por exemplo.
Claro que existem outras maneiras de copiar os dados para Excel, mas essa me chamou a atenção, pois eu era a pessoa que clicava com o botão direito do mouse conforme a imagem abaixo:

CopiarCabecalhoBTNDireito

Agora, experimente apertar as teclas Ctrl + Shift + C;
Pronto você pode colar no Excel e verá que o nome das colunas foram copiadas.

CopiarCabecalhoTeclasAtalho

Espero que gostem da dica.

Até mais.

Felippe Oliveira