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.

Anúncios

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

Windows chega aos 30 anos: relembre a trajetória do sistema


Nesta sexta-feira, 20 de novembro de 2015, o Windows chega a uma marca histórica. São exatos trinta anos de trajetória desde o lançamento do Windows 1.0, no ano de 1985. De lá para cá, são muitas versões, algumas delas queridas pelo público, outras nem tanto.

São 30 anos de atualizações, erros, acertos, telas azuis, novas interfaces e novos métodos de interação com o computador. Nem todos caíram nas graças dos usuários, mas não dá para dizer que o Windows não tem uma história rica.

Windows 1.0

Quando estava em desenvolvimento, era chamado pelo nome pouco simpático de “Interface Manager”, ou “Gerenciador de interfaces”. Felizmente a Microsoft teve o bom-senso de rever o nome para “Windows”, por causa da interface de janelas. O sistema era basicamente uma interface gráfica, comandada pelo mouse, sobre o MS-DOS, cujas linhas de comando eram complexas demais para o público comum na época.

Ele foi anunciado em 1983, mas demorou dois anos para ser lançado. A demora fez com que muitos acreditassem que se tratasse de um “vaporware”, termo da indústria de tecnologia para designar produtos anunciados, mas que nunca são lançados.

Entre as novidades, listadas efusivamente neste vídeo por Steve Ballmer, estão recursos como calendário, calculadora, o Paint, relógio, bloco de notas, entre outros. Ele já trazia menus expansíveis, barras de rolagem, ícones, entre outras novidades que tornaram o Windows mais amigável para o usuário comum.

Windows 2.0

Lançada em 1987, a versão trazia melhorias gráficas e permitia a sobreposição de janelas. Também foi adicionada a ferramenta que possibilitava a utilização de atalhos do teclado para facilitar a vida do usuário. Ele foi inicialmente criado para processadores 286, da Intel, mas recebeu uma atualização para o 386.

Quem está acostumado a mexer nas configurações do Windows deve estar familiarizado com uma ferramenta nascida nesta época: o Painel de Controle apareceu pela primeira vez no Windows 2.0.

Windows 3.x

Com lançamento em maio de 1990, foi o primeiro Windows a avançar para a nova década, recebendo uma atualização para a versão 3.1 em 1992. Juntas, as duas versões venderam 10 milhões de cópias em dois anos. Foi o maior sucesso comercial do Windows até o momento.

Agora o Windows suportava gráficos com 16 cores e ganhou recursos para gerenciamento de programas, arquivos e impressoras. Também passou a contar com os clássicos Paciência, Copas e Campo Minado.  Para instalar, era necessária uma caixa cheia de disquetes, com manuais de instruções bem pesados. Outros tempos.

A Microsoft também lançou o Windows for Workgroups 3.11, voltado para redes corporativas, mas que esteve longe de ser um grande sucesso comercial.

Paralelamente, também foi criado o Windows NT (New Technology) 3.1, o primeiro sistema realmente 32 bits lançado pela Microsoft, que não era mais baseado no MS-DOS. O NT serviu de base também para todos os sistemas da empresa depois do Windows 2000.

Windows 95

A Microsoft começou a nomear seus sistemas com o ano de lançamento nesta versão, lançada em 24 de agosto daquele ano. Foram 7 milhões de cópias vendidas em apenas cinco semanas, com uma campanha agressiva que incluía comerciais de TV com a música dos Rolling Stones “Start Me Up”, mostrando o botão Iniciar, novidade na época.

O sistema viu o lançamento da primeira versão do Internet Explorer. Ele era adaptado para a internet de uma forma geral, com suporte a conexões discadas e o novo sistema de plug-and-play, facilitando a instalação de hardware. Além do botão Iniciar, o Windows ganhou a barra de tarefas e os botões de minimizar, maximizar e fechar, que se tornariam um padrão em breve.

Para funcionar, era recomendado um processador 486 (quem lembra?) e 8 MB de RAM. Ele foi lançado em disquetes ou em CD-ROM, em 12 línguas diferentes.

Windows 98

Lançada em 25 de junho de 1998, foi a última versão a ser baseada no MS-DOS. Ela foi feita pensando no usuário final e se propunha a evoluir o Windows 95 tanto para trabalho quanto para dviersão. Ele facilitava a conexão à internet e trouxe a possibilidade de fixar programas na barra de tarefas ao lado do menu Iniciar. O sistema também trouxe o suporte à leitura de DVDs e reconhecimento de dispositivos USB.

Windows 2000

Lançado em 17 de fevereiro de 2000, ele foi criado para substituir o Windows 95, o 98 e o NT Workstation 4.0 em todos os computadores de uso corporativo. Ele foi criado sobre o código do próprio NT Workstation 4.0.

