Arquivo da categoria: Nostalgia

Novos ícones para o Microsoft Office 365 são apresentados


Publicado em seu canal no YouTube a Microsoft divulgou um vídeo, apresentando os novos ícones para os aplicativos do Office 365. A última grande mudança nos ícones do Office foi com o lançamento do Office 2013 anos atrás.

A Microsoft criou novos ícones para o Word, Excel, PowerPoint, OneNote, Outlook e também para outros produtos que fazem parte do Office 365 para empresas como o SharePoint, Microsoft Teams e Skype:

Microsoft apresenta novos ícones para os aplicativos do Office 365

De acordo com o anúncio da Microsoft, os novos ícones para os aplicativos do Office 365 estarão disponíveis para todas as plataformas nos próximos meses. Segundo Jon Friedman –  Head of Microsoft Office design: “Design está se tornando o coração e a alma do Office. Saiba como evoluímos nossa identidade visual para refletir as experiências simples, poderosas e inteligentes do Office 365.” Eles serão disponibilizados primeiro nos aplicativos móveis e na versão Web.

Um detalhe que chama a atenção é que o vídeo também mostra novos ícones para outros aplicativos do próprio Windows 10, como Email, Calendário, Notícias, Fotos e Calculadora.

Diferente dos ícones para os aplicativos do Office, ainda não se sabe quando os novos ícones para os aplicativos do Windows 10 estarão disponíveis.

Vídeo apresentando os novos ícones para os aplicativos do Office 365:

Sistemas visuais flexíveis que funcionam em plataformas, dispositivos e gerações.

Nossa solução do projeto era dissociple a letra e o símbolo nos ícones, criando essencialmente dois painéis (um para a letra e um para o símbolo) que nós podemos emparelhar ou separar. Isso nos permite manter a familiaridade enquanto ainda enfatizando a simplicidade dentro do aplicativo.

Separando-os em dois painéis também acrescenta profundidade, que faíscas oportunidades em contextos 3D. Através deste sistema flexível, mantemos a tradição viva enquanto suavemente empurrando o envelope.

Projetos centrados no homem que enfatizam o conteúdo e refletem a velocidade da vida moderna

Fontes e Direitos Autorais – Jon Friedman – https://medium.com/microsoft-design/redesigning-the-office-app-icons-to-embrace-a-new-world-of-work-91d72608ee8f

Anúncios

Quatro novos tema para Windows 10


A Microsoft disponibilizou na semana passada para download na Microsoft Store quatro novos temas para o Windows 10: Snowy Mountains, Frosty Art, Field of Poppies e Up in the Sky.

Cada tema apresenta uma grande variedade de papéis de parede, além de imagens de alta qualidade e de grande beleza.

O tema Snowy Mountains inclui 18 papéis de parede, o tema Frosty Art incui 20 papéis de parede, o tema Field of Poppies inclui 16 papéis de parede e o tema Up in the Sky também inclui 16 papéis de parede.

Clique nas imagens para baixar os quatro novos temas para o Windows 10:

Microsoft disponibiliza quatro novos temas para o Windows 10
Snowy Mountains
W10 Tema 2 De 4
Frosty Art
W10 Tema 3 De 4
Field of Poppies

W10 Tema 4 De 4Up in the Sky

Fontes e Direitos Autorais: Microsoft.com.br – 03/12/2018.

Microsoft SQL Server 2016 SP1 – Atualização Cumulativa 8 disponível


A Microsoft disponibilizou para download recentemente a Atualização Cumulativa 8 para SQL Server 2016 SP1.

As informações obtidas através do artigo KB4077064 publicado no site de suporte da Microsoft, esta atualização traz correções decorrentes dos problemas apresentados e identificados após o lançamento do SP1 e das atualizações cumulativas anteriores.

Relação de Atualizações Cumulativas disponíveis para o Microsoft SQL Server 2016 Service Pack 1:

SQL Server 2016 SP1 CU7
SQL Server 2016 SP1 CU6
SQL Server 2016 SP1 CU5
SQL Server 2016 SP1 CU4
SQL Server 2016 SP1 CU3
SQL Server 2016 SP1 CU2
SQL Server 2016 SP1 CU1
SQL Server 2016 SP1
SQL Server 2016 all builds

Hotfixes que estão incluídos neste pacote de atualização cumulativa


