Uma parceria histórica envolvendo games firmada entre Microsoft e Sony


Na última quinta-feira dia 16, as empresas Microsoft e Sony anunciaram uma parceria histórica que visa oferecer o que é de mais moderno quando o assunto é experiência de usuário em plataformas de entretenimento e soluções de inteligência artificial (AI) em torno do mercado de jogos eletrônicos.

a parceria?

microsoft e sony
CEO da Sony ao lado do CEO da Microsoft

Em resumo a Sony vai começar a usar as soluções da plataforma em Nuvem da Microsoft, o Azure, para seus serviços de games e streaming, além da exploração da incorporação das ferramentas avançadas de AI da Microsoft e semicondutores nos produtos da empresa, tudo no intuito de fornecer experiências “altamente intuitivas e fáceis de usar”, isso nas palavras da própria empresa.

Sobre a parceria o presidente e CEO da Sony, Kenichiro Yoshida, disse o seguinte:

“O PlayStation surgiu através da integração de criatividade e tecnologia. Nossa missão é evoluir continuamente essa plataforma como uma que continua a oferecer as melhores e mais imersivas experiências de entretenimento, junto com um ambiente de nuvem que garante a melhor experiência possível, a qualquer hora, em qualquer lugar. Por muitos anos, a Microsoft tem sido um parceiro comercial importante para nós, embora, é claro, as duas empresas também estejam competindo em algumas áreas. Acredito que o desenvolvimento conjunto de futuras soluções em nuvem contribuirá muito para o avanço do conteúdo interativo”.

Yoshida lembrou bem que Sony e Microsoft são parceria há anos. As empresas já trabalharam juntas em vários projetos, especialmente quando o assunto são PCs com Windows, mas sempre competiram no mercado de games, então, essa é a primeira vez que elas trabalharão juntas em algo relacionados ao mercado de jogos eletrônicos.

Depois do CEO da Sony, temos a seguir algumas palavras do chefe do Xbox dentro da Microsoft, Phil Spencer, que também fez alguns comentários sobre a nova parceria.

“Empolgado com as oportunidades à frente com a @Sony para que possamos perseguir nossas ambições mútuas em jogos e encantar os jogadores ao redor do mundo”

O CEO da Microsoft não poderia ficar de fora da conversa e falou o seguinte:

“A Sony sempre foi líder em entretenimento e tecnologia, e a colaboração que anunciamos hoje se baseia nessa história de inovação”, disse Nadella. “Nossa parceria traz o poder do Azure e do Azure AI para a Sony para oferecer novas experiências de entretenimento e jogos para os clientes”, ressaltou ele.

“As duas empresas explorarão o desenvolvimento conjunto da futura solução de nuvem no Microsoft Azure para suportar seus respectivos serviços de streaming de conteúdo e jogos”, explica uma declaração da Microsoft.

Sem dúvida essa é uma reação aos mais recentes anúncios do Google, como por exemplo, da plataforma de streaming de jogo Stadia, então, Sony e Microsoft parecem não querer deixar nem uma migalha do bolo do mercado de jogos para o Google.

Com Inteligência Artificial também está no foco da parceria, a Microsoft também vai usar tecnologia Sony para aprimorar seus produtos, como por exemplo, a Microsoft pretende usar os mais avançados sensores de imagem da Sony em sintonia com a tecnologia de IA da Azure para melhorar as experiências em sua Nuvem.

E o Xbox e o Playstation nessa história?

Neste primeiro momento, não há qualquer sinal de integração entre a plataforma Xbox e a Playstation, como jogos multiplataforma ou algo do gênero, no entanto, dada a abrangência dessa nova parceria em torno de Cloud Services, nada impede que no futuro as empresas combinem de abrir uma loja única e online para permitir o acesso a jogos diversos via streaming. Não de jogos exclusivos, mas ao menos de títulos de terceiros que geralmente lançam seus produtos para ambas as plataformas.

Fontes e Direitos Autorais: theenemy e Microsoft – 16/05/2019.

Build 2019 – Os principais anúncios apresentados neste mega evento


O CEO da Microsoft, Satya Nadella, levou ao palco durante o Build 2019 à conferência da empresa um extenso discurso.

Este ano, a Microsoft apresentou aos desenvolvedores uma ampla gama de anúncios relacionados ao novo Microsoft Edge, Fluent design, e muito mais.

Top 5 announcements from Build 2019

Dentre estes diversos anúncios, alguns merecem um destaque maior, dentre eles:

O novo Microsoft Edge considerado mais privado e produtivo

Ainda relativamente cedo para abordar o desenvolvimento do novo Microsoft Edge construído como base no Chromium, mas algumas características novas já podem ser destacadas para usuários corporativos, um modo do Internet Explorer fará com que o Edge funcione com aplicativos Web herdados e sites de dentro de uma guia borda.

Esta nova versão do Microsoft Edge também terá uma nova forma de controle de como os sites podem rastreá-lo pela Web com três níveis de controles de privacidade.

 

Cortana ainda mais conversacional “falante de uma maneira mais coloquial”

Como os assistentes digitais existem atualmente, interagir com eles pode ser relativamente complicado, exigindo frases e comandos específicos para invocar uma ação, uma a uma. Microsoft está olhando para quebrar esse paradigma, integrando Cortana com nova tecnologia AI conversacional.

O resultado, segunda a Microsoft, será mais interações naturais com Cortana. O assistente digital será capaz de seguir o contexto de uma conversação ao manipular várias consultas e habilidades ao mesmo tempo, interagirando com Cortana possibilitando se sentir estivesse falando com outra pessoa.

Um novo e totalmente remodelado windows terminal “prompt-de-comando”

Windows Terminal

Na minha humilde opinião, este foi o anúncio mais sensacional, que mostra como a Microsoft esta procurando se reinventar, olhando para seu legado como fonte de inspiração para trazer novas possibilidades. Hoje a Microsoft abalou as coisas um pouco, anunciando o novo aplicativo de terminal do Windows.

Definido para lançamento em junho, o novo terminal do Windows permite que você defina temas personalizados, use guias e até mesmo usar emoji. Sim, Emoji. Se você usa o PowerShell, Windows Subsystem para Linux, ou CMD, inserindo comandos via Windows terminal deve revelar-se apenas um pouco mais divertido.

Fontes e Direitos Autorais: Dan Thorp-Lancaster – WindowsCentral.com
Leia na integra: https://www.windowscentral.com/top-5-announcements-microsoft-build-2019

MVPConf Latam 2019 – Easter Egg – 05 – Last Week…


Salve galera, boa tarde.

Conforme prometido, no período dos dias 01/04 a 10/04, vou compartilhar 04 vouchers com 50% de desconto para o MVPConf Latam 2019, caso você ainda não tenha feito a sua inscrição, faça agora mesmo.

Segue abaixo os vouchers válidos somente para hoje:

Voucher 01 – 04/04

Segue o Voucher EE493B3FE8FD4B7A814EDDE2FD954AC5 com 50% de desconto para a compra do ingresso para o MVPConf Latam 2019.

Clique Aqui

Voucher 02 – 04/04

Segue o Voucher 133FF309DF2D4DA99122D8BB5EAA950F com 50% de desconto para a compra do ingresso para o MVPConf Latam 2019.

Clique Aqui

Voucher 03 – 04/04

Segue o Voucher 46E1220149AD46FDA655DBF0E166844E com 50% de desconto para a compra do ingresso para o MVPConf Latam 2019.

Clique Aqui

Voucher 04 – 04/04

Segue o Voucher 9247D709F1EC46FD9E22D76F2CB18436 com 50% de desconto para a compra do ingresso para o MVPConf Latam 2019.

Clique Aqui

Aproveite esta oportunidade de participar do maior evento de tecnologia organizado pela comunidade MVP Brasil.

Abraços, fique ligado nos próximos dias mais vouchers serão disponibilizados.

Até mais. 

MVPConf Latam 2019 – Easter Egg – 04


Salve galera, boa tarde.

Conforme prometido, no período dos dias 01/04 a 10/04, vou compartilhar 04 vouchers com 50% de desconto para o MVPConf Latam 2019, caso você ainda não tenha feito a sua inscrição, faça agora mesmo.

Segue abaixo os vouchers válidos somente para hoje:

Voucher 01 – 04/04

Segue o Voucher 5A4DA8471BA144E68985DCE965C11839 com 50% de desconto para a compra do ingresso para o MVPConf Latam 2019.

Clique Aqui

Voucher 02 – 04/04

Segue o Voucher B8DE3A69EAC549BE98CAF41A0E2F3CD3 com 50% de desconto para a compra do ingresso para o MVPConf Latam 2019.

Clique Aqui

Voucher 03 – 04/04

Segue o Voucher 0E3E2A22A346470CA2DB079A512D5833 com 50% de desconto para a compra do ingresso para o MVPConf Latam 2019.

Clique Aqui

Voucher 04 – 04/04

Segue o Voucher 90DB4D760B534E6F97E748548985109B com 50% de desconto para a compra do ingresso para o MVPConf Latam 2019.

Clique Aqui

Aproveite esta oportunidade de participar do maior evento de tecnologia organizado pela comunidade MVP Brasil.

Abraços, fique ligado nos próximos dias mais vouchers serão disponibilizados.

Até mais. 

MVPConf Latam 2019 – Easter Egg – 03


Salve galera, boa tarde.

Conforme prometido, no período dos dias 01/04 a 10/04, vou compartilhar 04 vouchers com 50% de desconto para o MVPConf Latam 2019, caso você ainda não tenha feito a sua inscrição, faça agora mesmo.

Segue abaixo os vouchers válidos somente para hoje:

Voucher 01 – 03/04

Segue o Voucher BBDBD841372A4A71AB24FA7C2F62E4FC com 50% de desconto para a compra do ingresso para o MVPConf Latam 2019.

Clique Aqui

Voucher 02 – 03/04

Segue o Voucher 55D6595A29A3445DACB720CDB4B74A40 com 50% de desconto para a compra do ingresso para o MVPConf Latam 2019.

Clique Aqui

Voucher 03 – 03/04

Segue o Voucher 18A4EFDEA3974048A8BF703B65A9C1B3 com 50% de desconto para a compra do ingresso para o MVPConf Latam 2019.

Clique Aqui

Voucher 04 – 04/04

Segue o Voucher 4FB88484B6FA46568E2E2C6CD59C330F com 50% de desconto para a compra do ingresso para o MVPConf Latam 2019.

Clique Aqui

Aproveite esta oportunidade de participar do maior evento de tecnologia organizado pela comunidade MVP Brasil.

Abraços, fique ligado nos próximos dias mais vouchers serão disponibilizados.

Até mais. 

MVPConf Latam 2019 – Easter Egg – 02


Salve galera, boa tarde.

Conforme prometido, no período dos dias 01/04 a 10/04, vou compartilhar 04 vouchers com 50% de desconto para o MVPConf Latam 2019, caso você ainda não tenha feito a sua inscrição, faça agora mesmo.

Segue abaixo os vouchers válidos somente para hoje:

Voucher 01 – 02/04

Segue o Voucher 227D030CBC2044C58F14969CC43749B2 com 50% de desconto para a compra do ingresso para o MVPConf Latam 2019.

Clique Aqui