Entre seus recursos estavam a simplificação da instalação de hardware com a ampliação do plug-and-play, suporte a redes avançadas e produtos sem fio e dispositivos USB.

Windows ME

Amplamente reconhecida como uma das maiores bombas já lançadas pela Microsoft, a “Millenium Edition” (apelidada de “Mistake Edition”, ou “edição do erro”) foi lançada em 14 de setembro de 2000. A PC World chegou a considerá-lo um dos piores produtos de tecnologia de todos os tempos, afirmando que “os usuários tinham problemas para instalá-lo, fazê-lo rodar, fazê-lo funcionar com outros hardwares e softwares e fazê-lo parar de funcionar”.

Ele foi criado para o uso doméstico e tinha o objetivo de trazer melhorias para a reprodução de mídia e a criação de redes domésticas. Ele também trouxe a restauração do sistema, que está presente até hoje nas versões recentes do Windows. Foi o último sistema da Microsoft a ser desenvolvido sobre o código do Windows 95.

Windows XP

Aposentado há pouco tempo pela Microsoft chegou ao mercado em 25 de outubro de 2001 e foi um sucesso. Até hoje é um sucesso, e muitos usuários se recusam a abandoná-lo, mesmo com o suporte encerrado.

Ele foi construído do zero depois que a Microsoft abandonou a base do Windows 95, com um visual renovado e usabilidade melhorada. Foram 45 milhões de linhas de código para criar o sistema. Para o uso doméstico, trouxe melhorias no Media Player e o Movie Maker e o suporte melhorado a fotografias digitais. Já para as empresas, trouxe sistema de criptografia de arquivos, desktop remoto. Ele também trouxe suporte a redes sem fio 802.1x, facilitando a vida de quem usava o XP em notebooks.

Para tentar cobrir o avanço das ameaças de segurança, a Microsoft começou a emitir atualizações pela internet. O XP também foi o primeiro a impor o limite de instalações do sistema operacional. Antigamente, era possível comprar apenas uma cópia e instalar por infinitos computadores, o que passou a ser inviável. Talvez por isso o XP, além de um sucesso comercial, também foi um dos softwares mais pirateados da história.

Windows Vista

Seguindo o sucesso do Windows XP, a Microsoft lançou em 2006 o Windows Vista, que também é reconhecido como um erro da empresa. O software teve problemas em sua fase de desenvolvimento. Ele deveria ter sido lançado dois ou três anos depois do XP, mas só saiu cinco anos depois. Mesmo assim, ele trouxe algumas novidades, como o Controle de Conta de Usuário, para evitar que vírus e malwares pudessem fazer alterações perigosas no computador da vítima.

O design foi uma parte importantíssima do Vista, trazendo o Aero, uma nova identidade visual que permitia que as bordas das janelas ganhassem um tipo de transparência interessante, mesmo que isso fizesse com que o software ficasse mais pesado. O botão Iniciar também foi recriado.

No lançamento, o Vista estava disponível em 35 idiomas, e 1,5 milhões de dispositivos eram compatíveis na ocasião. Contudo, falhas minaram o possível sucesso. Problemas da incompatibilidade existiram aos montes, e não faltam relatos do desastre que foi o seu desenvolvimento.

Steve Ballmer, CEO na ocasião, revela que no meio do processo de criação foi necessário resetar o código-fonte do Vista, até então conhecido como Longhorn. Este foi o maior arrependimento de sua gestão: “tentamos realizar uma tarefa grande demais e, no processo, perdemos milhares de horas de trabalho e inovação”, conta.

Windows 7

Agora, sim, a Microsoft acertou a mão. Em 2009, chegava ao mercado a versão 7 do Windows, que aproveitava o que havia de bom no Vista e melhorava o que estava de errado, tornando o sistema muito mais compatível e amigável. Antes do lançamento, ele já havia sido testado por 8 milhões de pessoas durante o período de beta.

O Windows 7 trouxe algumas mudanças de interface e novas formas de interagir com as janelas do sistema, como o Aero Shake, que permitia “chacoalhar” uma janela para isolá-la do restante e o Aero Peek, que possibilitava “espiar” uma prévia de cada uma das janelas minimizadas na barra de tarefas. Já o Aero Snap trazia algo que foi difundido no Windows 8, que é a possibilidade de fixar programas em um lado da tela, ocupando 50% do espaço.

O Windows 7 também trouxe o início do Windows Touch, permitindo usar o toque na tela para interagir com o sistema. Isso também foi aprofundado na versão seguinte do software.