Número do bug do VSTS Número do artigo KB Descrição Área de correção
11190572 4074696 CORREÇÃO: Operação de análise falha e retorna um erro de nível de linha não-administradores no SSAS 2016 (modelo de tabela) Serviços de análise
11403782 4058565 CORREÇÃO: Erro de asserção ao executar um procedimento armazenado que faz referência a um objeto grande no SQL Server de 2014, 2016 e 2017 Desempenho de SQL
11455726 4074862 CORREÇÃO: Erro inesperado ao criar um subcubo em 2016 Analysis Services do SQL Server (modelo Multidimensional) Serviços de análise
11444126 4074881 CORREÇÃO: Erro de asserção quando os dados são inseridos em massa em uma tabela que contém índices columnstore não estão em cluster e de cluster no SQL Server 2016 Mecanismo SQL
11441098 4017445 CORREÇÃO: Um segmento de REFAZER não está disponível na réplica secundária depois que um banco de dados de disponibilidade é descartado no SQL Server Alta disponibilidade
10988062 4038932 CORREÇÃO: Change Data Capture funcionalidade não funciona no SQL Server Serviços de integração
11405602 4046745 CORREÇÃO: Declaração UPDATE falha silenciosamente quando você faz referência a uma função de partição inexistente na cláusula WHERE no SQL Server de 2014 2016 ou 2017 Mecanismo SQL
11405606 4048967 CORREÇÃO: Não é possível habilitar ou desabilitar a captura de dados de alteração para um banco de dados depois de anexar no SQL Server de 2014 2016 ou 2017 Mecanismo SQL
11405621 4054398 CORREÇÃO: Varejo “Comparação inválida devido a nenhum AGRUPAMENTO” assert ocorre no SQL Server de 2014, 2016 e 2017 Mecanismo SQL
11297169 4013247 CORREÇÃO: Assinaturas do SSRS falham na execução de um relatório que se conecta a uma lista do SharePoint externo O Reporting Services
11396933 2932559 CORREÇÃO: Totais estão errados depois de filtrar em um item de tabela dinâmica e remover o filtro no SSAS Serviços de análise
11511975 4077105 CORREÇÃO: Erro de falta de memória quando o espaço de endereço virtual do processo do SQL Server é muito baixo em SQL Server Mecanismo SQL
11455724 4082865 CORREÇÃO: O SSAS falha quando uma consulta é executada em uma grande tabela particionada no SQL Server 2016 Serviços de análise
11456360 4083949 CORREÇÃO: SSAS pode apresentar falha quando você executa uma consulta DAX usando-se um usuário não-administrador do Windows no SQL Server 2016 Serviços de análise
11511973 4057307 CORREÇÃO: Modo Multidimensional trava aleatoriamente e uma violação de acesso ocorre no SSAS 2016 ou no SSAS 2014 Serviços de análise
11509590 4086136 CORREÇÃO: O SSAS para de responder quando você executa uma consulta MDX no SQL Server 2016 Analysis Services (modelo Multidimensional) Serviços de análise
11426456 4087358 CORREÇÃO: Sequência de caracteres de conexão baseada em expressão é limpo quando você configurar fontes de dados para o relatório de 2016 SSRS O Reporting Services
11508542 4088901 CORREÇÃO: Falha de afirmação ao sys.dm_db_log_space_usage instrução é executada em um instantâneo de banco de dados no SQL Server 2016 Alta disponibilidade
11183472 4089324 CORREÇÃO: Erro 15665 quando você chamar sp_set_session_context repetidamente com o valor da chave nula no SQL Server 2016 Mecanismo SQL
11565899 4089099 CORREÇÃO: Leva muito tempo para restaurar um banco de dados criptografado TDE backup no SQL Server Mecanismo SQL
11529110 4089623 CORREÇÃO: Memória insuficiente ocorre e consulta falhar quando você executa a consulta MDX com opção não vazios no SSAS 2016 e SSAS 2014 Serviços de análise
11053682 4089950 Atualização para dar suporte à eliminação de partições em planos de consulta que têm índices espaciais no SQL Server 2016 Desempenho de SQL
11323371 4090025 CORREÇÃO: Mascaramento aleatório não colocar máscara em valores BIGINT corretamente no SQL Server Segurança do SQL
11456072 4090032 CORREÇÃO: Memória obtém esgotada ao executar o relatório de BI de energia que executa a consulta DAX no modo multidimensional do SSAS 2016 Serviços de análise
11569422 4089948 CORREÇÃO: Bloqueio de consulta Intra quando os valores são inseridos em um índice particionado columnstore em cluster no SQL Server 2016 Mecanismo SQL
11281514 4052131 CORREÇÃO: DMV sys.dm_os_windows_info retorna valores errados para 10 do Windows e Windows Server 2016 Mecanismo SQL
11301441 4058700 CORREÇÃO: Erro de 9004 intermitente quando um backup é restaurado por meio do modo de espera no SQL Server 2014 Mecanismo SQL
11336087 4057615 CORREÇÃO: Erro de “Sintaxe incorreta próximo a palavra-chave ‘KEY'” quando você adiciona uma tabela Oracle com coluna principal chamada ‘KEY’ no SQL Server 2016 Serviços de integração
11339410 4058289 CORREÇÃO: A instrução ALTER procedimento com criptografia falha quando você criptografa um procedimento armazenado não publicados no SQL Server 2016 Mecanismo SQL
11420793 4058747 CORREÇÃO: Erro ao atualizar o banco de dados do SSIS catálogo na Standard Edition do SQL Server 2016 Serviços de integração
11457917 4077683 CORREÇÃO: Sp_execute_external_script de procedimento armazenado do sistema e memória do DMV sys.dm_exec_cached_plans causa vazamento no SQL Server 2016 e 2017 Mecanismo SQL
11447600 4038881 CORREÇÃO: Exceção inesperada ocorre quando você processar dimensões usando o processo de atualização no SSAS 2016 Serviços de análise
11309597 4073393 CORREÇÃO: erro “área de dados passada para uma chamada do sistema é muito pequena” ao iniciar um aplicativo de área de trabalho de ponte em um SQL Server de 2014 2016 e 2017 Mecanismo SQL
11446129 3192154 Uma opção de plano de consulta não ideal faz com que o desempenho ruim quando valores fora do intervalo representado nas estatísticas serão pesquisados em SQL Server 2016 e 2017 Desempenho de SQL
11548517 3147012 CORREÇÃO: Uso de pontos de verificação de disco grandes ocorre para um grupo de arquivos de memória otimizada durante cargas de trabalho pesadas de memória OLTP de memória
11559191 4058174 CORREÇÃO: Contenção de tempdb pesada ocorre no SQL Server 2016 Mecanismo SQL
11516257 4087406 CORREÇÃO: Erro 9002 quando não houver nenhum espaço em disco suficiente para o crescimento de log crítica no SQL Server 2014 e 2016 Mecanismo SQL
11444654 4090486 CORREÇÃO: Backup gerenciado não processa renomear nome de banco de dados para um novo nome com espaços no SQL Server 2016 à direita Ferramentas de gerenciamento
11704293 4078596 CORREÇÃO: Violações de acesso aleatórias ocorrem quando você executa o procedimento armazenado no SQL Server 2016 de monitoramento Mecanismo SQL
11545426 4089276 Melhora o desempenho de consulta quando um filtro de bitmap otimizado é aplicado a um plano de consulta no SQL Server 2016 e 2017 Mecanismo SQL
11532381 4089819 CORREÇÃO: erro “esgotado durante a espera de registrador de divisão de buffer – tipo 4” quando você usa grupos de disponibilidade no SQL Server 2016 ou 2017 Alta disponibilidade

Resoluções adicionais

Soluções para os seguintes problemas também estão incluídas no SQL Server 2016 SP1 CU8.