Voucher 02 – 02/04

Segue o Voucher B3BA7C59DE944DD9801558B667AADD75 com 50% de desconto para a compra do ingresso para o MVPConf Latam 2019.

Clique Aqui

Voucher 03 – 02/04

Segue o Voucher 44EA41AEE0C24AC1B1740BF7A351F233 com 50% de desconto para a compra do ingresso para o MVPConf Latam 2019.

Clique Aqui

Voucher 04 – 02/04

Segue o Voucher BBDBD841372A4A71AB24FA7C2F62E4FC com 50% de desconto para a compra do ingresso para o MVPConf Latam 2019.

Clique Aqui

Aproveite esta oportunidade de participar do maior evento de tecnologia organizado pela comunidade MVP Brasil.

Abraços, fique ligado nos próximos dias mais vouchers serão disponibilizados.

Até mais. 

MVPConf Latam 2019 – Easter Egg – 01


Salve galera, boa tarde.

Conforme prometido, no período dos dias 01/04 a 10/04, vou compartilhar 04 vouchers com 50% de desconto para o MVPConf Latam 2019, caso você ainda não tenha feito a sua inscrição, faça agora mesmo.

Segue abaixo os vouchers válidos somente para hoje:

Voucher 01 – 01/04

Segue o Voucher 5DFF5C3B5604477D815CC572309295EB com 50% de desconto para a compra do ingresso para o MVPConf Latam 2019.

Clique Aqui

Voucher 02 – 01/04

Segue o Voucher 38DC0E68570F4CD6B29BAEB30E518108 com 50% de desconto para a compra do ingresso para o MVPConf Latam 2019.

Clique Aqui

Voucher 03 – 01/04

Segue o Voucher 312C097D8B84473E8D551EB356CB0DB9 com 50% de desconto para a compra do ingresso para o MVPConf Latam 2019.

Clique Aqui

Voucher 04 – 01/04

Segue o Voucher A09AD7FECEF94CAF9A6D2D7294AA253B com 50% de desconto para a compra do ingresso para o MVPConf Latam 2019.

Clique Aqui

Aproveite esta oportunidade de participar do maior evento de tecnologia organizado pela comunidade MVP Brasil.

Abraços, fique ligado nos próximos dias mais vouchers serão disponibilizados.

Até mais. 

SQL Server Management Studio 18.0 Release Candidate 1 liberado


Através do anuncio realizado ontem em seu blog dedicado ao Microsoft SQL Server, o Senior Program Manager – Dinakar Nethi, realizou o anúncio oficial da disponibilidade da primeira versão release candidate do próximo Microsoft SQL Server Management Studio 2018.

O Senior Program Manager: “À medida que nos aproximamos da disponibilidade geral do SQL Server Management Studio (SSMS) 18, decidimos ter uma versão rápida da compilação Release Candidate (RC).”

Melhorias do SQL Server Management Studio

  • Habilitando a conectividade de ponto de extremidade XMLA para DataSets do Power BI: os endpoints XMLA fornecem acesso ao mecanismo do Analysis Services no serviço do Power BI. Isso permite que ferramentas como o SSMS e o SQL Profiler se conectem a conjuntos de fonte do Power BI para monitoramento, gerenciamento e depuração, etc. 
  • SQL Server Management Objects (SMO)
    – Adicionado suporte de exclusão em cascata para “Edge Constraints” no SMO e no SSMS.
    – Adicionado suporte para permissões de classificação de dados “leitura-gravação”.
  • Audit Files
    – Atualizada a lista de ações de auditoria conhecidas para FEATURE RESTRICTION ADD/CHANGE GROUP/DROP.

 

Correções de bugs NO SSMS

  • Corrigido um problema que estava impedindo a autenticação de MFA quando os IDs de usuário pertenciam a vários locatários.
  • Corrigido um problema em que o relatório do painel perf estava relatando as esperas PAGELATCH e PAGEIOLATCH que não podiam ser encontradas em sub-relatórios.
  • Corrigido um problema que resultou em uma exceção de “índice fora do intervalo” ao clicar na grade.
  • Corrigido um problema em que a cor do plano de fundo do resultado da grade estava sendo ignorada. 

Importante

  1. Como de costume, se você estiver utilizando uma versão anterior do SSMS 18.0 Preview, será necessário desinstalá-la primeiro.
  2. O SSMS 18,0 RC1 pode ser instalado lado a lado com o SSMS 17. x para fins de teste.
  3. Como lembrete, o uso do software pre-GA em ambientes de produção não é suportado.

Você pode realizar o download acessando o link: download SSMS 18.0 RC1.

Para maiores informações sobre a relação completa de correções e melhorias, acesse a Release Notes.


Fontes e Direitos  Autorais: Dinakar Nethi – Senior Program Manager, Azure Data – 28/03/2019.
Leia na integra: https://cloudblogs.microsoft.com/sqlserver/2019/03/28/sql-server-management-studio-18-0-release-candidate-1-is-now-available/

Microsoft libera nova preview do SQL Server 2019 denominada 2.4


Ontem a Microsoft através do seu time MSSQLTiger, disponibilizou a nova versão preview da próxima versão do Microsoft SQL Server 2019.

Este novo preview foi batizado de SQL Server 2019 2.4 (quinta versão), vale ressaltar que nos últimos meses a Microsoft vem trabalhando fortemente para liberação de novas versões preliminares.

Novidades

Um dos destaques desta nova versão preliminar faz referência a integração do SQL Server com o Apache Spark™ e o HDFS com o SQL Server, criando assim  uma nova plataforma de dados unificada, que possibilita um grande salto no produto relacionado com os novos padrões de dados e processamento em larga escala.

Segundo informações fornecidas pela Microsoft, o SQL Server 2019 oferece mais segurança, disponibilidade e desempenho para todas as cargas de dados, além de trazer novas ferramentas de conformidade (relacionadas a GDPR e LGPD), melhor desempenho em hardware moderno e alta disponibilidade em Windows, Linux e contêineres.

A Figura 1 abaixo ilustra a página inicial do website da Microsoft dedicado ao Microsoft SQL Server 2019:

Figura 1 – Introdução ao Microsoft SQL Server 2019.

Melhorias

Esta versão inclui melhorias de versões CTP anteriores para corrigir bugs, melhorar a segurança e otimizar o desempenho.

Além disso, os seguintes recursos são adicionados ou aprimorados para SQL Server 2019 pré-visualização CTP 2.4:

    • Cluster de grande volume de dados
      • Orientação na GPU suporte para a execução de profunda aprendizagem com TensorFlow no Spark.
      • Atualização em tempo real para Spark 2.4.
    • Mecanismo de banco de dados
      • Novo evento estendido.query_post_execution_plan_profile
      • Nova DMF retorna o equivalente o último plano de execução real conhecido para a maioria das consultas.sys.dm_exec_query_plan_stats
      • Criptografia de dados transparente (TDE) varredura – suspender e continuar.
    • SQL Server Analysis Services
      • Relacionamentos muitos-para-muitos em modelos tabulares.
      • Configurações de propriedade para a gerenciamento de recursos.

Download

Dentre as opções disponíveis, você poderá optar tanto para rodar em ambientes físicos como Windows e Linux ou virtualizados através de máquinas virtuais ou containers, conforme Figura 2 abaixo ilustra:

Figura 2 – Plataformas para download disponíveis para versão 2.3 do Microsoft SQL Server 2019.

O Microsoft Server 2019 Preview 2.4 para Windows está disponível em arquivos ISO, arquivo .cab para os seguintes idiomas:

  • Inglês;
  • Alemão;
  • Japonês;
  • Espanhol;
  • Coreano;
  • Russo;
  • Italiano;
  • Francês;
  • Chinês (simplificado);
  • Chinês (tradicional); e
  • Português (Brasil)‎.

Saiba mais sobre o SQL Server 2019

Caso você queria saber mais sobre esta nova versão do Microsoft SQL Server e seus principais recursos, selecione um dos links abaixo:

https://info.microsoft.com/ww-landing-SQLDB-Microsoft-SQL-Server-WhitePaper.html

http://download.microsoft.com/download/8/B/6/8B643729-6224-4ECC-8C50-3292B8156F0E/SQL_Server_2019_Transform-Data_into_Insights_Infographic_EN_US.pdf

http://download.microsoft.com/download/D/2/5/D2519504-0ACD-4CD7-9C34-AB85D5824F34/SQL_Server_2019_Top_10_Reasons_to_Choose_Infographic_EN_US.pdf

https://info.microsoft.com/ww-landing-intro-sql-server-2019.html

Fontes e Direitos Autorais: Microsoft.com – SQL Server BlogSQL Server Team – 27/03/2019.
Leia na integra acessando: https://docs.microsoft.com/en-us/sql/sql-server/what-s-new-in-sql-server-ver15?view=sql-server-ver15#ctp-24

Dica do Mês – Como ficar “quase louco” utilizando análise combinatória no Microsoft SQL Server


Olá, boa noite.

Estamos no mês de março, carnaval já passou, o primeiro trimestre de 2019 está acabando, e para minha alegria te encontro mais uma vez no meu blog, caso esta seja a sua primeira visita ou acesso, fico mais feliz ainda, seja muito bem-vindo.

Este é mais um post da sessão Dica do Mês, sessão dedicada a compartilhar bimestralmente dicas, novidades, curiosidades e demais assuntos, conteúdos e informações relacionadas ao Microsoft SQL Server, Banco de Dados e Tecnologias de Banco de Dados.

No post de hoje, quero compartilhar com vocês a minha mais nova “loucura” criada em meus ambientes de estudos acadêmicos para ser utilizada no Microsoft SQL Server através do uso da Análise Combinatória, isso mesmo mais uma vez a matemática esta presente em nossas vidas e desta vez foi justamente para permitir a criação de um script que permite criar todas as sequência de combinações de letras e números afim de construir um gerador de placas de carros para todos os estados brasileiros.

 

Não parece realmente coisa de louco, minha esposa disse que sim, eu também acho (kkkkk).

Pois bem, ficou curioso para saber como eu criei mais esta “loucura”? Calma, daqui a pouco eu conto mais sobre isso para você.

Sendo assim, sem mais delongas, vamos em frente, vou tentar mitigar a sua curiosidade e ao mesmo também satisfazer os meus objetivos. Seja bem-vindo ao post – Dica do Mês – Como ficar “quase louco” utilizando análise combinatória no Microsoft SQL Server.


Introdução

Muito se fala que a área de banco de dados, e posteriormente os Sistemas Gerenciadores de Bancos de Dados (SGBDs) nasceram dos métodos, técnicas e também das teorias existentes na Matemática.

A cada dia eu tenho mais certeza que esta analogia é verdadeira, e neste post, eu pretendo justamente mostrar como mais uma vez esta fantástica e grandiosa área de estudos e conhecimentos pode nos ajudar a transformar algo que parece ter um nível de raciocínio tão complexo ou talvez impossível, em algo na verdade simples, fácil e de rápida compreensão.

Para ser mais direto, estou me referindo a análise combinatória, uma das mais variadas áreas de conhecimento e aprendizado existentes na Matemática e que este mero ser humano demorou um bom tempo para conseguir entender de verdade e aplicar de forma bem racional.

ANÁLISE COMBINATÓRIA