Windows 8 e 8.1  

Introduzido em 2012, o sistema trouxe mudanças radicais de interface. A principal delas era a extinção do tradicional Menu Iniciar para dar lugar a uma Tela Iniciar repleta de quadrados e retângulos que representavam os aplicativos, que a Microsoft chama de “blocos dinâmicos”.

O Windows 8 também deu início à loja de aplicativos do Windows, uma tentativa da Microsoft de ter um pouco mais de controle sobre o ecossistema dos PCs. No entanto, o recurso nunca foi realmente atraente para desenvolvedores, e até hoje as opções da loja não são muitas.

O sistema, no entanto, não convenceu os usuários a migrar do Windows 7, incapaz de superar a popularidade de seu antecessor. Tanto que até agora o sistema de 2009 ainda é o mais usado no mundo.

A principal novidade do Windows 8, os blocos dinâmicos, também são um dos motivos pelo qual ele ficou para trás. Usuários e empresas alegavam que a nova usabilidade tornava o sistema pouco parecido com o que estavam acostumados, dificultando a adaptação para a novidade. Além disso, os blocos, otimizados para o toque, não eram muito bons para o uso com mouse e teclado.

A geração também trouxe o Windows RT, uma adaptação do Windows 8 para tablets que não rodavam os programas tradicionais legado do Windows, apenas os apps da Windows Store. Foi um fracasso ainda maior, e a maior parte dos parceiros abandonou o barco ainda no primeiro ano.

Windows 10

Lançado neste ano, o Windows 10 traz uma nova estratégia para a empresa: oferecer o Windows como um serviço, o que significa que ele deve ser aprimorado ao longo dos meses e anos com atualizações graduais de segurança e novos recursos.

A versão 10 do sistema ainda aposta no conceito dos blocos dinâmicos, mas desta vez eles são muito mais discretos e fazem parte de um Menu Iniciar que, ao mesmo tempo, é novo e antigo. Novo porque ele foi modificado em relação ao que vimos no 7 e também no 8, mas antigo, porque traz familiaridade com o Windows 7, solucionando o principal erro do Windows 8.

Uma novidade do Windows 10 foi a introdução do programa Windows Insider, que permite que usuários recebam frequentemente compilações de teste do Windows e testem as novidades antes de o grande público recebe-las. Assim, a Microsoft pode liberar as atualizações sem temer tantos problemas de compatibilidade, já que tudo é testado por uma base bem grande de usuário de teste antes de ser liberada para uma base ainda maior de usuários comuns.

O sistema trouxe outras novidades como a assistente Cortana e o navegador Microsoft Edge, que colocou um fim no malfadado Internet Explorer. O browser antigo ainda está presente no sistema, mas em segundo plano, apenas por razões de retrocompatibilidade.

Outra diferença grande em relação a todas as versões anteriores do Windows, é que a Microsoft permitiu que usuários do Windows 7 e 8.1 fizessem a atualização grátis para a nova plataforma, o que alavancou rapidamente a base de usuários do 10. Em 4 meses, já são mais de 100 milhões de pessoas no sistema mais recente, já se aproximando do pico de usuários do Windows 8.

Fontes e Direitos Autorais: OlharDigital – Renato Santinoem 20/11/2015 às 07h00 

Windows 1.0 completa 30 anos


Lançado pela Microsoft em 20 de novembro de 1985, o Windows 1.0 completa 30 anos nesta sexta-feira. O sistema operacional foi anunciado dois anos antes, em 10 de novembro de 1983.

Windows 1.0 completa 30 anos

Lançado pela Microsoft em 20 de novembro de 1985, o Windows 1.0 completa 30 anos nesta sexta-feira. O sistema operacional foi anunciado dois anos antes, em 10 de novembro de 1983

Windows 1.0 completa 30 anos

Ao contrário do que muitos pensam, o Windows 1.0 era apenas um ambiente gráfico 16 bits rodando em cima do DOS e não um sistema operacional completo como as versões 3.x e superiores.

Com ele, ao invés de digitar os comandos no prompt do MS-DOS, o usuário só precisava apontar e clicar com o mouse nos itens na tela, um avanço e tanto para a época.

A primeira versão do Windows nasceu de um projeto chamado ‘Interface Manager’, que foi apresentado em 1983. Com o tempo, o projeto evoluiu e foi rebatizado como Microsoft Windows.

Para usar o Windows 1.0, era preciso ter pelo menos 256 KB de memória RAM (para execução de mais de um programa), uma placa de vídeo compatível e disco rígido (ou dois drives de disquete).