Número do bug do VSTS Descrição
11701162 Um erro de declaração ocorre quando você parar a propagação automática de um grupo de disponibilidade.
11704344 DAX consultas são executadas mais lentamente que antes após você fazer backup de um banco de dados do SSAS tabular.
11704240 PolyBase falha se PolyBase contadores estão ausentes ou corrompidos no Monitor de desempenho do Windows.
11704339 Melhora o desempenho de consulta quando for aplicado um filtro de bitmap otimizado para o plano de consulta.
11704329 Recuperação paralela falha com um tempo limite trava de buffer em uma réplica de um grupo de disponibilidade sempre no secundário.
11701219 A linha de tendência do KPI não é atualizada quando o conjunto de dados é atualizado.
11704269 Adiciona o suporte do uso de um banco de dados do SQL Server 2017 como uma fonte de dados de um modelo de DirectQuery tabular no SSAS 2016.
11704293 Violações de acesso aleatórias ocorrem quando você executa [dbo]. [usp_CollectWhoIsActiveData] no SQL Server 2016.
11704335 Replicação de dados da Oracle para SQL falha quando você atualizar o CU7 para o SQL Server 2016 SP1.

Dentre os mais diversos bugs identificados e corrigidos destaco um bem específico relacionado a backups de bancos de dados criptografados através do recurso TDE que apresentavam um longo de restauração, sendo este o bug de número: 11565899, artigo KB: 4089099.

Vale ressaltar que após a atualização desta nova atualização cumulativa, o número do build utilizado pelo Microsoft SQL Server 2016 SP1 será alterado para compilação: 13.0.4474.0.

Para realizar o download clique na imagem abaixo:

Fontes e Direitos Autorais: Suporte da Microsoft – https://support.microsoft.com/pt-br/help/4077064.

Dica do Mês – Conhecendo a Álgebra Relacional e seus operadores


Olá, boa noite, tudo bem comunidade?

Como é bom poder curtir alguns dias de descanso que mais um feriadão, aproveitar para recarregar as baterias, renovar as ideias e se preparar para mais um mês que esta chegando, e se estamos chegando ao final de mais um mês é hora de compartilhar e postar mais um post dedicado a dica do mês. Falando nisso, a dica do mês de hoje será um pouco diferente das últimas postados aqui no meu blog.

Atendendo aos pedidos de alguns internautas que me enviaram e-mails nos últimos dias, como também, para alegrar os meus alunos, vou postar um pouco de conteúdo acadêmico, algo mais conceitual relacionado a teoria de banco de dados. Neste post vou falar um pouco sobre um dos assuntos mais importantes relacionadas a teoria geral de banco de dados, estou me referindo a Álgebra Relacional, ou como eu gosto de dizer a matemática do relacionamento de banco de dados.

Então lá nessa, espero que você goste e também aprenda um pouco sobre este conceito extremamente importante para qualquer profissional da área de banco de dados.


Introdução

A álgebra relacional é uma linguagem de consulta procedural. Ela consiste em um conjunto de operações que tornam uma ou duas tabelas como entradas e produzem uma nova tabela como resultado. Essas operações baseiam-se na teoria dos conjuntos (as tabelas correspondem a conjuntos). Linguagem procedural: linguagem que requer sempre a existência de definição quanto à ordem em que as operações serão realizadas.

 

Operadores

São definidas nove operações ou operadores para se trabalhar com álgebra relacional, eles podem ser classificados da seguinte maneira:

Fundamentais: Através dela qualquer expressão de consulta de dados é permitida:

¤ 1. Projeção

¤ 2. Seleção

¤ 3. Produto Cartesiano

¤ 4.União

¤ 5. Diferença, Subtração

Derivados: Derivam dos operadores fundamentais, são definidos para facilitar a especificação de certos procedimentos:

¤ 6. Intersecção

¤ 7. Junção (normal e natural)

¤ 8. Divisão

Especiais: Operadores que não se enquadram nos itens anteriores:

¤ 9.Renomeação e alteração

 

Quanto ao número de relações (tabelas) operandas:

¤ Unários – operam em uma única tabela .

São eles: seleção, projeção, renomeação e alteração;

¤ Binários – operam em duas tabelas.

São eles: união, intersecção, diferença, produto cartesiano, junção e divisão.

 

Quanto à origem da área da matemática:

¤ Teoria dos Conjuntos – operadores usuais da teoria de conjuntos da matemática. São eles: união, intersecção, diferença e produto cartesiano;

¤ Especiais – operadores adicionais, definidos pela álgebra relacional para manipulação de dados. São eles: seleção, projeção, junção, divisão, renomeação e alteração.

Além desses operadores, é definido também o operador de atribuição que permite atribuir o resultado de uma expressão de álgebra a uma tabela.

 

Símbolos que representam os operadores

Cada um dos noves operadores apresenta um símbolo que identifica sua função e operação dentro da expressão relacional, ou melhor dizendo dentro da fórmula que identifica e apresenta a operação relacional que esta sendo realizada, a Tabela 1 apresentada abaixo ilustra os símbolos representativos de cada operador:

Operadores

Tabela 1 – Relação de símbolos representativos de cada operador.

Vamos agora conhecer um pouco sobre cada operador, sua forma de utilização, após a apresentação de todos os operadores, disponibilizarei um código de exemplo para que você posso praticar e conhecer de maneira operacional como cada operador pode ser utilizado, vamos conhecer pelo primeiro operador conhecido como Projeção.

 

Projeção

Pode ser entendida como uma operação que filtra as colunas de uma tabela de nosso banco de dados ou uma tabela resultante de uma outra operação relacional executada. Por operar em apenas um conjunto de entrada, a projeção é classificada como uma operação unária.

Sintaxe:       coluna1, coluna2,…, colunaN (Tabela)

 

Seleção / Restrição

Pode ser entendida como a operação que filtra, seleciona as linhas de uma tabela, realizando também uma projeção, e opera em um conjunto de dados, sendo portando uma operação unária.

Sintaxe:         <condição de seleção ou predicado> (Tabela)

 

Produto Cartesiano

Utiliza a mesma notação de operação matemática de dois conjuntos, tendo como resultado do produto cartesiano de duas tabelas uma terceira tabela contendo as cominações possíveis entre os elementos das tabelas originais.

Essa tabela resultante possui um número de colunas que é igual à soma do número de colunas das tabelas iniciais e um número de linhas igual ao produto do número de linhas das duas tabelas.

Sintaxe: (Tabela 1) X (Tabela 2)

 

União

É uma operação binária, ou seja cria uma tabela a partir de duas outras tabelas união compatíveis levando as linhas comuns e não comuns a ambas. As informações duplicadas aparecerão somente uma vez no resultado. Tabelas União Compatíveis: tabelas cuja quantidade, disposição e domínio dos atributos/ campos sejam os mesmos.