Podemos determinar a análise combinatória como sendo um conjunto de possibilidades constituídos por elementos finitos, a mesma baseia-se em critérios que possibilitam a contagem. Realizamos o seu estudo na lógica matemática, analisando possibilidades e combinações.

Por exemplo: Descubra quantos números com 3 algarismos conseguimos formar com o conjunto numérico {1, 2, 3}, olha a teoria de conjuntos aí gente….

  • Conjunto de elementos finito: {1, 2, 3}.
  • Conjunto de possibilidades de números com 3 algarismos: {123, 132, 213, 231, 312, 321}.

A análise combinatória estuda os seguintes conteúdos:

  • Princípio fundamental da contagem;
  • Fatorial;
  • Permutação simples;
  • Permutação com repetição;
  • Arranjo simples; e
  • Combinação simples.

Não vou abortar todos estes conteúdos de estudo utilizado pela análise combinatória neste post, mas sim o que mais entendo como importante e de extrema necessidade para o cenário que estaremos utilizando a posterior, sendo estes:

  • Permutação Simples; e
  • Permutação com repetição.

Permutação simples

Na permutação os elementos que compõem o agrupamento mudam de ordem, ou seja, de posição. Determinamos a quantidade possível de permutação dos elementos de um conjunto, com a seguinte expressão:

Pn = n!
Pn = n . (n-1) . (n-2) . (n-3)…..1!

Exemplo: Em uma eleição para representante de sala de aula, 3 alunos candidataram-se: Fernanda, Eduardo e Malú. Quais são os possíveis resultados dessa eleição?

  • Fernanda (F);
  • Eduardo (E); e
  • Malú (M).

Os possíveis resultados dessa eleição podem ser dados com uma permutação simples, acompanhe:

n = 3 (Quantidade de candidatos concorrendo a representante)

Pn = n!

Pn = 3 . 2 . 1!
Pn = 6

Para a eleição de representante, temos 6 possibilidades de resultado, em relação a posição dos candidatos, ou seja, 1º, 2º e 3º lugar.

Veja a seguir os possíveis resultados dessa eleição:

Resultado 1

Resultado 2 Resultado 3 Resultado 4 Resultado 5 Resultado 6
FEM FME EFM EMF MEF

MFE

 

Permutação com repetição

Nessa permutação alguns elementos que compõem o evento experimental são repetidos, quando isso ocorrer devemos aplicar a seguinte fórmula:

Pn(n1,n2,n3…nk)=n!n1!⋅n2!⋅n3!…nk!

  • Pn(n1,n2,n3…nk) = permutação com repetição
  • n! = total de elemetos do evento
  • n1!⋅n2!⋅n3!…nk! = Elementos repetidos do evento

Exemplo: Quantos anagramas são possíveis formar com a palavra CASA. A palavra CASA possui:
4 letras (n) e duas vogais que se repetem (n1).

  • n! = 4!
  • n1! = 2!

Pn(n1)=n!n1!

Pn(n1)=4!2!

Pn(n1)=4⋅3⋅2⋅1!2⋅1!

Pn(n1)=242=12

Anagramas da palavra CASA sem repetição

CASA

ACSA ASCA ASAC SCAA

CSAA

AASC AACS CAAS SAAC SACA

ACAS

Bom, agora que conhecemos um pouco destes conceitos, você pode estar se perguntando:

“O que o Microsoft SQL Server tem haver com isso?”.

Então, tudo, pois ele faz justamente uso destes elementos e dos demais quando queremos realizar as combinações das mais variadas possíveis que envolvem letras, letras e números, ou somente números.

E aí, até aqui tudo tranquilo? Espero que sim, pois daqui em diante começaremos a preparar nosso ambiente e aplicaremos a análise combinatória e as permutações para colocarmos em funcionamento a minha “loucura”.

Para você ter a ideia do nível de loucura que estaremos trabalhando, ao realizar o uso das vinte e seis letras do alfabeto em nosso idioma da língua portuguesa teremos basicamente a seguinte permutação com repetição:

  • n! = 3!
  • n1! = 26!

Ou seja, de forma mais simples, vamos permutar: 26 letras * 26 letras * 26 letras, o que não apresentara um total de: 17.756 (Dezessete Mil, Setecentos e Cinquenta e Seis) combinações de letras distintas.

Mas não terminamos isso nossa caminhada, depois de realizar estas combinações de letras (17.756), vamos fazer uso dos arranjos (este conteúdo eu não abordei), que nos permitirá criar em tempo real todos os agrupamentos entre letras e números (de 0 até 9999), estabelecendo a seguinte fórmula:

Arranjos = LetrasCombinadas(17756) * Numeracao(0…9999) = 177.542.244

os anagramas que vimos apouco, como por exemplo: AAA-0001, o qual vai nos permitir obter um total de: 177.542.244 (Cento e Setenta e Sete Milhões, Quinhentos e Quarente e Dois Mil, Duzentas e Quarenta e Quatro) agrupamentos ou arranjos únicos e distintos que teremos a disposição para serem armazenados.

Não é algo de louco mesmo?

NOSSO AMBIENTE

Como de costume vamos utilizar um ambiente isolado dos demais bancos de dados que você possa conter, desta maneira nosso cenário será constituído dos seguintes elementos:

  • Banco de Dados: GeradorDePlacas;
  • Tabelas: LetrasCombinadas, Numeracao, Placas e FaixasDePlacasPorEstado;
  • CTEs: CTEMeuAlfabeto; e
  • Stored Procedure: P_PesquisarPlacas.

Criando o ambiente

Através do Bloco de Código 1 apresentado abaixo, vamos realizar a criação dos respectivos elementos destacados anteriormente:

 

— Bloco de Código 1 —

 

— Criando o Banco de Dados —

Create Database GeradorDePlacas

Go

 

— Acessando o Banco de Dados —

Use GeradorDePlacas

Go

 

— Desativando a contagem de linhas —

Set NoCount On

Go

 

— Criando a Tabela LetrasCombinadas para armazenar todas as combinações de Letras —

Create Table LetrasCombinadas

(CodigoSequencialLetrasCombinadas SmallInt Primary Key Identity(1,1) Not Null,

SequencialDeLetrasCombinadas Char(3) Not Null)

Go

 

— Criando a Tabela Numeracao para armazenar a faixa numérica de 1 até 9999 —

Create Table Numeracao

(CodigoNumeracao SmallInt Primary Key Identity(1,1) Not Null)

Go

 

— Criando a Tabela Placas para armazenar o CodigoSequencialLetrasCombinadas e o número da Placa —

Create Table Placas

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

CodigoSequencialLetrasCombinadas SmallInt Not Null,

CodigoSequencialNumeroPlacas SmallInt Not Null)

Go

 

— Criando a Tabela FaixasDeFaixasDePlacasPorEstado para armazenar as faixas de placas por Estado —

Create Table FaixasDePlacasPorEstado

(CodigoSequencialFaixasDePlacasPoEstado TinyInt Primary Key Identity(1,1) Not Null,

CodigoSequencialFaixasDeLetrasNumerosInicial Char(7) Not Null,

CodigoSequencialFaixasDeLetrasNumerosFinal Char(7) Not Null,

FaixasDePlacasPorEstadoNomeDoEstado Varchar(30) Not Null)

Go

 

— Inserindo a distribuição de Faixas de Placas Por Estado —

Insert Into FaixasDePlacasPorEstado Values (‘AAA0001′,’BEZ9999′,’Paraná’)

Insert Into FaixasDePlacasPorEstado Values (‘BFA0001′,’GKI9999′,’São Paulo’)

Insert Into FaixasDePlacasPorEstado Values (‘GKJ0001′,’HOK9999′,’Minas Gerais’)

Insert Into FaixasDePlacasPorEstado Values (‘HOL0001′,’HQE9999′,’Maranhão’)

Insert Into FaixasDePlacasPorEstado Values (‘HQF0001′,’HTW9999′,’Mato Grosso do Sul’)

Insert Into FaixasDePlacasPorEstado Values (‘HTX0001′,’HZA9999′,’Ceará’)

Insert Into FaixasDePlacasPorEstado Values (‘HZB0001′,’IAP9999′,’Sergipe’)

Insert Into FaixasDePlacasPorEstado Values (‘IAQ0001′,’JDO9999′,’Rio Grande do Sul’)

Insert Into FaixasDePlacasPorEstado Values (‘JDP0001′,’JKR9999′,’Distrito Federal’)

Insert Into FaixasDePlacasPorEstado Values (‘JKS0001′,’JSZ9999′,’Bahia’)

Insert Into FaixasDePlacasPorEstado Values (‘JTA0001′,’JWE9999′,’Pará’)

Insert Into FaixasDePlacasPorEstado Values (‘JWF0001′,’JXY9999′,’Amazonas’)

Insert Into FaixasDePlacasPorEstado Values (‘JXZ0001′,’KAU9999′,’Mato Grosso’)

Insert Into FaixasDePlacasPorEstado Values (‘KAV0001′,’KFC9999′,’Goiás’)

Insert Into FaixasDePlacasPorEstado Values (‘KFD0001′,’KME9999′,’Pernambuco’)

Insert Into FaixasDePlacasPorEstado Values (‘KMF0001′,’LVE9999′,’Rio de Janeiro’)

Insert Into FaixasDePlacasPorEstado Values (‘LVF0001′,’LWQ9999′,’Piauí’)

Insert Into FaixasDePlacasPorEstado Values (‘LWR0001′,’MMM9999′,’Santa Catarina’)

Insert Into FaixasDePlacasPorEstado Values (‘MMN0001′,’MOW9999′,’Paraíba’)

Insert Into FaixasDePlacasPorEstado Values (‘MOX0001′,’MTZ9999′,’Espírito Santo’)

Insert Into FaixasDePlacasPorEstado Values (‘MUA0001′,’MVK9999′,’Alagoas’)

Insert Into FaixasDePlacasPorEstado Values (‘MVL0001′,’MXG9999′,’Tocantins’)

Insert Into FaixasDePlacasPorEstado Values (‘MXH0001′,’MZM9999′,’Rio Grande do Norte’)

Insert Into FaixasDePlacasPorEstado Values (‘MZN0001′,’NAG9999′,’Acre’)

Insert Into FaixasDePlacasPorEstado Values (‘NAH0001′,’NBA9999′,’Roraima’)

Insert Into FaixasDePlacasPorEstado Values (‘NBB0001′,’NEH9999′,’Rondônia’)

Insert Into FaixasDePlacasPorEstado Values (‘NEI0001′,’NFB9999′,’Amapá’)

Insert Into FaixasDePlacasPorEstado Values (‘NFC0001′,’NGZ9999′,’Goiás’)

Insert Into FaixasDePlacasPorEstado Values (‘NHA0001′,’NHT9999′,’Maranhão’)

Insert Into FaixasDePlacasPorEstado Values (‘NHU0001′,’NIX9999′,’Piauí’)

Insert Into FaixasDePlacasPorEstado Values (‘NIY0001′,’NJW9999′,’Mato Grosso’)

Insert Into FaixasDePlacasPorEstado Values (‘NJX0001′,’NLU9999′,’Goiás’)

Insert Into FaixasDePlacasPorEstado Values (‘NLV0001′,’NMO9999′,’Alagoas’)