A primeira versão do Windows trazia aplicativos como uma calculadora, um bloco de notas, uma versão bem primitiva do Paint, relógio, Painel de Controle e jogos como o Reversi.

A versão 1.0 era bem limitada e não era possível sobrepor as janelas abertas, o que só foi acontecer a partir da versão 2.0. Por causa desta e de outras limitações, o Windows 1.0 viu sua fatia de mercado crescer bem lentamente.

Apesar do começo difícil, hoje o Windows domina o mercado de sistemas operacionais para computadores pessoais e possui uma fatia de mercado superior a 90%.

A versão mais recente do sistema operacional da Microsoft é o Windows 10, que foi lançado em 29 de julho de 2015.

Confira abaixo algumas imagens do Windows 1.0:

windows_1.0_001
windows_1.0_002
windows_1.0_003
windows_1.0_004
windows_1.0_005
windows_1.0_006
windows_1.0_007
windows_1.0_008
windows_1.0_009
windows_1.0_010

Fontes e Direitos Autorais: Baboo.com – Sid Vicious @ 20 nov 2015 | 7:26 am

Processador Intel 4004 completa 44 anos


O dia 15 de novembro de 2015 marcou o 44º aniversário do processador Intel 4004, o primeiro lançado comercialmente pela empresa.

Processador Intel 4004 completa 44 anos

O processador foi o primeiro modelo single-chip, tinha clock de 740kHz, 4 bits e era conectado à placa-mãe através de seus 16 pinos. Além disso, o Intel 4004 era capaz e processar entre 46.300 e 92.600 instruções por segundo.

Processador Intel 4004 completa 44 anos

Processador Intel 4004

Parece muito, mas nem se compara aos processadores disponíveis hoje. Para se ter uma ideia, os processadores compatíveis com o socket LGA1155 possuem um desempenho até 350.000 vezes maior do que o 4004 e cada um de seus transistores utiliza 5.000 vezes menos energia do que os usados pelo velho chip.

O primeiro processador Intel 4004 tinha 2.300 transistores. Para efeito de comparação, um processador da linha Intel Core disponível em 2010 tinha 560 milhões de transistores.

Além disso, a largura da linha de circuito do 4004 era de 10 mícrones ou 10.000 nanômetros. Um cabelo humano tem em média m diâmetro de 100.000 nanômetros.

Confira a história do 4004 em sua página dedicada no site da Intel.

Die do processador Intel 4004

Die do processador Intel 4004

Fontes e Direitos Autorais: Baboo.com – Sid Vicious @ 16 nov 2015 | 9:03 am

Mercado corporativo responde bem à adoção do Windows 10, diz Gartner


Havia muita dúvida a respeito da adoção do Windows 10 ao mercado corporativo. Isso porque o Windows 8 e o Windows 8.1 foram rejeitados pelas empresas que preferiram permanecer com o Windows 7 em suas máquinas. No entanto, com as diversas mudanças e melhorias presentes no novo sistema operacional da Microsoft, o mercado corporativo está respondendo muito bem às expectativas.

Apesar das mudanças exigirem alterações na forma de gerir o suporte, a reação das empresas em relação ao Windows 10 superou as expectativas do Gartner. “Sabíamos que a recepção ia ser melhor que a do Windows 8”, disse Stephen Kleynhans durante o Gartner Symposium/ITExpo, nos Estados Unidos. Mesmo assim, o analista se disse “chocado” com a resposta positiva.

Essa reação, na opinião de Kleynhans, é reflexo da qualidade do sistema operacional, mas também do fato de a atualização para o Windows 10 ser praticamente inevitável. Em 2018, o Gartner prevê que cerca de 80% dos usuários empresariais estejam utilizando o Windows 10.

A mudança de sistema realça alguns aspectos importantes no planejamento dos executivos de TI. Algumas desinstalações devem ser realizadas, visto que há um prazo curto para o suporte, como é o caso do Internet Explorer para as versões 8 e 10, que termina neste ano.

É importante que as empresas estejam atentas ao fato da Microsoft optar por atualizações incrementais de quatro em quatro meses, considera o analista. Pode haver complicações, caso as empresas desconsiderem isso. Não será necessário correr imediatamente para atualizar cada posto de trabalho, mas é preciso manter as máquinas atualizadas nas últimas versões. Manter o sistema desatualizado poderá implicar em problemas de segurança críticos para ambientes corporativos.

Para Kleynhans, os executivos de TI interessados em “realmente fazer uso do Windows 10” devem repensar em seus processos. A adoção do sistema operacional é um compromisso de manter a empresa atualizada “com a mais recente versão”. Não basta apenas instalar o Windows 10 na rede empresarial. Os que querem manter a segurança e o bom desempenho do sistema “precisam de um pouco mais de trabalho”, ressalta o analista.