Sintaxe: (Tabela 1)     (Tabela 2)

 

Intersecção

É uma operação binária, ou seja cria uma tabela a partir de duas outras tabelas levando sem repetição as linhas, que pertençam a ambas as tabelas presentes na operação.

Sintaxe: (Tabela 1)     (Tabela 2)

 

Diferença

Essa operação permite encontrarmos linhas que estão em uma tabela mas não estão em outra. A expressão Tabela 1 Tabela 2 resulta em uma tabela que contém todas as linhas que estão na tabela 1 e não estão na Tabela 2. Observamos que Tabela 1 – Tabela 2 (Exemplo1) é diferente de Tabela 2 – Tabela 1 (Exemplo2).

Sintaxe: (Tabela 1) – (Tabela 2)

 

Junção

Essa operação interage com o modelo relacional, ou seja trabalha com o modelo de relações entre tabelas realizando um produto cartesiano, combinando as linhas e somando as colunas de duas tabelas, só que partindo de campos comuns de ambas para realizar essa “seleção relacional. Essa operação possui uma condição onde se colocam os campos das tabelas que estão sendo usados para se efetivar a junção. Chamamos essa junção de junção com predicado.

(Sintaxe 1): (Junção com Predicado): (Tabela 1) |x| <condição de junção> (Tabela 2)

Outro tipo de junção é a junção natural:

Sintaxe : (Junção Natural): (Tabela 1) |x| (Tabela 2)

Nela não há especificação de condição sendo usado para isso todas as colunas comuns às duas tabelas. As colunas resultantes são a soma das colunas das duas tabelas sem a repetição das colunas idênticas (aparecerão uma vez somente). Não deve ser empregada quando se deseja associar duas tabelas apenas por um ou alguns dos seus atributos idênticos, caso isso seja feito os resultados são imprevisíveis.

 

Divisão

Essa operação produz como resultado a projeção de todos os elementos da primeira tabela que se relacionam com todos os elementos da segunda tabela. Essa operação também pode ser obtida através de outras operações de álgebra relacional.

Sintaxe: (Tabela 1) ÷ (Tabela 2)

 

Renomeação / Atribuição

Renomeação ( p ): É a operação que renomeia uma tabela.

Sintaxe: p Nome(Tabela)

Atribuição ( ß ): É utilizada para simplificar comandos muito extensos definindo então passos de comando.

Sintaxe: Variável ß Tabela


 

Colocando a mão na massa

Agora que já conhecemos um pouco sobre cada operador, suas sintaxes e formas de utilização, vamos colocar a mão na massão e utilizar nosso código de exemplo apresentado a seguir:

— Criando o Banco de Dados – AlgebraRelacional —

Create Database AlgebraRelacional

Go

 

— Acessando o Banco de Dados – AlgebraRelacional —

Use AlgebraRelacional

Go

 

— Criando a Tabela Cargos —

Create Table Cargos

(CodigoCargo Char(2) Primary Key Not Null,

DescricaoCargo Varchar(50) Not Null,

VlrSalario Numeric(6,2) Not Null)

Go

 

— Criando a Tabela Departamentos —

Create Table Departamentos

(CodigoDepartamento Char(2) Primary Key Not Null,

DescricaoDepartamento Varchar(30) Not Null,

RamalTel SmallInt Not Null)

Go

 

— Criando a Tabela Funcionarios —

Create Table Funcionarios

(NumeroRegistro Int Primary Key Not Null,

NomeFuncionario Varchar(80) Not Null,

DtAdmissao Date Default GetDate(),

Sexo Char(1) Not Null Default ‘M’,

CodigoCargo Char(2) Not Null,

CodigoDepartamento Char(2) Not Null)

Go

 

— Criando os relacionamentos —

Alter Table Funcionarios

Add Constraint [FK_Funcionarios_Cargos] Foreign Key (CodigoCargo)

References Cargos(CodigoCargo)

Go

 

Alter Table Funcionarios

Add Constraint [FK_Funcionarios_Departamentos] Foreign Key (CodigoDepartamento)

References Departamentos(CodigoDepartamento)

Go

 

— Inserindo os Dados —

Insert Into Cargos (CodigoCargo, DescricaoCargo, VlrSalario)

Values (‘C1’, ‘Aux.Vendas’, 1350.00),

(‘C2’, ‘Vigia’, 600.00),

(‘C3’, ‘Vendedor’, 1200.00),

(‘C4’, ‘Aux.Cobrança’, 1550.00),

(‘C5’, ‘Gerente’, 1200.00),

(‘C6’, ‘Diretor’, 2500.00),

(‘C7’, ‘Presidente’,5500.00)

Go

 

Insert Into Departamentos (CodigoDepartamento,DescricaoDepartamento,RamalTel)

Values (‘D1’, ‘Assist.Técnica’, 246),

(‘D2’, ‘Estoque’, 589),

(‘D3’, ‘Administração’, 772),

(‘D4’, ‘Segurança’, 810),

(‘D5’, ‘Vendas’, 512),

(‘D6’, ‘Cobrança’, 683)

Go

 

Insert Into Funcionarios (NumeroRegistro, NomeFuncionario, DtAdmissao, Sexo, CodigoCargo, CodigoDepartamento)

Values (1, ‘Cezar Sampaio’, ‘2013-08-10’, ‘M’, ‘C3’, ‘D5’),

(4, ‘Luis Alves Pereira’, ‘2014-03-02’, ‘M’, ‘C4’, ‘D6’),

(34, ‘Pedro Luiz Alves’, ‘2012-05-03’, ‘M’, ‘C5’, ‘D1’),

(21, ‘Silva Souza’, ‘2011-12-10’, ‘M’, ‘C3’, ‘D5’),

(95, ‘Eduardo Oliveira Silveira’, ‘2012-01-05’, ‘F’, ‘C1’, ‘D5’),

(39, ‘Ana Marta Silva’, ‘2013-01-12’, ‘F’, ‘C4’, ‘D6’),

(23, ‘Sergio Mota’, ‘2013-06-29’, ‘M’, ‘C7’, ‘D3’),

(48, ‘Larissa Roberto Aleluia’, ‘2012-06-01’, ‘F’, ‘C4’, ‘D6’),