Insert Into FaixasDePlacasPorEstado Values (‘NMP0001′,’NNI9999′,’Maranhão’)

Insert Into FaixasDePlacasPorEstado Values (‘NNJ0001′,’NOH9999′,’Rio Grande do Norte’)

Insert Into FaixasDePlacasPorEstado Values (‘NOI0001′,’NPB9999′,’Amazonas’)

Insert Into FaixasDePlacasPorEstado Values (‘NPC0001′,’NPQ9999′,’Mato Grosso’)

Insert Into FaixasDePlacasPorEstado Values (‘NPR0001′,’NQK9999′,’Paraíba’)

Insert Into FaixasDePlacasPorEstado Values (‘NQL0001′,’NRE9999′,’Ceará’)

Insert Into FaixasDePlacasPorEstado Values (‘NRF0001′,’NSD9999′,’Mato Grosso do Sul’)

Insert Into FaixasDePlacasPorEstado Values (‘NSE0001′,’NTC9999′,’Pará’)

Insert Into FaixasDePlacasPorEstado Values (‘NTD0001′,’NTW9999′,’Bahia’)

Insert Into FaixasDePlacasPorEstado Values (‘NTX0001′,’NUG9999′,’Mato Grosso’)

Insert Into FaixasDePlacasPorEstado Values (‘NUH0001′,’NUL9999′,’Roraima’)

Insert Into FaixasDePlacasPorEstado Values (‘NUM0001′,’NVF9999′,’Ceará’)

Insert Into FaixasDePlacasPorEstado Values (‘NVG0001′,’NVN9999′,’Sergipe’)

Insert Into FaixasDePlacasPorEstado Values (‘NVO0001′,’NWR9999′,’Goiás’)

Insert Into FaixasDePlacasPorEstado Values (‘NWS0001′,’NXQ9999′,’Maranhão’)

Insert Into FaixasDePlacasPorEstado Values (‘NXR0001′,’NXT9999′,’Acre’)

Insert Into FaixasDePlacasPorEstado Values (‘NXU0001′,’NXW9999′,’Pernambuco’)

Insert Into FaixasDePlacasPorEstado Values (‘NXX0001′,’NYG9999′,’Minas Gerais’)

Insert Into FaixasDePlacasPorEstado Values (‘NYH0001′,’NZZ9999′,’Bahia’)

Insert Into FaixasDePlacasPorEstado Values (‘OAA0001′,’OAO9999′,’Amazonas’)

Insert Into FaixasDePlacasPorEstado Values (‘OAP0001′,’OBS9999′,’Mato Grosso’)

Insert Into FaixasDePlacasPorEstado Values (‘OBT0001′,’OCA9999′,’Pará’)

Insert Into FaixasDePlacasPorEstado Values (‘OCB0001′,’OCU9999′,’Ceará’)

Insert Into FaixasDePlacasPorEstado Values (‘OCV0001′,’ODT9999′,’Espírito Santo’)

Insert Into FaixasDePlacasPorEstado Values (‘ODU0001′,’OEI9999′,’Piauí’)

Insert Into FaixasDePlacasPorEstado Values (‘OEJ0001′,’OES9999′,’Sergipe’)

Insert Into FaixasDePlacasPorEstado Values (‘OET0001′,’OFH9999′,’Paraíba’)

Insert Into FaixasDePlacasPorEstado Values (‘OFI0001′,’OFW9999′,’Pará’)

Insert Into FaixasDePlacasPorEstado Values (‘OFX0001′,’OGG9999′,’Paraíba’)

Insert Into FaixasDePlacasPorEstado Values (‘OGH0001′,’OHA9999′,’Goiás’)

Insert Into FaixasDePlacasPorEstado Values (‘OHB0001′,’OHK9999′,’Alagoas’)

Insert Into FaixasDePlacasPorEstado Values (‘OHL0001′,’OHW9999′,’Rondônia’)

Insert Into FaixasDePlacasPorEstado Values (‘OHX0001′,’OIQ9999′,’Ceará’)

Insert Into FaixasDePlacasPorEstado Values (‘OIR0001′,’OJK9999′,’Maranhão’)

Insert Into FaixasDePlacasPorEstado Values (‘OJR0001′,’OKC9999′,’Rio Grande do Norte’)

Insert Into FaixasDePlacasPorEstado Values (‘OKI0001′,’OLG9999′,’Bahia’)

Insert Into FaixasDePlacasPorEstado Values (‘OLH0001′,’OLN9999′,’Tocantins’)

Insert Into FaixasDePlacasPorEstado Values (‘OLO0001′,’OMH9999′,’Minas Gerais’)

Insert Into FaixasDePlacasPorEstado Values (‘OMI0001′,’OOF9999′,’Goiás’)

Insert Into FaixasDePlacasPorEstado Values (‘OOG0001′,’OOU9999′,’Mato Grosso do Sul’)

Insert Into FaixasDePlacasPorEstado Values (‘OOV0001′,’ORC9999′,’Minas Gerais’)

Insert Into FaixasDePlacasPorEstado Values (‘ORD0001′,’ORM9999′,’Alagoas’)

Insert Into FaixasDePlacasPorEstado Values (‘ORN0001′,’OSV9999′,’Ceará’)

Insert Into FaixasDePlacasPorEstado Values (‘OSW0001′,’OTZ9999′,’Pará’)

Insert Into FaixasDePlacasPorEstado Values (‘OUA0001′,’OUE9999′,’Piauí’)

Insert Into FaixasDePlacasPorEstado Values (‘OUF0001′,’OVD9999′,’Bahia’)

Insert Into FaixasDePlacasPorEstado Values (‘OVE0001′,’OWC9999′,’Espírito Santo’)

Insert Into FaixasDePlacasPorEstado Values (‘OWD0001′,’OYG9999′,’Santa Catarina’)

Insert Into FaixasDePlacasPorEstado Values (‘PEE0001′,’PFQ9999′,’Pernambuco’)

Insert Into FaixasDePlacasPorEstado Values (‘PFR0001′,’PGK9999′,’Pernambuco’)

Insert Into FaixasDePlacasPorEstado Values (‘PGL0001′,’PHE9999′,’Pernambuco’)

Insert Into FaixasDePlacasPorEstado Values (‘SAV0001′,’SAV9999′,’São Paulo’)

Go

 

— Validando os dados inseridos na Tabela FaixasDePlacasPorEstado —

Select * From FaixasDePlacasPorEstado
Go

 

— Inserindo 9999 linhas de registros lógicos na Tabela Numeracao —

Insert Into Numeracao Default Values

Go 9999

 

— Validando os dados inseridos na Tabela Numeracao —

Select * From Numeracao

Go

Muito bem, agora que temos nossa estrutura quase toda montada, vamos avançar mais um pouco e fazer uso da análise combinatória, conforme o Bloco de Código 2 declarado abaixo:

 

— Bloco de Código 2 —

 

— Montando a CTE Recursiva para Gerar todas as combinações de Letras —

;With CTEMeuAlfabeto

As

(Select * From (Values (‘A’),(‘B’),(‘C’),(‘D’),(‘E’),(‘F’),(‘G’),(‘H’),(‘I’),(‘J’),(‘K’),

(‘L’),(‘M’),(‘N’),(‘O’),(‘P’),(‘Q’),(‘R’),(‘S’),(‘T’),(‘U’),(‘V’),

(‘W’),(‘X’),(‘Y’),(‘Z’)) As Alfabeto (LetrasDoAlfabeto)

)

— Inserindo as combinações de letras na Tabela LetrasCombinadas —

Insert Into LetrasCombinadas

Select Distinct Concat(A1.LetrasDoAlfabeto, A2.LetrasDoAlfabeto, A3.LetrasDoAlfabeto) As ConcatenacaoLetrasCombinadas

From CTEMeuAlfabeto A1

Cross Join CTEMeuAlfabeto A2 — Aqui que a mágia acontece —

Cross Join CTEMeuAlfabeto A3 — O cross join vai cruzar e combinar todas as letras —

Order By ConcatenacaoLetrasCombinadas Asc

Go

 

— Validando os dados inseridos na Tabela LetrasCombinadas —

Select * From LetrasCombinadas

Go

Nosso Bloco de Código 2 já deve ter sido processado, pois ele é especificamente o centro das atenções para conseguirmos criar todas as combinações possíveis de letras do nosso alfabeto, que estará criando em poucos segundos um total de: 17.756 (Dezessete Mil, Setecentos e Cinquenta e Seis) combinações de letras distintas.

Ufa, estamos avançando, você vai poder notar neste post, que estou fazendo uso de diversos comandos e técnicas existentes no SQL Server desde as primeiras versões como também outros implementados nas versões mais atuais, dentre eles destaco o uso de Tabela Derivada conforme o comando Select From (Values()) existente desde a versão 2000, e também da CTE – Common Table Expression adicionado ao Microsoft SQL Server a partir da versão 2005.

Vamos avançar mais ainda, pois o objetivo deste post não é mostrar somente o uso da análise combinatória, ao contrário, o estudo aqui criado, me permitiu elaborar alguns cenários que me permitiram adotar formas e técnicas diferentes de realizar todas as combinações entre letras e números afim de processar, criar e armazenar todas as placas criadas justamente na tabela denominada placas.

Destaco que foram criados 3 (três) cenários de estudo de acordo com percepções e análises que realizei, fazendo uso de recursos e técnicas distintas visando identificar o que poderia ser melhor utilizada:

  • Cenário 1 – Inserindo dados na Tabela de Placas através de Loop Condicional;
  • Cenário 2 – Inserindo dados na Tabela de Placas através de CTE Recursiva com Junção Cruzada; e
  • Cenário 3 – Inserindo dados na Tabela de Placas através de Junção Cruzada.

Nota: Tenho a certeza que você vai poder criar outros cenários e novas análises, como também, utilizar os mais variados recursos e funcionalidades existentes no Microsoft SQL Server, reforço mais uma vez que estes cenários são meras amostras de estudo e comparações do meu entendimento.

O objetivo de ter criado estes cenários, possibilitou realizarmos comparações de tempo de processamento no que relaciona ao uso da CPU e consumo de memória RAM para cada um dos cenários.

A Tabela 1 declarada abaixo apresenta um resumo dos valores obtidos durante 5 rodadas de processamento executadas em meu ambiente:

Cenário

Média de Uso de CPU Média do Uso de Memória em GBs Média de Uso de Disco Rígido Tempo Mínimo de processamento

Tempo Máximo de processamento

01 57% 3.5 Gbs 65% 19 Hrs e 23 segundos 21Hrs e 18 segundos
02 34% 2.8 Gbs 42% 33 minutos e 6 segundos 42 minutos e 27 segundos
03 18% 2.0 Gbs 24% 6 minutos e 13 segundos 10 minutos e 25 segundos

Tabela 1 – Resumo comparativo do uso de CPU, Memória e Disco, em conjunto com os tempos de processamento demandados para cada cenário.

Show, agora que temos este pequeno resumo dos tempos de processamento e uso dos principais recursos de hardware, já podemos conhecer cada um dos cenários elaborados abaixo, conforme apresenta o Bloco de Código 3 a seguir:

— Bloco de Código 3 —

 

— Cenário 1 –

 