Fontes e Direitos Autorais: Canaltech – Redação | em 14.10.2015 às 10h15.

Microsoft alerta para o fim do suporte para versões antigas do Internet Explorer


A partir de 12 de janeiro 2016, o suporte para versões antigas do Internet Explorer será encerrado. Depois desta data, somente a versão atual do Internet Explorer disponível para um sistema operacional com suporte receberá suporte técnico e atualizações de segurança.

Fim do suporte para versões antigas do Internet Explorer

A Microsoft recomenda que os clientes que executam as versões mais antigas do Internet Explorer atualizem para a versão mais recente, ou seja, o Internet Explorer 11, no Windows 7, Windows 8.1 e Windows 10.

Microsoft alerta para o fim do suporte para versões antigas do Internet Explorer

Internet Explorer 11 x Versões antigas

O Internet Explorer 11 é uma plataforma de navegador consistente e confiável para aplicativos Web corporativos. A maioria das organizações de grande porte possui uma enorme variedade de aplicativos Web que evoluíram ao longo dos últimos 20 anos. Somente o Internet Explorer 11 oferece suporte aos requisitos de segurança, capacidade de gerenciamento, desempenho, compatibilidade com versões anteriores e padrões modernos exigidos pelos grandes portfólios de aplicativos Web.

O Internet Explorer 11 oferece a melhor compatibilidade com versões anteriores de todos os navegadores da Web. Com nove modos de documentos, o Internet Explorer 11 é o único navegador a oferecer emulação de alta fidelidade para versões mais antigas do Internet Explorer. Atualizar os aplicativos para padrões modernos ainda é a melhor estratégia a longo prazo, mas você pode usar a compatibilidade com versões anteriores para fazer a atualização para o Internet Explorer 11 com ainda mais velocidade e facilidade.

Tecnologias modernas da Web, como HTML5, CSS3 e WebGL garantem o funcionamento do Internet Explorer 11 com os sites atuais. À medida que sua empresa migra cada vez mais para aplicativos e serviços baseados na nuvem, você precisa de um navegador de categoria empresarial para ajudar a garantir a continuidade dos negócios. O Internet Explorer 11 proporciona consistência e confiabilidade em suas áreas de trabalho do Windows 7, Windows 8.1 e Windows 10.

O Internet Explorer 11 é mais seguro do que as versões anteriores. Por exemplo, a empresa de segurança independente NSS Labs descobriu em 2010 que o Internet Explorer 8 bloqueava cerca de 85% do malware de engenharia social. Recentemente, ela relatou uma taxa de bloqueio de 99% para o Internet Explorer 11. Com recursos de segurança como o SmartScreen e o Modo Protegido Avançado, o Internet Explorer 11 reduz significativamente os riscos.

O Internet Explorer 11 é rápido graças a melhorias no desempenho do JavaScript, otimização de rede e renderização de texto e JPEG com aceleração por hardware plena. Acha seus aplicativos Web no Internet Explorer 8 lentos? Dê nova vida a eles fazendo a atualização para o Internet Explorer 11, a qual proporcionará um melhor uso do seu investimento em hardware. Algumas organizações justificaram a atualização para o Internet Explorer 11 com base unicamente nos benefícios de desempenho.

O Internet Explorer 11 pode facilitar sua próxima migração para o Windows, já que o Internet Explorer 11 é a única versão do Internet Explorer que funciona tanto no Windows 10 quanto no Windows 8.1. Atualizar para o Internet Explorer 11 no Windows 7 agora pode ajudar a deslanchar a próxima geração de software, serviços e dispositivos.

Embora o Internet Explorer 11 ofereça os benefícios de desempenho mais rápido, maior segurança, melhor compatibilidade com versões anteriores, suporte a padrões modernos, atualizações de segurança e suporte técnico contínuos e migrações de Windows mais fáceis, não nos esquecemos dos custos da atualização. Investimentos como o Modo Empresarial ajudam a reduzir os custos com testes e correções de aplicativos Web.

Atualização para o Internet Explorer 11

Como usuário final, você provavelmente tem as Atualizações Automáticas ativadas e já atualizou para o Internet Explorer 11 sem precisar fazer nada. Caso ainda não tenha ativado as Atualizações Automáticas, clique no botão Procurar atualizações na seção Windows Update do Painel de Controle para começar.

Se você gerencia computadores para sua organização, há vários recursos que podem ajudar os profissionais de TI a atualizar esses computadores para o Internet Explorer 11. Saiba mais aqui.

Fontes e Direitos Autorais: Baboo.com – Sid Vicious