(5, ‘Ricardo Martins’, ‘2013-10-15’, ‘M’, ‘C3’, ‘D5’),

(2, ‘Simone Gasparini Tune’, ‘2010-02-10’, ‘M’, ‘C2’, ‘D4’)

Go

 

— Exemplo – Operador – Projeção — Qual o nome e data de admissão dos funcionários? —

Select NomeFuncionario, DtAdmissao From Funcionarios

Go

 

— Exemplo – Operador – Seleção/Restrição — Quais os funcionários de sexo masculino? —

Select NumeroRegistro, NomeFuncionario, DtAdmissao,

Sexo, CodigoCargo, CodigoDepartamento

From Funcionarios

Where Sexo = ‘M’

Go

 

— Exemplo – Operadores – Projeção e Seleção — Quais os nomes e data de admissão dos funcionários de sexo masculino? —

Select NomeFuncionario, DtAdmissao From Funcionarios

Where Sexo = ‘M’

Go

 

— Exemplo – Operador – Produto Cartesiano – Trazer as informações dos funcionários e de seus cargos: Linhas de Funcionarios X Linhas de Cargos —

Select F.NumeroRegistro,

F.NomeFuncionario,

F.DtAdmissao,

F.Sexo,

F.CodigoCargo,

F.CodigoDepartamento

From Funcionarios F Cross Join Cargos C

Order By F.NumeroRegistro Desc

Go

 

— Exemplo – Operador – União — Combinação de Tabelas e Linhas entre selects distintos —

Select CodigoCargo, DescricaoCargo, VlrSalario

From Cargos

Where CodigoCargo In (‘C1’,‘C3’,‘C5’,‘C7’)

Union

Select CodigoCargo, DescricaoCargo, VlrSalario

From Cargos

Where CodigoCargo In (‘C2’,‘C4’,‘C6’)

Go

 

Select CodigoCargo, DescricaoCargo, VlrSalario

From Cargos

Where CodigoCargo In (‘C1’,‘C3’,‘C5’,‘C7’)

Union All

Select CodigoCargo, DescricaoCargo, VlrSalario

From Cargos

Where CodigoCargo In (‘C2’,‘C4’,‘C6’)

Union All

Select CodigoCargo, DescricaoCargo, VlrSalario

From Cargos

Where CodigoCargo In (‘C2’,‘C4’,‘C6’)

Go

 

— Exemplo – Operador – Intersecção — Combinação de Tabelas e Linhas entre selects distintos sem repetição de dados no resultado —

Select CodigoCargo, DescricaoCargo, VlrSalario

From Cargos

Where CodigoCargo In (‘C2’,‘C4’,‘C6’)

Intersect

Select CodigoCargo, DescricaoCargo, VlrSalario

From Cargos

Where CodigoCargo In (‘C2’,‘C3’,‘C6’,‘C7’)

Go

 

— Exemplo – Operador – Diferença – Linhas existentes em uma Tabela que não existem em outra —

Insert Into Cargos (CodigoCargo, DescricaoCargo, VlrSalario)

Values (‘C8’, ‘Aux.Vendas II’, 550.00)

Go

Select F.NumeroRegistro,

F.NomeFuncionario,

F.DtAdmissao,

F.Sexo,

F.CodigoCargo,

F.CodigoDepartamento

From Funcionarios F

Where Exists (Select CodigoCargo From Cargos)

Go

 

— Exemplo – Operador – Junção – Combinação de Linhas e Colunas entre tabelas que possuem algum tipo de vínculo relacional —

Select F.NumeroRegistro,

F.NomeFuncionario,

F.DtAdmissao,

F.Sexo,

F.CodigoCargo,

F.CodigoDepartamento

From Funcionarios F Inner Join Cargos C

On F.CodigoCargo = C.CodigoCargo

Order By F.NomeFuncionario, F.CodigoCargo Asc

Go

 

— Exemplo – Operador – Divisão – Relação Completa de todos os dados da Tabela da Esquerda com todos os dados da Tabela da Direita —

Create Table Projetos

(CodigoProjeto Char(8) Primary Key Not Null,

DescricaoProjeto Varchar(50) Not Null)

Go

 

Create Table Equipe

(Codigo Int Primary Key Identity(1,1) Not Null,

NumeroRegistroFuncionario Int Not Null,

CodigoProjeto Char(8) Not Null)

Go

 

— Criando os relacionamentos —

Alter Table Equipe

Add Constraint [FK_Equipe_Funcionarios] Foreign Key (NumeroRegistroFuncionario)

References Funcionarios(NumeroRegistro)

Go

 

Alter Table Equipe

Add Constraint [FK_Equipe_Projetos] Foreign Key (CodigoProjeto)

References Projetos(CodigoProjeto)

Go

 

— Inserindos os Dados —

Insert Into Projetos (CodigoProjeto, DescricaoProjeto)

Values (‘Projeto1’, ‘Suporte’),

(‘Projeto2’, ‘Manutenção’),

(‘Projeto3’, ‘Desenvolvimento’)

Go

 

Insert Into Equipe (NumeroRegistroFuncionario, CodigoProjeto)

Values (‘101’, ‘Projeto1’),

(‘104’, ‘Projeto1’),

(‘134’, ‘Projeto1’),

(‘101’, ‘Projeto2’),

(‘104’, ‘Projeto2’),

(‘101’, ‘Projeto3’)

Go

 

Select E.NumeroRegistroFuncionario,

E.CodigoProjeto,

P.DescricaoProjeto

From Equipe E Inner Join Projetos P

On E.CodigoProjeto = P.CodigoProjeto

Where E.CodigoProjeto = ‘Projeto1’

Go

 

— Exemplo – Operador – Renomeação —

sp_rename ‘Cargos’,‘NovosCargos’

Go

Select * from NovosCargos

 

— Exemplo – Operador – Atribuição —

Select F.NumeroRegistro As ‘Número de Registro’,

F.NomeFuncionario,

F.DtAdmissao As ‘Data de Admissão’,

F.Sexo,

F.CodigoCargo,

F.CodigoDepartamento,

Data=(Select GetDate()) — Atribuindo um valor para uma coluna

From Funcionarios F Inner Join NovosCargos C

On F.CodigoCargo = C.CodigoCargo