— Inserindo dados na Tabela de Placas através de Loop Condicional – 19Hrs e 33s de processamento —

 

— Limpando a Tabela de Placas —

Truncate Table Placas

Go

 

— Declarando as variáveis de controle —

Declare @ContadorSequencialTotalPlacasInseridas Int = 1,

@ContadorSequencialParcialPlacasInseridas Int = 1,

@CodigoSequencialLetrasCombinadas Int = 1

 

— Abrindo o Loop de Inserção —

While @ContadorSequencialTotalPlacasInseridas <=(Select Max(CodigoSequencialLetrasCombinadas) From LetrasCombinadas)

Begin

 

Set @CodigoSequencialLetrasCombinadas=(Select CodigoSequencialLetrasCombinadas From LetrasCombinadas

Where CodigoSequencialLetrasCombinadas = @ContadorSequencialTotalPlacasInseridas)

 

While @ContadorSequencialParcialPlacasInseridas <=9999 — Contador a cada 9999 incrementa a variável @ContadorSequencialTotalPlacasInseridas

Begin

Insert Into Placas (CodigoSequencialLetrasCombinadas, CodigoSequencialNumeroPlacas)

Values (@CodigoSequencialLetrasCombinadas, @ContadorSequencialParcialPlacasInseridas)

Set @ContadorSequencialParcialPlacasInseridas         +=1

End

 

Set @ContadorSequencialParcialPlacasInseridas = 1

Set @CodigoSequencialLetrasCombinadas +=1

Set @ContadorSequencialTotalPlacasInseridas +=1

 

End

 

— Cenário 2 –

 

— Inserindo dados na Tabela de Placas através de CTE Recursiva com Junção Cruzada — 33 minutos e 40s de processamento —

 

— Limpando a Tabela de Placas —

Truncate Table Placas

Go

 

— Declarando as variáveis de controle —

Declare @ContadorSequencialTotalPlacasInseridas Int = 1,

@CodigoSequencialLetrasCombinadas SmallInt = 1

 

While @ContadorSequencialTotalPlacasInseridas <=(Select Max(CodigoSequencialLetrasCombinadas) From LetrasCombinadas)

Begin

 

— Realizando a Junção Cruzada entre as Tabelas LetrasCombinadas x CTENumeracao —

;With CTENumeracao

As

(Select 1 As Numero

Union All

Select Numero + 1 From CTENumeracao

Where Numero <=9998

)

Insert Into Placas (CodigoSequencialLetrasCombinadas, CodigoSequencialNumeroPlacas)

Select LC.CodigoSequencialLetrasCombinadas, N.Numero

From LetrasCombinadas LC Cross Join — Aqui acontece a mágia

CTENumeracao N — Cross Joi vai combinar todas as Letras com 9999 números —

Where CodigoSequencialLetrasCombinadas = @CodigoSequencialLetrasCombinadas

Option (MaxRecursion 0)

 

Set @CodigoSequencialLetrasCombinadas +=1

Set @ContadorSequencialTotalPlacasInseridas +=1

End

Go

 

— Cenário 3 –

 

— Inserindo dados na Tabela de Placas através de Junção Cruzada – 10 minutos e 27s de processamento —

 

— Limpando a Tabela de Placas —

Truncate Table Placas

Go

 

— Declarando as variáveis de controle —

Declare @ContadorSequencialTotalPlacasInseridas Int = 1,

@CodigoSequencialLetrasCombinadas SmallInt = 1

 

While @ContadorSequencialTotalPlacasInseridas <=(Select Max(CodigoSequencialLetrasCombinadas) From LetrasCombinadas)

Begin

 

— Realizando a Junção Cruzada entre as Tabelas LetrasCombinadas x Numeracao —

Insert Into Placas (CodigoSequencialLetrasCombinadas, CodigoSequencialNumeroPlacas)

Select LC.CodigoSequencialLetrasCombinadas, N.CodigoNumeracao

From LetrasCombinadas LC Cross Join — Aqui acontece a mágia

Numeracao N — Cross Joi vai combinar todas as Letras com 9999 números —

Where CodigoSequencialLetrasCombinadas = @CodigoSequencialLetrasCombinadas

 

Set @CodigoSequencialLetrasCombinadas +=1

Set @ContadorSequencialTotalPlacasInseridas +=1

End

Go

 

Show, show, e show, nossos três cenários de estudo e testes já estão apresentados, basta você escolher qual deseja brincar, executar, encontrar as melhorias e possíveis falhas que podem existir.

Pra finalizar nossa longa caminhada, apresento o Bloco de Código 4, o qual vai ilustrar como podemos consultar nossas tabelas e obter os dados já inseridos após o processamento de um dos cenários, e por fim o Bloco de Código 5 que apresenta o código utilizado no Bloco de Código 4 transformado em uma Stored Procedure denominada: P_PesquisarPlacas.

— Bloco de Código 4 —

— Apresentando as 100 primeiras Placas Geradas —

Select Top 100 Concat(LC.SequencialDeLetrasCombinadas,’-‘,

Convert(Char(4),Case

When P.CodigoSequencialNumeroPlacas BetWeen 1 And 9 Then Concat(‘000’,P.CodigoSequencialNumeroPlacas)

When P.CodigoSequencialNumeroPlacas BetWeen 10 And 99 Then Concat(’00’,P.CodigoSequencialNumeroPlacas)

When P.CodigoSequencialNumeroPlacas BetWeen 100 And 999 Then Concat(‘0’,P.CodigoSequencialNumeroPlacas)

When P.CodigoSequencialNumeroPlacas BetWeen 1000 And 9999 Then Convert(Char(4),P.CodigoSequencialNumeroPlacas)

End)) As ‘Placa’,

IsNull(F.FaixasDePlacasPorEstadoNomeDoEstado,’Sequência não atribuída…’) As ‘Nome do Estado’

From LetrasCombinadas LC Inner Join Placas P

On LC.CodigoSequencialLetrasCombinadas = P.CodigoSequencialLetrasCombinadas

Left Join FaixasDePlacasPorEstado F

On LC.SequencialDeLetrasCombinadas Between SubString(F.CodigoSequencialFaixasDeLetrasNumerosInicial,1,3)

And SubString(F.CodigoSequencialFaixasDeLetrasNumerosFinal,1,3)

Go

A Figura 1 apresentada abaixo, ilustra o possível resultado obtido após a execução do Bloco de Código 4:

Figura 1 – Relação das 100 primeiras placas de carros criadas e inseridas na tabela Placas.

— Bloco de Código 5 —

 

— Criando uma Stored Procedure para pesquisa de placas —

Create or Alter Procedure P_PesquisarPlacas @LetrasCombinadas Char(3), @SequenciaNumerica SmallInt = Null

As

Begin

 

Set NoCount On

 

Select Concat(LC.SequencialDeLetrasCombinadas,’-‘,

Convert(Char(4),Case

When P.CodigoSequencialNumeroPlacas BetWeen 1 And 9 Then Concat(‘000′,P.CodigoSequencialNumeroPlacas)

When P.CodigoSequencialNumeroPlacas BetWeen 10 And 99 Then Concat(’00’,P.CodigoSequencialNumeroPlacas)

When P.CodigoSequencialNumeroPlacas BetWeen 100 And 999 Then Concat(‘0’,P.CodigoSequencialNumeroPlacas)

When P.CodigoSequencialNumeroPlacas BetWeen 1000 And 9999 Then Convert(Char(4),P.CodigoSequencialNumeroPlacas)

End)) As ‘Placa’,

IsNull(F.FaixasDePlacasPorEstadoNomeDoEstado,’Sequência não atribuída…’) As ‘Nome do Estado’

From LetrasCombinadas LC Inner Join Placas P

On LC.CodigoSequencialLetrasCombinadas = P.CodigoSequencialLetrasCombinadas

Left Join FaixasDePlacasPorEstado F

On LC.SequencialDeLetrasCombinadas Between SubString(F.CodigoSequencialFaixasDeLetrasNumerosInicial,1,3)

And SubString(F.CodigoSequencialFaixasDeLetrasNumerosFinal,1,3)

Where LC.SequencialDeLetrasCombinadas = @LetrasCombinadas

And P.CodigoSequencialNumeroPlacas = @SequenciaNumerica

End

Após a Stored Procedure estar criada, basta realizar sua execução conforme o exemplo apresentado abaixo, passando a sequência de letras e números que você deseja consultar.

Importante: Destaco que algumas combinações de placas de carro ainda não estão sendo utilizadas em nosso território, dentre elas as que começam com as letras: W, X, Y e Z.

 

— Executando a Stored Procedure P_PesquisarPlacas —

Exec P_PesquisarPlacas ‘FBD’,3127

Go

Sensacional, chegamos ao final, missão cumprida e entregue, acredito que este foi um dos estudos mais prazerosos e de grande obtenção de conhecimento que eu realizei nos últimos meses.

Antes de encerrarmos, gostaria de contar com a sua participação neste post, respondendo a enquete abaixo:

 

REFERÊNCIAS

https://www.infoescola.com/matematica/analise-combinatoria/

https://mundoeducacao.bol.uol.com.br/matematica/analise-combinatoria.htm

https://docs.microsoft.com/en-us/sql/t-sql/queries/from-transact-sql

https://docs.microsoft.com/en-us/sql/t-sql/queries/with-common-table-expression-transact-sql

https://www.mssqltips.com/sqlservertip/1042/using-derived-tables-to-simplify-the-sql-server-query-process/

https://docs.microsoft.com/pt-br/sql/t-sql/language-elements/select-local-variable-transact-sql

 

Posts Anteriores

 

CONCLUSÃO

Como de costume, tenho um imenso prazer em poder compartilhar um pouco das minhas experiências, estudos e conhecimentos que estou diariamente formando sobre este fantástico Sistema Gerenciador de Banco de Dados chamado Microsoft SQL Server.

Hoje não seria diferente, mais uma vez você pode notar o quanto ele é capaz de nos surpreender com sua inteligência, sabedoria, e principalmente sua capacidade de conseguir aplicar as mais variadas técnicas existentes da Matemática para solucionar algo que pode parecer tão complexo para o raciocínio humano.

Neste post, utilizei algumas das mais variadas técnicas para se trabalhar com combinações de dados, utilização de dados em memória através de um Select From (Values()), em conjunto com tabelas criadas fisicamente ou tabelas declaradas como expressões em um CTE.

Por fim, fizemos usado mais uma vez da Matemática aplicando a análise condicional em conjunto com seus elementos de permutação e arranjo de valores.

Através dos cenários apresentados, em conjunto com a gama de recursos que ele nos permite utilizar, conseguimos aplicar as mais variadas preposições de análises de dados que nos possibilita identificar qual cenário pode ser a melhor maneira de se tomar uma decisão.

Este é o fantástico Microsoft SQL Server, produto tão fascinante que a cada dia eu não consigo deixar de querer estudar e conhecer mais ainda.

 

Agradecimentos

Agradeço a você por sua atenção e visita ao meu blog. Fique à vontade para enviar suas críticas, sugestões, observações e comentários.

Nos encontramos no próximo post da sessão Dica do Mês a ser publicado em breve.

Um forte abraço, curta esta nova estação do ano que começou a alguns dias atrás, eu adoro o outono.

