Dica com T-SQL: VIEW

Fala pessoal, tudo bem com vocês?

Espero que sim, vamos para mais uma dica com T-SQL…

Deixo aqui um exemplo simples de query para criar e usar VIEW.

Não tem muito segredo, você pode usar VIEW para retornar os dados de muitas tabelas e com isso seu time de desenvolvimento não precisa ter acesso direto as
tabelas, facilitando assim a vida de todos.

Abaixo um exemplo de criação de VIEW e na sequencia como usar VIEW para exibir o resultado que é semelhante ao que usei no post anterior, mas dessa
vez usando VIEW.

Usando a VIEW de forma simples!

Existe alguns detalhes para uso de Views de forma mais avançada, mas nesse momento, entenda como usar a forma simples para ajudar você no dia a dia.

Bacana né?

Espero ter ajudado com essa simples contribuição.

Desejo a todos uma ótima semana, um grande abraço e até o próximo post pessoal!

Felippe Oliveira

Primeiros passos com SQL Server Integration Services (SSIS)

Olá pessoal!

Vamos começar um assunto que até então, não escrevi nada aqui no blog.
Vamos entender algumas funcionalidades do SQL Server Integration Services conhecido como SSIS.

Vou simplificar esse início, com um primeiro exemplo de Olá mundo!
Assim vamos se familiarizar com o conceito da ferramenta.
Para que serve essa ferramenta? Qual sua utilização?

Vamos ao um cenário bem simples, você tem um programa desktop na sua empresa que funciona localmente, mas agora você recebe a missão de migrar os dados que estão armazenados em uma base antiga local para uma base de dados nova,
que foi criado para atender uma aplicação web. Para esse exemplo citado, o SSIS é muito bem utilizado, pois tem a finalidade de carregar esses dados de uma origem até um destino, de forma muito simples.
Nesse primeiro momento, faremos algo simples, apenas um Olá Mundo!
O que é necessário para começar?
Precisamos da ferramenta chamada DataTools mais conhecida como SSDT, estamos falando da versão a partir de 2012, pois antes disso era conhecida como BIDS (Bussiness Inteligence Development Studio).
Para os próximos exemplos, será necessário a instalação de uma instância SQL Server, mas isso para o próximo post.

Vamos praticar, iniciando nosso Projeto:

Clique em file > New > Project…

Figura_00Figura_00

Na tela que surgir, escolha a pasta onde deverá salvar o projeto e dê um nome para ele,
no exemplo abaixo, chamo de OlaMundo_SSIS:

Figura_01Figura_01

Agora você verá do lado direito de sua tela a Solution do projeto, conforme figura abaixo:

Figura_02Figura_02

Aperte F2 de seu teclado para renomear o pacote.

Figura_03Figura_03

Após renomear, navegue até o painel que deve aparecer do lado esquerdo chamado de SSIS Toobox e procure por Script Task, essa task, será utilizado para nosso Olá Mundo.

Figura_04Figura_04

Clique nele e arraste até a parte central do painel Control Flow, deve ficar igual a imagem abaixo:

Figura_05Figura_05

Agora de um duplo clique e a janela abaixo, deverá surgir, logo depois clique em Edit Script…

Figura_06Figura_06

A janela que surgir deverá ser parecida com a figura abaixo… Procure pelo texto
//TODO: Add your code here, e logo após adicione os comandos, MessageBox.Show(“Olá Mundo!”);

Figura_07Figura_07

Clique em salvar e feche essa tela, agora execute o projeto clicando em Start ou apenas F5 de seu teclado, com isso deverá surgir a tela abaixo:

Figura_08Figura_08

Pronto pessoal, fizemos nosso primeiro “Olá Mundo!” utilizando da ferramenta SQL Server Integration Services (SSIS).

Por hoje é isso pessoal, até mais e uma ótima semana a todos.

Abraços,

Felippe Oliveira

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

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

Merge com T-SQL

Olá pessoal!

Hoje vamos ver o que se pode fazer com o comando Merge, utilizado no MS SQL SERVER, ele ajuda a mesclar dados entre duas fontes (origem, destino).
É possível atualizar, deletar e inserir dados, abaixo um exemplo prático.

USE TEMPDB
GO

–Criação da tabela temporária para teste;
CREATE TABLE #TMPA (Id INT Identity not null, Nome VARCHAR(100))

–Inserindo os dados de teste na tabela de destino
INSERT #TMPA VALUES (‘Felippe’), (‘Lucas’)

SELECT * FROM #TMPA
merge_1

–Tabela de origem
CREATE TABLE #TMPB (Nome VARCHAR(100))

INSERT #TMPB VALUES (‘Pedro’), (‘Valéria’), (‘Daniela’), (‘Nicolly’)

SELECT * FROM #TMPB
merge_2

–Realizando Merge com INSERT e UPDATE para dados já existentes;