Order By F.NomeFuncionario, F.CodigoCargo Asc

Go

 

Legal, legal, você pode reparar que este código de exemplo é bastante simples e abrangente, demonstrando como podemos trabalhar com cada operador e de que forma o SQL Server se enquadra perfeitamente neste conceitos, algo muito comum para qualquer banco de dados ou sistema gerenciador de banco de dados, mas que pode variar a sua forma de análise e utilização.


Sendo assim chegamos ao final de mais uma dica do mês.

Espero que você tenha gostado, que as informações e exemplos publicados aqui possam de alguma maneira ajudar e colaborar com suas atividades diárias sejam elas: profissionais ou acadêmicas.

O conhecimento técnico é muito importante para qualquer profissional, mas o conceito é algo que sempre devemos valorizar e conhecer, a diferença entre um bom profissional e um profissional reconhecido e respeitado no mercado de trabalho é saber aliar o conhecimento teórico com o conhecimento prática, como muitos costumam dizer aliar a téoria a prática, sendo este o objetivo deste post.

Desejo um forte abraço, agradeço mais uma vez a sua visita.

Até mais.

Retrocompatibilidade no Xbox One suporta jogos com múltiplos discos


O primeiro jogo com múltiplos discos suportado pela retrocompatibilidade no Xbox One é o Deux Ex: Human Revolution Director’s Cut.

Outros jogos com múltiplos discos devem ser suportados no futuro. Os usuários podem votar em quais jogos que poderão ser adicionados futuramente através do site Xbox Feedback.

No site é possível votar em títulos como Skyrim, Tales of Vesperia, Lost Odyssey e muitos outros.

Retrocompatibilidade no Xbox One suporta jogos com múltiplos discos Retrocompatibilidade no Xbox One suporta jogos com múltiplos discos - {focus keyword}

Com a retrocompatibilidade os jogos do Xbox 360 rodarão da mesma forma no Xbox One, mas com o suporte para alguns recursos do novo console. Por exemplo, os usuários poderão capturar screenshots, fazer o streaming de gameplays e gravar suas partidas nos jogos do Xbox 360 rodando no Xbox One

Com a retrocompatibilidade no Xbox One os jogos do Xbox 360 rodarão da mesma forma, mas com o suporte para alguns recursos do novo console.

Por exemplo, os usuários poderão capturar screenshots, fazer o streaming de gameplays e gravar suas partidas nos jogos do Xbox 360 rodando no Xbox One.

A Microsoft também confirmou que todos os jogos do Xbox 360 disponibilizados futuramente como parte do programa Games with Gold já serão compatíveis com o Xbox One.

A lista mais recente com os jogos suportados por este recurso pode ser encontrada aqui e mais detalhes sobre a retrocompatibilidade estão disponíveis aqui.

Fontes e Direitos Autorias: Baboo.com – Sid Vicious @ 16 mai 2016 | 9:21 am

Short Script – Dezembro – 2015


Bom dia, Comunidade. Good Morning Everyone!!!!!

Como diria aquele apresentador “O louco meu…..”, 2015 esta chegando ao seu final parece que foi ontem que publiquei o primeiro post deste ano, realmente o tempo esta passando de forma assustadora e não estamos dando conta do quanto estamos vivendo, ou melhor sobrevivendo as loucuras do mundo.

Mantendo a escrita e tradição não poderia deixar passar a oportunidade de compartilhar com vocês os mais novos Short Scripts que adicionei a minha biblioteca de Scripts dedicados ao Microsoft SQL Server desde a versão 2000. Neste momento minha modesta biblioteca de arquivos esta composta por 1.121 scripts organizados em 66 pastas, sub-dividos em 4 categorias:

  • Comuns;
  • Básicos;
  • Intermediários; e
  • Avançados.

Pois bem, no post de hoje destaco os seguintes recursos ou funcionalidades:

  • Arquivo de ErrorLog e Logs Management;
  • Contagem de linhas existentes em tabelas;
  • CTE Recursiva;
  • Diferença entre datas desconsiderando sábado e domingo;
  • Extended Events Target;
  • Função para formatar a primeira letra de cada palavra em maiúscula;
  • Geração de combinação de letras;
  • Multiple Server in Query Windows;
  • Stored Procedure para gerar CNPJ e CPF;
  • SQLCMD Mode; e
  • Variável Table.

Fique a vontade para compartilhar, sugerir melhoras, críticas ou questionamentos sobre estes exemplos.

Segue abaixo a relação de short scripts:

1 – Exemplo – Utilizando Extended Events Target para separar e contar loings e logouts:

CREATE EVENT SESSION [CounterTest] ON SERVER

ADD EVENT sqlserver.login,

ADD EVENT sqlserver.logout(

ACTION(sqlserver.client_hostname,sqlserver.database_name,sqlserver.username))

ADD TARGET package0.event_counter

WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF)

GO
— login and logout a few times

GO

— query for data

— Query the Target

SELECT

n.value(‘@name[1]’, ‘varchar(50)’) AS Event

, n.value(‘@count[1]’, ‘int’) AS EventCounts

FROM

( SELECT

CAST(t.target_data AS XML) AS target_data

FROM

sys.dm_xe_sessions AS s

JOIN

sys.dm_xe_session_targets AS t

ON

t.event_session_address = s.address

WHERE

s.name = ‘CounterTest’

AND t.target_name = ‘event_counter’

) AS tab

CROSS APPLY target_data.nodes(‘CounterTarget/Packages/Package/Event’) AS q ( n )

GO

 

2 – Exemplo – Stored Procedure para gerar CNPJ e CPF:

CREATE PROCEDURE dbo.stpGerador_CPF_CNPJ (
@Quantidade INT = 1,
@Fl_Tipo BIT = 1
)
AS BEGIN