Até mais.

Microsoft Windows Server IoT 2019 fará parte das edições do novo Windows Server 2019


Com base em anuncio realizado no mês de Fevereiro, a Microsoft confirmou a disponibilidade da versão IoT para o futuro Windows Server 2019, denominado Windows Server 2019 IoT.

A documentação oficial destaca que Windows Server IoT 2019 é a versão completa do Windows Server 2019 que oferece capacidades de gerenciamento e segurança corporativas para soluções de IoT (Internet of Things ou Internet das Coisas).

A nova versão compartilha todos os benefícios do ecossistema do Windows em todo o mundo. Ele é um equivalente binário para o Windows Server 2019, para que você possa usar as mesmas ferramentas de desenvolvimento e gerenciamento conhecidas que você usa em seus servidores de uso geral:

Mas quando se referimos a modalidades de licenciamento e distribuição, a versão de uso geral e as versões de IoT diferem. O Windows Server IoT 2019 só é licenciado através do canal OEM com direitos especiais de uso dedicado.

Fontes e Direitos Autorais: Microsoft – Windows Blogs – / Director of Program Management, Windows IoT and Networking.

Leia na integra acessando: https://blogs.windows.com/windowsexperience/2019/02/26/microsoft-announces-latest-windows-iot-innovations-for-intelligent-edge-devices-at-embedded-world/#ikeGT2SK1ocK3FbO.97

 

Short Scripts – Março 2019


Olá boa tarde, estamos no mês de março, primeiro trimestre de 2019 esta quase se encerrando.

Seguindo em frente, que alegria poder te encontrar em mais um post da sessão Short Scripts, uma das sessões mais recentes do meu blog que esta alçando a marca de 36 posts publicados trimestralmente.

Mantendo a tradição estou retornando com mais um conjunto de “pequenos” scripts catalogados e armazenados em minha biblioteca pessoal de códigos relacionados ao Microsoft SQL Server e sua fantástica linguagem de desenvolvimento Transact-SQL.

Como promessa é dívida e deve ser cumprida “ou melhor” compartilhada, estou compartilhando a minha feita a alguns meses no final do último post desta sessão, publicando mais um conjunto de scripts adicionados atualmente na minha biblioteca particular de códigos e exemplos.

O post de hoje

Como de costume selecionei os principais scripts armazenados recentemente na minha biblioteca de códigos, que apresentam os seguintes assuntos:

  • Cálculo de Idade;
  • Cláusula Values;
  • Cláusula Where;
  • Comando Create Procedure;
  • Comando Declare;
  • Comando Exec;
  • Comando Group By;
  • Comando Insert;
  • Comando Order By;
  • Comando Pivot;
  • Comando Select;
  • Common Table Expression;
  • Diretiva Set;
  • DMV sys.dm_os_ring_buffers;
  • DMV sys.dm_os_virtual_address_dump;
  • Filegroup;
  • Função Concat();
  • Função DateDiff();
  • Função de Agregação SUM;
  • Função Month();
  • Função Year();
  • Gerenciamento de Memória;
  • Grupo de Arquivos;
  • Inner Joins;
  • Left Joins;
  • Operador Lógico Condicional Case;
  • Operador Lógico Condicional While;
  • Stored Procedure;
  • Variáveis;
  • Variável do Tipo Tabela;
  • Visão;
  • Visão de Sistema sys.all_objects;
  • Visão de Sistema sys.filegroups;
  • Visão de Sistema sys.indexes;
  • Visão de Sistema sys.syslanguages;
  • Visão de Sistema SYSCACHEOBJECTS; e
  • Visão de Sistemas sys.messages.

Chegou a hora, mãos nos teclados, a seguir apresento os códigos e exemplos selecionados para o Short Script – Março 2019. Vale ressaltar que todos os scripts publicados nesta sessão foram devidamente testados, mas isso não significa que você pode fazer uso dos mesmo em seu ambiente de produção, vale sim todo cuidado possível para evitar maiores problemas.

Fique à vontade para compartilhar, comentar e melhorar cada um destes códigos.

Short Scripts

— Short Script 1  – Alterando a sequência numérica com base em uma condição —

— Criando a Tabela Valores —
Create Table Valores
(Contador Int Primary Key Identity(1,1),
CodigoCaracter Char(4),
SequenciaDeControle Int)
Go

 

— Inserindo os registros com CódigoCaracter 0001 —
Insert Into Valores Values (‘0001’,1),(‘0001’,2),(‘0001’,3),(‘0001’,4)
Go

— Inserindo os registros com CódigoCaracter 0002 —
Insert Into Valores Values (‘0002’,5),(‘0002’,6),(‘0002’,7),(‘0002’,8)
Go

— Inserindo os registros com CódigoCaracter 0003 —
Insert Into Valores Values (‘0003’,9),(‘0003’,10)
Go

 

— Consultando os registros inseridos —
Select Contador, CodigoCaracter, SequenciaDeControle from Valores
Go

 

— Declarando um bloco de execução para alterar os registros de acordo com uma condição —
Declare @ContadorRegistros Int,
@ContadorSequenciaDeControle Int,
@ValorColunaCodigoCaracter Char(4)

Set @ContadorRegistros=1
Set @ContadorSequenciaDeControle=1

While @ContadorRegistros <= (Select Count(CodigoCaracter) from Valores)
Begin

Set @ValorColunaCodigoCaracter=(Select CodigoCaracter From Valores Where Contador = @ContadorRegistros)

If (@ValorColunaCodigoCaracter = (Select CodigoCaracter From Valores Where Contador = @ContadorRegistros) And @ContadorRegistros > 1)
Set @ContadorSequenciaDeControle=@ContadorSequenciaDeControle + 1
Else
Set @ContadorSequenciaDeControle=0

Update Valores
Set SequenciaDeControle = @ContadorSequenciaDeControle
Where Contador = @ContadorRegistros

Set @ContadorRegistros += 1

End

 

— Consultando os registros após a alteração —
Select Contador, CodigoCaracter, SequenciaDeControle from Valores
Go

 

— Short Script 2 – Utilizando Extended Events – Ring Buffer através da sessão system_health para obter detalhes sobre conexões abertas —

Declare @LanguageID int

Select @LanguageID = lcid
From sys.syslanguages
Where name = @@Language