MERGE #TMPA AS ta
USING (SELECT nome FROM #TMPB) AS tb
ON (ta.nome = tb.nome)
WHEN NOT MATCHED THEN
INSERT (nome)
VALUES (tb.Nome)
WHEN MATCHED THEN
UPDATE SET ta.nome = tb.nome;

Após realizar o merge, veja como ficou:

SELECT * FROM #TMPA
merge_3

Bom, isso foi um exemplo básico, apenas para saber como aplicar o Merge no seu desenvolvimento, para saber sobre outros comandos possíveis com merge consulte MERGE (Transact-SQL).

Até mais.

Felippe Oliveira

 

Funções de classificação

Olá pessoal!

Hoje o assunto é sobre funções de classificação, em jornada rumo a prova 70-461, aprendi que podemos classificar grupos de dados.
Essas funções nos auxiliam em criação de ranking, ou seja ordenação dos conjuntos de dados.
São elas:
RANK();
DENSE_RANK();
NTILE();
ROW_NUMBER();

Funções que podem ser utilizadas em diferentes situações, abaixo um exemplo simples de cada, para um melhor entendimento.
Para os exemplos a seguir, foram criados tabelas alunos, disciplina e notas.

RANK(): Classifica o conjunto de dados mantendo um GAP na ordenação.
O exemplo abaixo faz com que a classificação seja agrupado pela quebra e assim mantendo o contador do numero da linha.

SELECT DISTINCT RANK()OVER(ORDER BY d.nome) as Ordem, d.nome as Disciplina
FROM Aluno a
INNER JOIN AlunoDisciplina ad ON a.pkidaluno = ad.fkidaluno
INNER JOIN Disciplina d ON ad.fkIdDisciplina = d.pkIdDisciplina
ORDER BY d.nome

Ordem Disciplina
1 Biologia
11 Geografia
21 História
31 Matetmática
41 Português

DENSE_RANK(): Mantém a classificação em ordem no agrupamento;

SELECT DISTINCT DENSE_RANK()OVER(ORDER BY d.nome) as Ordem, d.nome as Disciplina
FROM Aluno a
INNER JOIN AlunoDisciplina ad  ON a.pkidaluno = ad.fkidaluno
INNER JOIN Disciplina d ON ad.fkIdDisciplina = d.pkIdDisciplina
ORDER BY d.nome

Ordem Disciplina
1 Biologia
2 Geografia
3 História
4 Matetmática
5 Português

NTILE(): Agrupa pela quantidade de grupos que você informar.

SELECT DISTINCT NTILE(2)OVER(ORDER BY d.nome) as Ordem, d.nome as Disciplina
FROM Disciplina d
ORDER BY d.Nome

Ordem Disciplina
1 Biologia
1 Geografia
1 História
2 Matetmática
2 Português

ROW_NUMBER(): Ordena sem ter gap entre os grupos.
SELECT DISTINCT ROW_NUMBER()OVER(ORDER BY d.nome) as Ordem, d.nome as Disciplina
FROM Disciplina d
ORDER BY d.Nome

Ordem Disciplina
1 Biologia
2 Geografia
3 História
4 Matetmática
5 Português

Com as funções de classificação é possível ordenar os grupos e ajustar a sua consulta de acordo com o solicitado.

Ainda é possível utilizar o comando PARTITION BY, mas a explicação de como utiliza-lo ficará para um próximo post.

Espero ter ajudado.

Até mais…

Felippe Oliveira

70-461 Passei…

Olá!

Recentemente realizei a prova 70-461 de Querying Microsoft SQL Server 2012/2014 e passei, para conseguir a façanha não foi assim tão fácil, foi necessário aprender algumas das novas funcionalidades e saber utilizar o que já existia desde outras versões do MS SQL Server, como por exemplo, funções de classificação,  function,  CTE (common_table_expression), entre outros.
Vou continuar a postar sobre essas funcionalidades que nos ajudam diariamente.
Para aqueles que ainda não realizaram a prova, fica algumas dicas de estudo abaixo:

  • Entenda como funciona e quando utilizar Triggers;
  • Views, como criar, entenda suas vantagens;
  • Function ou Funções, experimente os tipos de retorno;
  • Planos de execução e Otimização de consultas;
  • XML;
  • Sequence X Identity;

Agora bora estudar para 70-463 Implementing a Data Warehouse with Microsoft SQL Server 2012/2014, mas como informei, vou preencher esse blog com dicas e informações sobre desenvolvimento de querys entre outros assuntos;

Espero poder ajudar mais.

Até o próximo post e bons estudos.

Felippe Oliveira

Começando do Zero | 70-461

Olá pessoal!

Em outros posts falei sobre criação e alteração de tabela, mas aí pensei, e se você não tem muita ideia de como criar um banco de dados? Como criar uma tabela sem saber criar o banco? Por esse motivo decidi publicar aqui um simples script, agora vou partir do principio em questão a objetos, não vou me referir a modelagem, que poderá ser descrito em outro post.

“Começando do zero”, imagine que uma loja qualquer, precisa armazenar seus produtos e para isso é necessário cadastra-los em um banco de dados, então vamos criar esse banco e assim poderemos continuar o aprendizado em relação aos objetos que veremos mais adiante.

Considero que você tenha o SQL server instalado em sua máquina, pode ser até o SQL Server Express. E que também tenha o SSMS (SQL Server Management Studio) para iniciarmos, vou chamar daqui em diante a ferramenta de SSMS.

Para abrir o SSMS, escreva na caixa de pesquisa do windows a sigla e assim logo irá aparecer… Clique para começar.

Depois de aberto, clique em novo/new dependendo se sua ferramenta estiver em português ou inglês, com isso será aberto uma página em branco. Agora podemos começar a escrever em T-SQL (Transact – SQL Server).

Veja o primeiro comando:

use master
go

O comando acima serve para deixarmos em uso o banco de sistemas, abaixo script para criar nosso primeiro banco de dados.

CREATE DATABASE [ESTOQUEPRODUTOS]
ON PRIMARY
( NAME = N’ESTOQUEPRODUTOS’, FILENAME = N’C:\BDS\ESTOQUEPRODUTOS.mdf’ , SIZE = 3072 KB , FILEGROWTH = 1024 KB )
LOG ON
( NAME = N’ESTOQUEPRODUTOS_log’, FILENAME = N’C:\BDS\ESTOQUEPRODUTOS_log.ldf’ , SIZE = 1024 KB , FILEGROWTH = 10%)
go

Você deve estar pensando, nossa quanto código para criar um banco, digo que, para se ter um banco de dados, você precisa definir um local onde armazenar os arquivos .mdf.ldf, que são arquivos de dados e de log. Você define na criação, o tamanho que os arquivos podem ter e quanto você quer que eles cresçam de acordo com seu tamanho de disco.

Aqui foi utilizado T-SQL para criação do banco, mas é possível fazer em modo design/gráfico/tela, não vou descrever aqui pois a minha intenção é de aprender e repassar utilizando a linguagem T-SQL.

Obs.: O script utilizado se refere a criação de banco de dados com MS SQL Server, para outros SGBDs pode existir algumas diferenças.

Espero poder ajudar com essa introdução.

Obrigado!

 

 

 

Alterando tabela com T-SQL | 70-461

Hoje vamos aprender como alterar tabela adicionando e removendo colunas.

O comando para adicionar uma coluna é bem simples, veja os exemplos abaixo:

ALTER table cliente ADD Naturalidade varchar(50) null

ou

ALTER table cliente ADD  Naturalidade varchar(50)

ALTER table cliente ADD  Naturalidade varchar(50)  not null*

A tabela acima é a mesma utilizada no post anterior.

*Podemos inserir uma coluna sem a necessidade de informar se ela será nula, mas se você tentar colocar not null e a tabela já conter valores(dados), você recebera uma mensagem de erro informando que não é possível inserir a nova coluna. Caso a tabela ainda não contenha dados o processo ocorrerá normalmente.

Retirar uma coluna é simples mesmo que ela contenha dados, veja o T-SQL abaixo:

ALTER table cliente DROP COLUMN Naturalidade

Por hoje fica mais esse aprendizado, breve volto com mais informações sobre criação de tabelas.

Obs.: Não deixem de comentar, sugerir ou até mesmo criticar, conto com sua ajuda também.

valeu.

 

 

 

Primeiro passo para 70-461

Hoje começo os estudos para essa prova que parece algo muito distante, vou colocar aqui tudo que eu aprender sobre T-SQL e deixar as dicar para vocês.

Essa semana será sobre o tópico “Criar objetos do banco de dados”

Partirei do principio que já temos um banco de dados criado e que conhecemos boa parte dos tipos de dados, como int (inteiro), varchar(Caracteres),  datetime (Data) entre outros, que podemos atribuir as colunas adicionadas na tabela.

Abaixo, comando para criar uma tabela com T-SQL:

create table cliente
(
pkIdCliente int identity(1,1) primary key not null,
Nome varchar(100) null,
DataNascimento date null,
DataCadastro datetime
);
go

O comando é bem simples, para ver funcionar, você precisa executar o mesmo dentro de SQL Server Management Studio vulgo(SSMS), com isso já teremos uma tabela criada em nosso banco de dados.

Clique aqui para ver estrutura completa de comandos de criação de tabela;

Existe outra maneira simples para se criar tabela, mas no caso, é necessário que já exista outra tabela criada; Segue exemplo abaixo:

select *
into clienteNovo
from cliente

Com o comando anterior, você cria uma tabela baseada em outra, nesse caso se a tabela anterior conter dados, você preenche a nova tabela com os mesmos dados.

Bom pessoal por hoje é só, amanhã coloco mais o que aprender sobre criação de tabelas e objetos.

Obs.: Não deixem de comentar, sugerir ou até mesmo criticar, conto com sua ajuda também.

Abraços