IF (OBJECT_ID(‘tempdb..#Tabela_Final’) IS NOT NULL) DROP TABLE #Tabela_Final
CREATE TABLE #Tabela_Final (
Nr_Documento VARCHAR(18)
)

DECLARE
@n INT,
@n1 INT,
@n2 INT,
@n3 INT,
@n4 INT,
@n5 INT,
@n6 INT,
@n7 INT,
@n8 INT,
@n9 INT,
@n10 INT,
@n11 INT,
@n12 INT,

@d1 INT,
@d2 INT

— CPF
IF (@Fl_Tipo = 0)
BEGIN

WHILE (@Quantidade > 0)
BEGIN

SET @n = 9
SET @n1 = CAST(( @n + 1 ) * RAND(CAST(NEWID() AS VARBINARY )) AS INT)
SET @n2 = CAST(( @n + 1 ) * RAND(CAST(NEWID() AS VARBINARY )) AS INT)
SET @n3 = CAST(( @n + 1 ) * RAND(CAST(NEWID() AS VARBINARY )) AS INT)
SET @n4 = CAST(( @n + 1 ) * RAND(CAST(NEWID() AS VARBINARY )) AS INT)
SET @n5 = CAST(( @n + 1 ) * RAND(CAST(NEWID() AS VARBINARY )) AS INT)
SET @n6 = CAST(( @n + 1 ) * RAND(CAST(NEWID() AS VARBINARY )) AS INT)
SET @n7 = CAST(( @n + 1 ) * RAND(CAST(NEWID() AS VARBINARY )) AS INT)
SET @n8 = CAST(( @n + 1 ) * RAND(CAST(NEWID() AS VARBINARY )) AS INT)
SET @n9 = CAST(( @n + 1 ) * RAND(CAST(NEWID() AS VARBINARY )) AS INT)
SET @d1 = @n9 * 2 + @n8 * 3 + @n7 * 4 + @n6 * 5 + @n5 * 6 + @n4 * 7 + @n3 * 8 + @n2 * 9 + @n1 * 10
SET @d1 = 11 – ( @d1 % 11 )

IF ( @d1 >= 10 )
SET @d1 = 0

SET @d2 = @d1 * 2 + @n9 * 3 + @n8 * 4 + @n7 * 5 + @n6 * 6 + @n5 * 7 + @n4 * 8 + @n3 * 9 + @n2 * 10 + @n1 * 11
SET @d2 = 11 – ( @d2 % 11 )

IF ( @d2 >= 10 )
SET @d2 = 0

INSERT INTO #Tabela_Final
SELECT CAST(@n1 AS VARCHAR) + CAST(@n2 AS VARCHAR) + CAST(@n3 AS VARCHAR) + ‘.’ + CAST(@n4 AS VARCHAR) + CAST(@n5 AS VARCHAR) + CAST(@n6 AS VARCHAR) + ‘.’ + CAST(@n7 AS VARCHAR) + CAST(@n8 AS VARCHAR) + CAST(@n9 AS VARCHAR) + ‘-‘ + CAST(@d1 AS VARCHAR) + CAST(@d2 AS VARCHAR)

SET @Quantidade = @Quantidade – 1

END

END

— CNPJ
ELSE BEGIN

WHILE (@Quantidade > 0)
BEGIN

SET @n = 9
SET @n1 = CAST(( @n + 1 ) * RAND(CAST(NEWID() AS VARBINARY )) AS INT)
SET @n2 = CAST(( @n + 1 ) * RAND(CAST(NEWID() AS VARBINARY )) AS INT)
SET @n3 = CAST(( @n + 1 ) * RAND(CAST(NEWID() AS VARBINARY )) AS INT)
SET @n4 = CAST(( @n + 1 ) * RAND(CAST(NEWID() AS VARBINARY )) AS INT)
SET @n5 = CAST(( @n + 1 ) * RAND(CAST(NEWID() AS VARBINARY )) AS INT)
SET @n6 = CAST(( @n + 1 ) * RAND(CAST(NEWID() AS VARBINARY )) AS INT)
SET @n7 = CAST(( @n + 1 ) * RAND(CAST(NEWID() AS VARBINARY )) AS INT)
SET @n8 = CAST(( @n + 1 ) * RAND(CAST(NEWID() AS VARBINARY )) AS INT)
SET @n9 = 0
SET @n10 = 0
SET @n11 = 0
SET @n12 = 1

SET @d1 = @n12 * 2 + @n11 * 3 + @n10 * 4 + @n9 * 5 + @n8 * 6 + @n7 * 7 + @n6 * 8 + @n5 * 9 + @n4 * 2 + @n3 * 3 + @n2 * 4 + @n1 * 5
SET @d1 = 11 – ( @d1 % 11 )

IF (@d1 >= 10)
SET @d1 = 0

SET @d2 = @d1 * 2 + @n12 * 3 + @n11 * 4 + @n10 * 5 + @n9 * 6 + @n8 * 7 + @n7 * 8 + @n6 * 9 + @n5 * 2 + @n4 * 3 + @n3 * 4 + @n2 * 5 + @n1 * 6
SET @d2 = 11 – ( @d2 % 11 )

IF (@d2 >= 10)
SET @d2 = 0

INSERT INTO #Tabela_Final
SELECT ” + CAST(@n1 AS VARCHAR) + CAST (@n2 AS VARCHAR) + ‘.’ + CAST (@n3 AS VARCHAR) + CAST (@n4 AS VARCHAR) + CAST (@n5 AS VARCHAR) + ‘.’ + CAST (@n6 AS VARCHAR) + CAST (@n7 AS VARCHAR) + CAST (@n8 AS VARCHAR) + ‘/’ + CAST (@n9 AS VARCHAR) + CAST (@n10 AS VARCHAR) + CAST (@n11 AS VARCHAR) + CAST (@n12 AS VARCHAR) + ‘-‘ + CAST (@d1 AS VARCHAR) + CAST (@d2 AS VARCHAR);

SET @Quantidade = @Quantidade – 1

END

END

SELECT * FROM #Tabela_Final

END

 

3 – Exemplo – Reciclando o arquivo de ErrorLog e Logs Management:

EXEC sp_cycle_errorlog
GO

 

4 – Exemplo – Função – Formatar a primeira letra de cada palavra em maiúscula:

CREATE FUNCTION dbo.udfNomeProprio (
@Nome varchar(250)
)
RETURNS varchar(250)
AS
BEGIN
DECLARE @Pos tinyint = 1
DECLARE @Ret varchar(250) = ”

WHILE (@Pos < LEN(@Nome) + 1)
BEGIN
IF @Pos = 1
BEGIN
–FORMATA 1.LETRA DA “FRASE”
SET @Ret += UPPER(SUBSTRING(@Nome, @Pos, 1))
END
ELSE IF (SUBSTRING(@Nome, (@Pos-1), 1) = ‘ ‘
AND SUBSTRING(@Nome, (@Pos+2), 1) <> ‘ ‘) AND (@Pos+1) <> LEN(@Nome)
BEGIN
–FORMATA 1.LETRA DE “CADA INTERVALO””
SET @Ret += UPPER(SUBSTRING(@Nome, @Pos, 1))
END
ELSE
BEGIN
–FORMATA CADA LETRA RESTANTE
SET @Ret += LOWER(SUBSTRING(@Nome,@Pos, 1))
END

SET @Pos += 1
END

RETURN @Ret
END
GO

SELECT dbo.udfNomeProprio(‘pedro antonio galvão junior’)
GO

 

5 – Exemplo – Utilizando Multiple Server in Query Windows using SQLCMD Mode:

— Sem o GO o SQLCMD Mode não entende o final do bloco —
:connect saom4276
select @@SERVERNAME

:connect SAOM4276\SQLEXPRESS2014
select @@SERVERNAME

— Utilizando o comando Go para encerrar o bloco —
:connect saom4276
select @@SERVERNAME
Go

:connect SAOM4276\SQLEXPRESS2014
select @@SERVERNAME
Go

 

6 – Exemplo – Gerando combinação de letras:

create table #t (string varchar (2))

declare @a1 varchar(1), @a2 varchar(1)
set @a1=’A’

while @a1 <= ‘Z’
begin
set @a2=’A’

while @a2 <= ‘Z’
begin
insert into #t select @a1 + @a2
set @a2 = char (ascii(@a2) + 1)
end

set @a1 = char (ascii(@a1) + 1)
end

select string from #t
where string like ‘_’ /*single underscore*/

Go

 

7 – Exemplo – Calculando diferença entre datas desconsiderando sábado e domingo:

declare @Data datetime set @Data = ‘2015/10/01’

–Calcula a quantidade de dias entre a data inicial e a data atual, excluindo sbados e domingos soma 1 no fim pois no conta o proprio dia

WITH AllDates AS

(   SELECT  TOP (DATEDIFF(DAY, @Data, GETDATE()))

D = DATEADD(DAY, ROW_NUMBER() OVER(ORDER BY a.Object_ID), @Data)

FROM    sys.all_objects a

CROSS JOIN sys.all_objects b

)

SELECT  WeekDays = COUNT(*) +1 –

–Clcula a quantidade de feriados entre as datas

(select count(*) from FTAFE(NOLOCK)

where convert(datetime, convert(varchar, FTAFE.DT_FERIADO), 112) between @Data and GETDATE()

and FTAFE.CD_CIDADE in(0)

and DATEPART(weekday, convert(datetime, convert(varchar, FTAFE.DT_FERIADO), 112)  ) not in(6,7))

FROM    AllDates

WHERE   DATEPART(WEEKDAY, D) NOT IN(6, 7)

Go
8 – Exemplo – Variável Table + CTE Recursiva para gerar sequência de letras:

declare @Tabela table
( COL1 INT,  COL2 VARCHAR(1));

insert into @Tabela values
(75, NULL),
(78, ‘C’),
(12, ‘B’),
(24, ‘D’)

;with CTE_Rec (COL1, COL2) as
(
select
COL1,
COL2
from @Tabela

union all

select
COL1,
case when ASCII(COL2) > 66 then CAST(CHAR(ASCII(COL2) – 1) AS VARCHAR(1))  end
from CTE_Rec as c
where
COL2 is not null
)

select
COL1,
COL2
from CTE_Rec
order by
COL1,
COL2

Go

 

9 – Exemplo – Quantidade de Linhas – Todas as Tables:

— Exemplo 1 —
SELECT t.[name], p.[rows]
FROM sys.schemas s INNER JOIN sys.tables t
ON t.[schema_id] = s.[schema_id]
INNER JOIN sys.indexes i
ON i.[object_id] = t.[object_id]
AND i.[type] IN (0,1)
INNER JOIN sys.partitions p
ON p.[object_id] = t.[object_id]
AND p.[index_id] = i.[index_id]
Go

— Exemplo 2 —
;With Contador (name, rows)
As
(
SELECT t.[name], p.[rows]
FROM sys.schemas s INNER JOIN sys.tables t
ON t.[schema_id] = s.[schema_id]
INNER JOIN sys.indexes i
ON i.[object_id] = t.[object_id]
AND i.[type] IN (0,1)
INNER JOIN sys.partitions p
ON p.[object_id] = t.[object_id]
AND p.[index_id] = i.[index_id]
)
Select name, rows,  ” as soma from Contador
Union all
Select ‘Total’ , Null, convert(varchar(10),sum(rows)) as soma from contador

Go

Caso você queria acessar os demais Short Scripts publicados em 2015, segue abaixo os links:

https://pedrogalvaojunior.wordpress.com/2015/10/21/short-scripts-outubro-2015/

https://pedrogalvaojunior.wordpress.com/2015/08/26/short-scripts-agosto-2015/

https://pedrogalvaojunior.wordpress.com/2015/06/03/short-script-junho-2015/

https://pedrogalvaojunior.wordpress.com/2015/05/04/short-script-maio-2015/

Mais uma vez obrigado por sua visita, espero que estes material posso ser útil e venha a colaborar em seu aprendizado.

Nos encontramos em breve…..

DatabaseCast – Banco de Dados na sala de aula


Boa tarde, Pessoal!!!

Gostaria de compartilhar com todos vocês mais um grande reconhecimento para minha carreira profissional e acadêmica, nos últimos dias gravei com a galera do @DatabaseCast mais um podcast dedicado a área de banco de dados.

VitrineDatabaseCast62

Neste episódio do DatabaseCast, Mauro Pichiliani (Twitter | Blog), Wagner Crivelini (@wcrivelini) e o convidado Pedro Antônio Galvão Junior (@JuniorGalvaoMVP) entram na sala de aula para por fim à bagunça. Neste episódio, você vai aprender onde e como banco de dados é ensinado dentro da sala de aula, discutir didática, observar comportamento, ser firme na disciplina, julgar o que é um professor bom ou ruim e saber como não deixar o professor com dor de cabeça.

Para acessar este e outros episódios: https://www.youtube.com/channel/UC8EUZ3gYTxJi-gr4azFJGYA