WITH RingBufferXML
As (SELECT CAST(record as xml) AS RecordXML
FROM sys.dm_os_ring_buffers
WHERE ring_buffer_type= ‘RING_BUFFER_CONNECTIVITY’),
RingBufferConnectivity
As (SELECT x.y.value(‘(/Record/@id)[1]’, ‘int’) AS [RecordID],
x.y.value(‘(/Record/ConnectivityTraceRecord/RecordType)[1]’, ‘varchar(max)’) AS RecordType,
x.y.value(‘(/Record/ConnectivityTraceRecord/RecordTime)[1]’, ‘datetime’) AS RecordTime,
x.y.value(‘(/Record/ConnectivityTraceRecord/SniConsumerError)[1]’, ‘int’) AS Error,
x.y.value(‘(/Record/ConnectivityTraceRecord/State)[1]’, ‘int’) AS State,
x.y.value(‘(/Record/ConnectivityTraceRecord/Spid)[1]’, ‘int’) AS SPID,
x.y.value(‘(/Record/ConnectivityTraceRecord/RemoteHost)[1]’, ‘varchar(max)’) AS RemoteHost,
x.y.value(‘(/Record/ConnectivityTraceRecord/RemotePort)[1]’, ‘varchar(max)’) AS RemotePort,
x.y.value(‘(/Record/ConnectivityTraceRecord/LocalHost)[1]’, ‘varchar(max)’) AS LocalHost,
x.y.value(‘(/Record/ConnectivityTraceRecord/LoginTimersInMilliseconds/TotalTime)[1]’, ‘int’) AS TotalTime,
x.y.value(‘(/Record/ConnectivityTraceRecord/LoginTimersInMilliseconds/EnqueueTime)[1]’, ‘int’) AS EnqueueTime,
x.y.value(‘(/Record/ConnectivityTraceRecord/LoginTimersInMilliseconds/NetWritesTime)[1]’, ‘int’) AS NetWritesTime,
x.y.value(‘(/Record/ConnectivityTraceRecord/LoginTimersInMilliseconds/NetReadsTime)[1]’, ‘int’) AS NetReadsTime,
x.y.value(‘(/Record/ConnectivityTraceRecord/LoginTimersInMilliseconds/Ssl/TotalTime)[1]’, ‘int’) AS SslTotalTime,
x.y.value(‘(/Record/ConnectivityTraceRecord/LoginTimersInMilliseconds/Sspi/TotalTime)[1]’, ‘int’) AS SspiTotalTime,
x.y.value(‘(/Record/ConnectivityTraceRecord/LoginTimersInMilliseconds/TriggerAndResGovTime)[1]’, ‘int’) AS TriggerAndResGovTime
FROM RingBufferXML
CROSS APPLY RecordXML.nodes(‘//Record’) AS x(y))

SELECT RBC.*, m.text
FROM RingBufferConnectivity RBC
LEFT JOIN sys.messages M ON
RBC.Error = M.message_id AND M.language_id = @LanguageID
WHERE RBC.RecordType IN (‘Error’, ‘LoginTimers’)
ORDER BY RBC.RecordTime DESC
Go

 

— Short Script 3 – Stored Procedure – Realizando o versionamento de código fonte  —

CREATE PROCEDURE dbo.GetOne
AS
SELECT 1
GO

CREATE PROCEDURE dbo.GetOne;2 —Versionamento, recurso antigo
AS
SELECT 2
GO

 

Exec dbo.GetOne;2 — Executando a procedure versão 2
go

 

 

— Short Script 4 – Gerenciamento de Memória  — Como encontrar quem está usandoo espaço de endereço virtual no seu SQL Server —

 

SELECT convert(varchar,getdate(),120) as [Timestamp], max(region_size_in_bytes)/1024 [Total max contiguous block size in KB]

from sys.dm_os_virtual_address_dump

where region_state = 0x00010000 — MEM_FREE
Go

 

Select SUM(virtual_memory_reserved_kb)/1024 as virtual_memory_reserved_mb

from sys.dm_os_memory_clerks

Where type not like ‘%bufferpool%’
Go

With VASummary(Size,Reserved,Free) AS
(SELECT
Size = VaDump.Size,
Reserved =  SUM(CASE(CONVERT(INT, VaDump.Base)^0)
WHEN 0 THEN 0 ELSE 1 END),
Free = SUM(CASE(CONVERT(INT, VaDump.Base)^0)
WHEN 0 THEN 1 ELSE 0 END)
FROM
(
SELECT  CONVERT(VARBINARY, SUM(region_size_in_bytes))
AS Size, region_allocation_base_address AS Base
FROM sys.dm_os_virtual_address_dump
WHERE region_allocation_base_address <> 0x0
GROUP BY region_allocation_base_address

UNION

SELECT CONVERT(VARBINARY, region_size_in_bytes), region_allocation_base_address
FROM sys.dm_os_virtual_address_dump
WHERE region_allocation_base_address  = 0x0
)
AS VaDump
GROUP BY Size)
SELECT SUM(CONVERT(BIGINT,Size)*Free)/1024 AS [Total avail Mem, KB] ,CAST(MAX(Size) AS BIGINT)/1024 AS [Max free size, KB]
FROM VASummary
WHERE Free <> 0
Go

 

SELECT SUM(PAGESUSED)*8/1024 ‘MB of MemToLeave memory consumed by procedures’ FROM MASTER.DBO.SYSCACHEOBJECTS

WHERE PAGESUSED >1
Go

 

— Short Script 5 – Criando um Pivot em conjunto com Visão com Sumarização —

Create Table Fornos
(Id Int Primary Key,
Defeito Varchar(20) Not Null,
Forno Varchar(20) Not Null,
Equipe Varchar(20) Not Null)
Go

 

Insert Into Fornos
Values (1,’DEFEITO A’,’FORNO 3′,’AZUL’),
(2,’DEFEITO A’,’FORNO 2′,’VERDE’),
(3,’DEFEITO B’,’FORNO 1′,’AZUL’),
(4,’DEFEITO A’,’FORNO 1′,’PRETO’),
(5,’DEFEITO B’,’FORNO 2′,’VERDE’),
(6,’DEFEITO B’,’FORNO 2′,’AZUL’),
(7,’DEFEITO A’,’FORNO 1′,’PRETO’),
(8,’DEFEITO A’,’FORNO 2′,’AZUL’)
Go

Select * From Fornos
Go

 

— Gerando o Pivot —
Select * from
(Select CONCAT(Defeito,’ – ‘, Equipe) As DefeitosPorEquipe,
CONCAT(Defeito,’ – ‘, Equipe) As ‘Defeitos Agrupados Por Equipes’,
Equipe,
Forno As ‘Fornos’
From Fornos) As F
Pivot (Count(DefeitosPorEquipe) For Equipe In ([Azul],[Preto],[Verde])) as Pvt
Go

 

— Adicionando os Totais —
Select * from
(
Select CONCAT(Defeito,’ – ‘, Equipe) As DefeitosPorEquipe,
CONCAT(Defeito,’ – ‘, Equipe) As ‘Defeitos Agrupados Por Equipes’,
Equipe,
Forno As ‘Fornos’
From Fornos
) As F
Pivot (Count(DefeitosPorEquipe) For Equipe In ([Azul],[Preto],[Verde])) as Pvt

Union All

Select ‘Totais….’, ‘—->’,
Sum(Azul) As SomaAzul,
Sum(Preto) As SomaPreto,
Sum(Verde) As SomaVerde
From
(
Select CONCAT(Defeito,’ – ‘, Equipe) As DefeitosPorEquipe,
Equipe
From Fornos
) As F
Pivot (Count(DefeitosPorEquipe) For Equipe In ([Azul],[Preto],[Verde])) as Pvt
Go

 

— Short Script 6 – Identificando o filegroup vinculado para cada tabela de usuário —

SELECT o.[name],
o.[type],
i.[name],
i.[index_id],
f.[name]
FROM sys.indexes i INNER JOIN sys.filegroups f
ON i.data_space_id = f.data_space_id
INNER JOIN sys.all_objects o
ON i.[object_id] = o.[object_id]
WHERE i.data_space_id = f.data_space_id
AND o.type = ‘U’ — User Created Tables
GO

 

— Short Script 7 – Realizando o cálculo da idade —

— Exemplo 1 —
Declare @Hoje date

Set @Hoje= cast (current_timestamp as date)

 

SELECT CPF, DATA_NASC,
case when month(@Hoje) > month(DATA_NASC)
then datediff (year, DATA_NASC, @Hoje)
when month(@Hoje) = month(DATA_NASC) and day(@Hoje) >= day(DATA_NASC)
then datediff (year, DATA_NASC, @Hoje)
else datediff (year, DATA_NASC, @Hoje) -1
end as Idade
from tb_idade_dez
Go

 

— Exemplo 2 —
Select CPF, DATA_NASC, (datediff (month, DATA_NASC, @Hoje) / 12) as Idade

from tb_idade_dez
Go

 

— Exemplo 3 —
Select CPF, DATA_NASC, datediff(day,DATA_NASC,getdate())/365.15 as idade

from TB_IDADE_JANEIRO
Go

 

— Exemplo 4 —
Declare @DATAS table (DataNasc date)

INSERT into @DATAS values
(‘19880101’), (‘19880111’), (‘19880112’), (‘19880113’),
(‘19880213’), (‘19880313’), (‘19880413’), (‘19880513’),
(‘19880613’), (‘19880713’), (‘19880813’), (‘19880913’),
(‘19881013’), (‘19881113’), (‘19881213’)

 

Declare @Hoje date
Set @Hoje= ‘20190112’

 

SELECT DataNasc, @Hoje as Hoje,
datediff(day, DataNasc, @Hoje)/365.15 as idade,
case when month(@Hoje) > month(DataNasc) then datediff (year, DataNasc, @Hoje)
when month(@Hoje) = month(DataNasc) and day(@Hoje) >= day(DataNasc) then datediff (year, DataNasc, @Hoje)
else
datediff (year, DataNasc, @Hoje) -1
end as Anos
from @DATAS
Go

Muito bem, missão mais que cumprida! Uma nova relação de short scripts acaba de ser compartilhada, mesmo sendo denominados short entre aspas “pequenos”, posso garantir que todos estes exemplos são de grande importância, apresentam um valor e conhecimento do mais alto nível.

Chegamos ao final de mais um Short Scripts, espero que este material possa lhe ajudar, ilustrando o uso de alguns recursos e funcionalidades do Microsoft SQL Server.

Acredito que você tenha observado que estes códigos são conhecidos em meu blog, todos estão relacionados aos posts dedicados ao Microsoft SQL Server publicados no decorrer dos últimos anos.

Boa parte deste material é fruto de um trabalho dedicado exclusivamente a colaboração com a comunidade, visando sempre encontrar algo que possa ser a solução de um determinado problema, bem como, a demonstração de como se pode fazer uso de um determinado recurso.

Links

Caso você queira acessar os últimos posts desta sessão, não perca tempo acesse os links listados abaixo:

https://pedrogalvaojunior.wordpress.com/2018/11/20/short-scripts-novembro-2018/

https://pedrogalvaojunior.wordpress.com/2018/09/18/short-scripts-setembro-2018/

https://pedrogalvaojunior.wordpress.com/2018/05/10/short-scripts-maio-2018/

https://pedrogalvaojunior.wordpress.com/2018/02/19/short-scripts-fevereiro-2018-transaction-log/

Agradecimento

Obrigado mais uma vez por sua visita, fico honrado com sua ilustre presença ao meu blog, desejo e espero que você possa ter encontrado algo que lhe ajudou.

Volte sempre, nos encontraremos mais uma vez na sessão Short Scripts no post a ser publicado no mês de junho.

Um forte abraço, saúde e paz.

Até mais.

Novo Microsoft SQL Server Migration Assistant v8.1 disponível


A Microsoft disponibilizou na última terça – feira dia 05/03 o Microsoft SQL Server Migration Assistant v8.1, ferramenta gratuita que permite a migração de dados existentes em outras soluções de bancos de dados, como:

De uma forma bastante simples e prática é possível consumir os dados armazenados nas soluções listadas acima, enviando os mesmos diretamente para o Microsoft SQL Server e Microsoft Azure SQL.

O Microsoft SQL Server Migration Assistant v8.0 é compatível com o sistemas operacionais:

  • Windows 7;
  • Windows 8;
  • Windows 8.1;
  • Windows 10;
  • Windows Server 2008 R2;
  • Windows Server 2012;
  • Windows Server 2012 R2; e
  • Windows Server 2016.

Esta nova versão do Microsoft SQL Server Migration Assistant  inclui o suporte para:

– MySQL 4.1 e posteriores para todas as edições do SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server 2017, SQL Server 2019, Azure SQL DB e Azure SQL Database Managed Instance;

–  Access 97 e posteriores para todas as edições do SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server 2017, SQL Server 2019, Azure SQL DB e Azure SQL Database Managed Instance;

– SAP Adaptive Server Enterprise (ex-Sybase) 11.9 e posteriores para todas as edições do SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server 2017, SQL Server 2019, Azure SQL DB e Azure SQL Database Managed Instance;

–  Oracle Database 9.0 e posteriores para todas as edições do SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server 2017, SQL Server 2019, Azure SQL DB, Azure SQL Data Warehouse e Azure SQL Database Managed Instance; e

– IBM DB2 9.0 e 10.0 no z/OS e das versões 9.7 e 10.1 no Linux/Unix/Windows para o SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server 2017,SQL Server 2019, Azure SQL DB e Azure SQL Database Managed Instance.

Microsoft SQL Server Migration Assistant v8.1

O download pode ser realizado de acordo com sua fonte de dados de origem, selecione uma das opções existentes abaixo:

Recursos adicionais

Fontes e Direitos Autorais: Microsoft.com – Download Center – https://blogs.msdn.microsoft.com/datamigration/2019/03/05/release-sql-server-migration-assistant-ssma-v8-1/

Microsoft libera nova preview do SQL Server 2019 denominada 2.3


Em grande evento dedicado ao Microsoft SQL Server que esta sendo realizado na Inglaterra o SQL Bits, a Microsoft informou a  liberação de mais uma versão preview da próxima versão SQL Server 2019.

Este novo preview foi batizado de SQL Server 2019 2.3 (quarta versão), vale ressaltar que nos últimos meses a Microsoft vem trabalhando fortemente para liberação de novas versões preliminares.

Novidades

Um dos destaques desta nova versão preliminar faz referência a integração do SQL Server com o Apache Spark™ e o HDFS com o SQL Server, criando assim  uma nova plataforma de dados unificada, que possibilita um grande salto no produto relacionado com os novos padrões de dados e processamento em larga escala. 

Segundo informações fornecidas pela Microsoft, o SQL Server 2019 oferece mais segurança, disponibilidade e desempenho para todas as cargas de dados, além de trazer novas ferramentas de conformidade (relacionadas a GDPR e LGPD), melhor desempenho em hardware moderno e alta disponibilidade em Windows, Linux e contêineres.

A Figura 1 abaixo ilustra a página inicial do website da Microsoft dedicado ao Microsoft SQL Server 2019:

Figura 1 – Introdução ao Microsoft SQL Server 2019.

Melhorias

  • Recuperação de banco de dados acelerada para fornecer melhor aproveitamento do tempo de recuperação e possibilidades de reversão instantânea para transações de longa duração;
  • Aprimoramentos de desempenho em recompilações de plano de consulta, gerenciamento de log de transações e repositório de consultas; e
  • Melhorias no recurso SQL Graph, permitindo exclusão em cascata para bordas e nós.

Download

Dentre as opções disponíveis, você poderá optar tanto para rodar em ambientes físicos como Windows e Linux ou virtualizados através de máquinas virtuais ou containers, conforme Figura 2 abaixo ilustra:

Figura 2 – Plataformas para download disponíveis para versão 2.3 do Microsoft SQL Server 2019.

O Microsoft Server 2019 Preview 2.3 para Windows está disponível em arquivos ISO, arquivo .cab para os seguintes idiomas:

  • ‎Inglês;
  • Alemão;
  • Japonês;
  • Espanhol;
  • Coreano;
  • Russo;
  • Italiano;
  • Francês;
  • Chinês (simplificado);
  • Chinês (tradicional); e
  • Português (Brasil)‎.

Saiba mais sobre o SQL Server 2019

Caso você queria saber mais sobre esta nova versão do Microsoft SQL Server e seus principais recursos, selecione um dos links abaixo:

https://info.microsoft.com/ww-landing-SQLDB-Microsoft-SQL-Server-WhitePaper.html

http://download.microsoft.com/download/8/B/6/8B643729-6224-4ECC-8C50-3292B8156F0E/SQL_Server_2019_Transform-Data_into_Insights_Infographic_EN_US.pdf

http://download.microsoft.com/download/D/2/5/D2519504-0ACD-4CD7-9C34-AB85D5824F34/SQL_Server_2019_Top_10_Reasons_to_Choose_Infographic_EN_US.pdf

https://info.microsoft.com/ww-landing-intro-sql-server-2019.html

Fontes e Direitos Autorais: Microsoft.com – SQL Server BlogSQL Server Team – 07/03/2019.
Leia na integra acessando: https://cloudblogs.microsoft.com/sqlserver/2019/03/01/sql-server-2019-community-technology-preview-2-3-is-now-available/

Raspberry Pi: 10 opções de kits para você conhecer e se apaixonar


Foto: Shutterstock

O Raspberry Pi é um pequeno computador incrivelmente flexível. Você pode usá-lo para uma ampla gama de projetos: o mesmo hardware pode alimentar uma configuração de jogo retro tão facilmente quanto um servidor de ad-blocking.

Mas para quem nunca lidou com uma placa de circuito em sua vida, começar a usar um Raspberry Pi pode parecer intimidante. Para esses desbravadores iniciantes, existem kits especiais que facilitam o primeiro projeto. Os básicos juntam uma placa Raspberry Pi e os componentes necessários (menos o teclado, mouse e monitor). Opções mais avançadas não possuem a placa Raspberry Pi e, em vez disso, concentram-se no hardware necessário para um projeto específico.

Procuramos as opções no mercado para identificar os melhores kits Raspberry Pi. Nossas principais escolhas incluem alternativas para todos os graus de projetos, quer você queira construir um PC secundário básico ou mergulhar diretamente em projetos avançados no melhor estilo maker.

Como comprar: no site da Raspberry Pi Foundation há uma loja online para a compra das placas. Você também pode encontrar placas e vários kits na Amazon.com.br. Na Amazon.com também é possível encontrar a maioria dos kits mencionados aqui. E uma busca no Google revela que há mais kits sendo vendidos no Brasil do que você imagina. Agora, se você tem amigos na Inglaterra ou vai viajar para lá, nada mais cool do que comprar direto na novíssima loja que a fundação Raspberry Pi inaugurou no shopping Grand Arcade no centro da cidade de Cambridge, Reino Unido.

Os Kits

Pi Desktop – Revendedor: Element 14 ; Preço: US$ 50 ; Não inclui a placa Raspberry Pi

Esse kit é básico. Visualmente é uma grande caixa quadrada que vem com uma placa adicional que se conecta ao Raspberry Pi por meio de seus pinos GPIO. Há também uma variedade de elementos tipo PC, incluindo uma interface mSATA, controlador de energia, relógio do sistema e dissipador de calor. Tudo o que você precisa incluir é uma placa Raspberry Pi 3 , um SSD com capacidade de até 1TB e uma atitude DIY de fazer tudo. Em pouco tempo você estará pronto para rodar com seu próprio desktop Raspberry Pi.

CanaKit Basic – Revendedor: CanaKit (via Amazon); Preço: US$ 50; Incluir placa Raspberry Pi 3

A fabricante de kits Raspberry Pi CanaKit oferece um kit básico com apenas os itens essenciais incluídos . Ele vem com uma placa Raspberry Pi 3, carregador, gabinete e dois dissipadores de calor. Os dissipadores de calor não são estritamente necessários, mas são um detalhe agradável. Para começar a funcionar, você precisará adicionar um cartão microSD , teclado, mouse e cabo HDMI.

CanaKit Raspberry Pi 3 Complete Starter Kit – Revendedor: CanaKit (via Amazon) – Preço: US$ 70 – Inclui placa Raspberry Pi 3

Este kit é um avanço do pacote inicial básico. O Complete Starter Kit da CanaKit inclui tudo o que você precisa para começar com um Raspberry Pi: você recebe uma placa Pi 3, um microSD de 32GB com o sistema operacional NOOBS pré-instalado, um gabinete, adaptador de energia, dois dissipadores de calor e um cabo HDMI. Se você quiser cair de cabeça sem ter que esperar por remessas separadas para seus componentes, este kit específico é a melhor alternativa.

Kit Retro Gaming – Revendedor: The Pi Hut – Preço: US$ 90.61 – Inclui placa Raspberry Pi 3

Um dos usos favoritos do Raspberry Pi é montar um console de jogos clássicos. Se você não quer vasculhar a Amazon e outros varejistas pelos materiais que você precisa, este kit de jogos da Pi Hut reúne tudo para você em um só lugar. Além do Raspberry Pi 3 e do case que o acompanha, você tem dois controles de jogos Super NES, um cartão microSD em branco, adaptador microSD para USB, se necessário, e um cabo HDMI de 1,8 m. Por razões legais, o varejista não pode fornecer o sistema operacional ou ROMs de videogame, então você terá que baixar todas essas coisas por conta própria. Se você não tem certeza de como começar, a  PC World tem um tutorial (em inglês) sobre como construir seu próprio console de jogos retro baseado em Pi .

CanaKit Raspberry Pi Kit for Dummies – Revendedor: CanaKit – Preço: US$ 90 – Inclui placa

O kit Raspberry Pi for Dummies é ótimo para quem quer entrar na onde dos hackers de hardware. Ele inclui um livreto Raspberry Pi for Dummies, que serve como uma cartilha para trabalhar com o Raspberry Pi e iniciar seus próprios projetos. O hardware do kit é o que você esperaria: uma placa Raspberry Pi 3, cartão microSD com o sistema operacional NOOBS instalado, fonte de alimentação, caixa Raspberry Pi 3, cabo HDMI de dois metros e dois dissipadores de calor. Você também recebe uma placa de montagem, fios de jumper (M / M e M / F), LEDs, interruptores de botão, resistores Ohm e um cartão de referência rápida GPIO.

PiAware Aircraft Tracking Kit – Revendedor: ModMyPi – Preço: US$ 110,02 – Inclui placa

Este é um kit de projeto interessante para os fãs de viagens aéreas . Ele permite transformar seu Raspberry Pi 3 em uma estação terrestre ADS-B (transmissão dependente de vigilância automática) – você receberá dados em tempo real de aviões dentro do alcance da antena FlightAware incluída. O kit inclui o Raspberry Pi 3, um estojo Raspberry Pi, cartão microSD com software PiAware instalado, fonte de alimentação, cabo de vídeo, cabo ethernet, dissipador de calor, FlightAware Pro Stick ou Pro Stick Plus, cabo USB, antena 1090MHz, 1090MHz band-pass Filtro SMA e um teclado. Este kit é personalizável, portanto, verifique as várias opções que o ModMyPi oferece antes de pagar.

Kit PiTop v2 – Revendedor: Adafruit – Preço: US$ 300 – Não inclui a placa

Se você está desejando que seu Raspberry Pi 3 vire um laptop, este kit da Adafruit é para você. Você terá que incluir sua própria placa Raspberry Pi , mas ela tem tudo o que você precisa: uma tela de 1080p de 14 polegadas, fácil acesso ao Pi, bem como quaisquer outros cabos ou dispositivos USB, um cartão SD de 8GB com Pi -Top OS, vários cabos e parafusos e carregador. Este kit PiTop de segunda geração é compatível com várias placas Raspberry Pi, incluindo o novo Raspberry Pi 3 Modelo B + .

Google AIY Voice Kit – Revendedor: ModMyPi  – Preço: US$ 32,36 – Não inclui placa

O kit de voz do Google AIY não é para criar um Google desktpo. Em vez disso, ele é um projeto faça-você-mesmo de um Google Home usando um Raspberry Pi 3. Lembrando que o kit não inclui a placa Raspberry Pi. Ele vem com uma placa acessória de voz HAT, placa de microfone de voz HAT, um alto-falante de três polegadas, um botão, fios e componentes variados, e uma caixa de papelão e moldura para abrigar todo o projeto. Para completar o projeto, você precisará de um Raspberry Pi 3 , um cartão microSD , uma chave de fenda Philips e uma fita.

Google AIY Voice Kit v2 – Revendedor: Alvo – Preço: US$ 50 – Inclui placa

O Google ganha uma segunda versão do seu kit de voz AIY que facilita muito a montagem de um Google Home. Este modelo vem com os principais componentes, incluindo um alto-falante, voz HAT e botão de pressão. A grande diferença entre este kit e a versão anterior é que ele vem com a placa Raspberry Pi Zero WH como parte do kit, bem como um cartão SD pré-carregado. Você pode optar por comprar um Raspberry Pi 3 separadamente, é claro. Há também um aplicativo complementar para Android para facilitar a configuração e a configuração sem fio.

Google AIY Vision Kit v2 – Revendedor: Alvo – Preço: US$ 90 – Inclui placa

Semelhante ao seu companheiro de kit de voz, a versão mais recente do Kit de Visão vem com uma placa Raspberry Pi Zero WH incluída e cartão SD pré-carregado. Este kit ajuda os DIYers a criar uma câmera inteligente que pode “reconhecer objetos, detectar rostos e emoções”. Os outros componentes principais são a câmera Raspberry Pi, o Vision HAT, o botão pulsador, o chicote de botões, o LED de privacidade e a campainha. Ele também funciona com o mesmo aplicativo complementar do AIY para Android.

Google AIY Voice Kit v2 – Revendedor: Alvo – Preço: US$ 50 – Inclui placa

O Google ganha uma segunda versão do seu kit de voz AIY que facilita muito a montagem de um Google Home. Este modelo vem com os principais componentes, incluindo um alto-falante, voz HAT e botão de pressão. A grande diferença entre este kit e a versão anterior é que ele vem com a placa Raspberry Pi Zero WH como parte do kit, bem como um cartão SD pré-carregado. Você pode optar por comprar um Raspberry Pi 3 separadamente, é claro. Há também um aplicativo complementar para Android para facilitar a configuração e a configuração sem fio.

Google AIY Vision Kit v2 – Revendedor: Alvo – Preço: US$ 90 – Inclui placa

Semelhante ao seu companheiro de kit de voz, a versão mais recente do Kit de Visão vem com uma placa Raspberry Pi Zero WH incluída e cartão SD pré-carregado. Este kit ajuda os DIYers a criar uma câmera inteligente que pode “reconhecer objetos, detectar rostos e emoções”. Os outros componentes principais são a câmera Raspberry Pi, o Vision HAT, o botão pulsador, o chicote de botões, o LED de privacidade e a campainha. Ele também funciona com o mesmo aplicativo complementar do AIY para Android.

Fontes e Direitos Autorais: cio.com.br – Da Redação, com PC World.
Leia na integra acessando: https://cio.com.br/raspberry-pi-10-opcoes-de-kits-para-makers/