#25 – Para que serve


Bom dia, bom dia, bom dia, hoje estou tão feliz (kkkkk)….

Isso parece música, parece não, na verdade é…, aquela musiquinha cantadas todos os dias na entrega da escola, quem nunca cantou esta musiquinha.

Seja bem-vindo a mais um post da sessão Para que Serve, sendo este o de número 25, em mais um dia de muitas atividades, afazeres e compromissos profissionais, domésticos (isso eu não posso comentar aqui….kkkkk) e acadêmicos.

No post de hoje, vou compartilhar com você que esta acessando meu blog, um dos mais tradicionais recursos existentes no Microsoft SQL Server introduzido desde as versões iniciais do produto, mantendo-se sempre atualizada, úteis e principalmente apresentando um pouco perigoso ao ser utilizada quando não se conhece.

Da mesma maneira que realizei no post anterior desta sessão, serei mais direto no assunto, sem qualquer tipo de mistério, suspense ou criar qualquer clima de expectativa sobre este tema, na verdade estou me referindo ao uso das Table Hints (dicas de tabelas), com certeza você já deve ter ouvido falar ou já utilizou pelo menos uma delas.

Ainda não? Não se lembra? Fique tranquilo(a), vou tentar te ajudar a conhecer pouco destas pequenas mas grandiosas funcionalidades existentes no Microsoft SQL Server.

Sendo assim, chegou a hora de conhecer um pouco mais sobre o post de número 25 da sessão Para que serve. Mas uma vez, bem vindo ao #25 – Para que serve – Table Hint – Serializable.

Espero que você esteja animado para conhecer um pouco mais sobre esta funcionalidade, caso já conheça, continue lendo este post, sempre podemos aprender algo novo….


Introdução

As dicas de tabela tem um papel muito importante a partir do momento que decidimos fazer uso delas, alterar o comportamento padrão do otimizador de consulta durante a instrução DML (linguagem de manipulação de dados) ao especificar um método de bloqueio, um ou mais índices, uma operação de processamento de consulta, como uma verificação de tabela ou busca de índice, ou outras opções. As dicas da tabela são especificadas na cláusula FROM da instrução DML e afetam apenas a tabela ou exibição referenciada nessa cláusula.

Mesmo sabendo que o otimizador de consulta do SQL Server normalmente seleciona o melhor plano de execução para uma consulta, muitos desenvolvedores e administradores de banco de dados tomam a decisão de fazer uso deste recurso em diversos cenários de forma indiscriminada.

Estas dicas ou table hints, podem ao longo de sua utilização impactar de forma direta na maneira que o otimizador de consultas existente no Microsoft SQL Server trabalha desde o momento da identificação da análise da query e criação do seu plano de execução, mas principalmente no momento da própria execução.

Vale ressaltar que as mesmas serão ignoradas se a tabela não for acessada pelo plano de consulta, isso pode ser provocado porque o query optimizer opta por não acessar a tabela ou porque uma exibição indexada é acessada, mas este cenário também pode ser contornado, quem sabe em outro momento.

Vamos em frente, sabendo que estas funcionalidades precisam ser um pouco mais conhecidas e melhor entendidas, tomei a decisão de elaborar este post, tentando detalhar um pouco mais sobre a table hint Serializable.

Desta forma, vou apresentar uma breve descrição sobre esta dica de tabela, logo na sequência utilizarei um simples cenário prático para demonstrar como podemos fazer da mesma.

Como diria Chapolin Colorado “Siga-me os bons…..”

Table Hint – SERIALIZABLE

A dica de tabela SERIALIZABLE está na outra extremidade do espectro da dica de tabela NoLock (eu costume dizer bem diretamente que ela faz o papel inverso ao NoLock).

Se comparada ao NoLock, a Serializable, apresenta uma consistência extremamente alta, não permite leituras sujas, leituras não repetíveis e leituras fantasmas de dados, o que fortalece ainda mais a aplicação dos pilares ACID: (Atomicidade, Consistência, Isolamento e Durabilidade).

Quando você usa a dica de tabela SERIALIZABLE (também conhecida como HOLDLOCK), ela garante que nenhuma outra transação pode modificar ou ler dados não confirmados na transação atual. Em alguns casos, podemos dizer que ela se torna semelhante ao HOLDLOCK, porém aplica aos locks restrições maiores ao longo da transação.

Em outras palavras, as transações devem aguardar que outras transações sejam concluídas antes de concluir seu trabalho. Isso limita drasticamente a simultaneidade de banco de dados e coloca um prêmio na consistência do banco de dados. Outro ponto importante quando se referimos a table hint Serializable, se relaciona e existência de um nível de isolamento similar a seu comportamento conhecido Isolation Level Serializable.

Para muitos profissionais de SQL Server, ela é uma variação mais completa da table hint Repeatable Read, bloqueando qualquer modificação de dados nas colunas que são consultadas até que sejam concluídas, independente da operação ser um Update ou Insert, esse comportamento fornece uma alta consistência, mas ao custo de uma baixa concorrência.

Agora que conhecemos um pouco mais sobre esta table hint, vamos avançar, conhecer o seu funcionamento de forma prática, para tal, utilizaremos como base o Bloco de Código 1, que realizará a criação do seguinte ambiente:

·         Databases: DatabaseTableHints;

·         Table: SerializableTable; e

·         Transações: TST e TSTII.

— Bloco de Código 1 —

— Criando o Banco de Dados – DatabaseTableHints —
Create Database DatabaseTableHints
Go

— Acessando o Banco de Dados – DatabaseTableHints
Use DatabaseTableHints
Go

 — Criando a Tabela – SerializableTable —
Create Table SerializableTable
(Codigo Int Identity(1,1) Not Null Primary Key Clustered,
Valores Varchar(30))
Go

Até aqui nada de especial, nosso ambiente já está criado e pronto para receber alguns dados, vamos utilizar o Bloco de Código 2, responsável em realizar o insert e consulta dos dados, conforme apresento a seguir:

— Bloco de Código 2 —
— Inserindo uma pequena porção de dados —
Insert Into  SerializableTable
Values (‘Pedro’), (‘Antonio’), (‘Galvão’), (‘Junior’),
(‘MVP’), (‘MCC’), (‘MSTC’), (‘MIE’), (‘SQL Server’),
(‘Banco de Dados’),(‘Table Hint SerializableTable’)
Go

— Consultando os dados —
Select Codigo, Valores From SerializableTable
Order By Valores Desc
Go

A executarmos o comando Select declarado acima, deveremos ter um result set semelhante ao apresentado na Figura 1 a seguir:

Figura  1 – Processamento do comando Select apresentando os dados inseridos na Table SerializableTable.

Avançando mais um pouco, neste momento temos uma porção de dados armazenados em nossa table SerializabelTable, o que nos permite realizar uma pequena simulação de seu comportamento e entender como a ela realiza o bloqueio em nossa query.

Vamos então realizar a execução do Bloco de Código 3, sendo este o ponto chave que vai nortear nosso entendimento, observe que estamos abrindo um bloco transacional denominado TST (conforme já destacado anteriormente).

— Bloco de Código 3 —
— Iniciando um novo Bloco de Transações denominada TST —
Begin Transaction TST

Observe que estou fazendo uso do comando Begin Transaction abrindo nosso bloco de transação denominado TST, o qual consiste na execução do comando Select em conjunto com table hint Serializable.

Neste instante o Microsoft SQL Server em conjunto com alguns de seus mais importantes componentes: Database Engine e Storage Engine, estabelecem uma nova transação que deverá ser processada dentro da sessão que estamos trabalhando mais que a mesma não recebeu até o presente momento nenhuma instrução Commit ou Rollback.

Select * From SerializableTable With (Serializable)  — Especificando a Table Hint Serializable —
Go
— Forçando um Delay de 10 segundos para gerar bloqueio no nível de leitura compartilhadas  —
WaitFor Delay ’00:00:10′
Go
Importante: O uso do comando WaitFor, vai nos ajudar a ter tempo para abrir uma nova query e executar os próximos passos que deveremos realizar, note que abaixo já estou declarando o comando Commit para confirmar a execução da nossa transação, que na verdade consiste na busca dos linhas de dados existentes na tabela SerializableTable e apresentadas em tela.
Commit Transaction TST
Go
A Figura 2 apresentada abaixo, ilustra o processamento do Bloco de Código 3, o que nos permite identificar a ocorrência do Delay de 10 segundos:
Figura 2 – Processamento do Bloco de Código 3.
Muito bem, agora é a hora da verdade, em paralelo a execução do Bloco de Código 3, vamos executar vamos executar o Bloco de Código 4, o qual vai nos exigir abrir uma nova query dentro da ferramenta que você se encontra acessando o Microsoft SQL Server no momento, eu como de costume estou utilizando o bom e velho Management Studio.

— Bloco de Código 4 —
— Abrir nova query e executar o Select abaixo, após 10 segundos os dados serão apresentados —
Begin Transaction TSTII
Select ‘Aguardando…’ As ‘Passo 1…’
Go

Select GetDate() As ‘Passo 2 – Update Realizado…’
Update SerializableTable
Set Valores = ‘SerializableTable’
Where Codigo = 11
Go
Select GetDate() As ‘Passo 3 – Apresentar dados…’
Go
Select Codigo, Valores From SerializableTable
Where Codigo = 11
Commit Transaction TSTII
Go
Select GetDate() As ‘Transações confirmadas…’
Go
Posso dizer que a execução do Bloco de Código 4, aparentemente foi super tranquilo e simples, mas tenho a certeza que após sua execução você conseguiu entender o funcionamento da table hint Serializable.
A Figura 3 a seguir, apresenta o resultados obtidos através do processamento deste bloco de código:
Figura 3 – Realização do bloco de transação TSTII em paralelo ao TST.
Você pode observar que a partir do momento que nossa primeira transação TST estava sendo processada, a segunda transação TSTII teve seu processamento iniciado, mas ficou aguardando a confirmação de conclusão da TST.
Isso não é fantástico, com certeza é, realmente o uso das table hints em situações ou necessidades específicas pode ser de grande avalia em nossas atividades, mas calma, muita calma neste hora, pois não devemos utilizar nenhum recurso ou funcionalidade sem conhecer melhor seu comportamento, este foi justamente o objetivo principal do post de hoje.

Com isso, e sem mais delongas, chegamos ao final. Foi muito legal poder mostrar um pouco mais sobre as table hints existentes no Microsoft SQL Server, claro de que um pouco de trabalho este post, mas já estou acostume, mesmo assim sempre vale a pena poder compartilhar um o conhecimento e experiências adquiridas ao longo dos anos de trabalho como DBA e Professor.

Espero que você tenha gostado, eu posso dizer que sim, mas sua opinião é muito importante.


Referências

https://docs.microsoft.com/en-us/sql/t-sql/statements/set-transaction-isolation-level-transact-sql?view=sql-server-2017

https://sqlperformance.com/2014/04/t-sql-queries/the-serializable-isolation-level

https://www.techrepublic.com/article/using-advanced-table-hints-in-sql-server/

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

https://pedrogalvaojunior.wordpress.com/2019/02/23/24-para-que-serve/

http://www.verycomputer.com/156_c5e201f3b1bce12f_1.htm

Links

Caso você ainda não tenha acessado os posts anteriores desta sessão, fique tranquilo é fácil e rápido, basta selecionar um dos links apresentados a seguir:

https://pedrogalvaojunior.wordpress.com/2019/02/23/24-para-que-serve/

https://pedrogalvaojunior.wordpress.com/2018/12/21/23-para-que-serve/

https://pedrogalvaojunior.wordpress.com/2018/08/22/22-para-que-serve/

https://pedrogalvaojunior.wordpress.com/2018/05/28/21-para-que-serve/

https://pedrogalvaojunior.wordpress.com/2018/04/12/20-para-que-serve/

 

Conclusão

Mais uma vez podemos observar como o Microsoft SQL Server apresenta um conjunto grandioso de funcionalidades, utilizadas de maneiras diferentes e específicas para cada cenário.

Neste post podemos conhecer, aprender e visualizar como as table hint Serializabel pode ser utilizada, seus comportamento, além disso, entender como uma consulta usa o nível de isolamento SERIALIZABLE ou a table hint HOLDLOCK.

Demonstrei como o Microsfot SQL Server pode aplicar bloqueios compartilhados até que uma transação seja concluída, papel fundamente para qualquer SGBD de alto nível, ainda mais o SQL Server, que possui a capacidade de compreender e permitir que bloqueios ocorram e possam ser feitos durante o processamento de diversas querys ou transações.

Este é o fantástico Microsoft SQL Server, que desde suas primeiras versões nos apresenta inúmeras possibilidades de se aprender, possibilitando usar o passado como fonte de inspiração para construção de um futuro melhor, por isso que a cada dia eu me apaixono ainda mais por este produto…

Vai SQL Server, Vai SQL Server….

Agradecimentos

Mais uma vez obrigado por sua ilustre visita, sinto-me honrado com sua presença, espero que este conteúdo possa lhe ajudar e ser útil em suas atividades profissionais e acadêmicas.

Um forte abraço, até o próximo post da sessão Para que serve a ser publicado no mês agosto de 2019.

Um grande abraço e ótimo final de semana.

Valeu.

Material de Apoio – Abril 2019


Olá, muito bom dia….

Tudo bem? Antes de começar este post, quero lhe perguntar: E ai já se pesou? Anotou na balança ou no seu banco de dados da tabela de pesos o quanto você esta pesando antes da páscoa! KKKK, é minha gente, estamos no mês de abril, a páscoa esta chegando e com ela o coelhinho trazendo muitos docinhos…..

Bom, antes de darmos aquela engordadinha com tantos chocolatinhos, balinhas e docinhos desta doce época do ano, estou de volta cumprindo a minha missão de  colaborar e compartilhar com a comunidade técnica mais um post da sessão Material de Apoio dedicado exclusivamente ao meu blog.

Espero que você esteja gostando do conteúdo aqui disponibilizado, como também, possa me ajudar a torná-lo ainda melhor no decorrer do tempo com a sua participação.

O post de hoje

Seja bem-vindo a mais um post da sessão Material de Apoio, sendo o segundo post da sessão em 2019 e de número 162 no total da mesma.

Para aqueles que já acompanham o meu blog a um certo tempo, os posts dedicados a sessão Material de Apoio, possuem o objetivo de compartilhar o conhecimento de recursos, funcionalidades e procedimentos que podemos realizar no Microsoft SQL Server.

Hoje não será diferente, estou trazendo alguns dos mais recentes scripts catalogados nos últimos meses, que atualmente estão compondo a minha galeria de códigos formada ao longo dos anos de trabalho como DBA e atualmente como Professor de Banco de Dados.

Neste post você vai encontrar arquivos relacionados com os seguintes temas:

  • Acessos;
  • Any Constraints;
  • Arquivo XLS;
  • Arquivo MDB;
  • Cálculo de dias úteis;
  • Casas Decimais;
  • Comando Backup Database;
  • Comando Backup Database With Move Option;
  • Comando Declare;
  • Comando Deny;
  • Comando Grant;
  • Comando Insert;
  • Comando OpenDataSource;
  • Comando OpenRowSet;
  • Comando Restore Database;
  • Comando Revoke;
  • Comando Select;
  • Comando Update;
  • Constraints;
  • Create Database;
  • Create Logins;
  • Create Table;
  • Create Users;
  • Declaração de Variáveis;
  • Delete Cascade;
  • Diretiva Set;
  • Drop Table;
  • Exportação de Dados;
  • Função CharIndex;
  • Função DataLength;
  • Função Floor;
  • Função Left;
  • Função Len;
  • Função Right;
  • Gerenciamento de acesso para Banco de Dados e Tabelas;
  • Importação de Dados;
  • Logins;
  • Microsoft Access;
  • Microsoft Excel;
  • Permissões;
  • Schemas;
  • Stored Procedure;
  • Stored Procedure SP_Attach_DB;
  • Stored Procedure SP_Detach_DB;
  • Tipo de Dados Decimal;
  • Tipo de Dados Int;
  • Tipo de Dados Money;
  • Update Cascade; e
  • Users.

Espero que este conteúdo possa lhe ajudar em seus atividades profissionais e acadêmicas. Por questões de compatibilidade com a plataforma WordPress.com, todos os arquivos estão renomeados com a extensão .docx ao final do seu respectivo nome, sendo assim, após o download torna-se necessário remover esta extensão, mantendo somente a extensão padrão .sql.

Material de Apoio

A seguir apresento a relação de arquivos  selecionados:

1 – Material de Apoio – Abril – 2019 – Comando – Alter Table + Any Constrainst.sql

2 – Material de Apoio – Abril – 2019 – Comando – Alter Table With NoCheck.sql

3 – Material de Apoio – Abril – 2019 – Identificando a quantidade de Casas Decimais.sql

4 – Material de Apoio – Abril – 2019 – Calculando Dias Úteis.sql

5 – Material de Apoio – Abril – 2019 – Realizando o Attach e Detach Database.sql

6 – Material de Apoio – Abril – 2019 – Gerenciando – Acesso para Banco de Dados.sql

7 – Material de Apoio – Abril – 2019 – Gerenciando – Acesso para Tables.sql

8 – Material de Apoio – Abril – 2019 – Stored Procedure P_ImportarBanco.sql

9 – Material de Apoio – Abril – 2019 – OpenDataSource lendo dados em um arquivo XLS.sql

10 – Material de Apoio – Abril – 2019 – Utilizando comando OpenRowSet para importar dados do Microsoft Access.sql

Fique a vontade para copiar, editar, compartilhar e distribuir estes arquivos com seus contatos, aproveite se possível deixe seu comentário, críticas, sugestões e observações.

Nota: Todos os arquivos disponibilizados foram obtidos ou criados com autorização de seus autores, sendo estes, passíveis de direitos autorais.

Links

Caso você queira acessar os posts anteriores da sessão, não perca tempo utilize os links listados abaixo:

https://pedrogalvaojunior.wordpress.com/2018/12/18/material-de-apoio-dezembro-2018/

https://pedrogalvaojunior.wordpress.com/2018/10/30/material-de-apoio-outubro-2018/

https://pedrogalvaojunior.wordpress.com/2018/08/14/material-de-apoio-agosto-2018/

https://pedrogalvaojunior.wordpress.com/2018/06/19/material-de-apoio-junho-2018/

Agradecimento

Quero agradecer imensamente a sua visita, sinto-me honrado e orgulhoso de contar com a sua presença.

Não deixe de acessar os outros posts das demais sessões, o próximo post desta sessão será publicado no mês de junho, até lá, continue aproveitando cada momento da sua vida, desfrutando com muita sabedoria os momentos de galeria e também os desafios que são colocados ao seu redor.

Um forte abraço, muita saúde, sucesso e nos encontramos em breve.

Valeu.

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

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/

#24 – Para que serve


Olá, bom dia, que bom te ver por aqui, neste sabadão, estamos entrando na semana que antecede a maior festa do Brasil.

Seja bem-vindo a mais um post da sessão Para que Serve, sendo este o de número 24, mais um dia de muito trabalhado, repleto de atividades e compromissos.

No post de hoje, vou compartilhar com você que esta acessando meu blog, um dos mais tradicionais recursos existentes no Microsoft SQL Server introduzido desde as versões iniciais do produto, mantendo-se sempre atualizada, úteis e principalmente apresentando um pouco perigoso ao ser utilizada quando não se conhece.

De uma forma bem diferente e mais direta, não vou realizar suspense ou criar qualquer clima de expectativa sobre este tema, na verdade estou me referindo ao uso das Table Hints (dicas de tabelas), com certeza você já deve ter ouvido falar ou já utilizou pelo menos uma delas, adianto que neste post não vou falar da mais conhecida a NoLock e sim de outras duas que também são importantes.

Sendo assim, chegou a hora de conhecer um pouco mais sobre o post de número 24 da sessão Para que serve. Mas uma vez, bem vindo ao #24 – Para que serve – Table Hint – UpdLock e TabLock.

Espero que você esteja animado para conhecer um pouco mais sobre estas funcionalidades, caso já conheça, continue lendo este post, sempre podemos aprender algo novo….


Introdução

As dicas de tabela tem um papel muito importante a partir do momento que decidimos fazer uso delas, alterar o comportamento padrão do otimizador de consulta durante a instrução DML (linguagem de manipulação de dados) ao especificar um método de bloqueio, um ou mais índices, uma operação de processamento de consulta, como uma verificação de tabela ou busca de índice, ou outras opções. As dicas da tabela são especificadas na cláusula FROM da instrução DML e afetam apenas a tabela ou exibição referenciada nessa cláusula.

Mesmo sabendo que o otimizador de consulta do SQL Server normalmente seleciona o melhor plano de execução para uma consulta, muitos desenvolvedores e administradores de banco de dados tomam a decisão de fazer uso deste recurso em diversos cenários de forma indiscriminada.

As dicas de tabelas podem ao longo de sua utilização impactar de forma direta na maneira que o otimizador de consultas existente no Microsoft SQL Server trabalha desde o momento da identificação da análise da query e criação do seu plano de execução, mas principalmente no momento da própria execução.

Vale ressaltar que as table hints serão ignoradas se a tabela não for acessada pelo plano de consulta, isso pode ser provocado porque o query optimizer opta por não acessar a tabela ou porque uma exibição indexada é acessada, mas este cenário também pode ser contornado, quem sabe em outro momento.

Vamos em frente, sabendo que estas funcionalidades precisam ser um pouco mais conhecidas e melhor entendidas, tomei a decisão de elaborar este post, destacando as duas dicas de tabela que atualmente acabei me deparando em cenários de consultoria, me refiro a:

·         UpdLock; e

·         Tablock.

Desta forma, vou apresentar uma breve descrição destas duas dicas de tabelas, e posteriormente utilizar um simples cenário prático para demonstrar como podemos fazer uso de ambas, começando pela UpdLock.

Table Hint – UpdLock

Sendo está uma das mais antigas dicas de tabela existente no Microsoft SQL Server, reconhecida como uma table hint exclusiva para seu uso no comando update, o que na verdade não se aplicada, mesmo sendo este o cenário mais comum de uso podemos em determinados momentos aplicar a instruções Select e Insert.

Seu papel é especificar que bloqueios de atualização serão usados e mantidos até que a transação seja concluída. UpdLock utiliza bloqueios de atualização apenas em operações de leitura no nível de linha ou de página.

Caso o UpdLock venha a combinado com TabLock, ou se um bloqueio em nível de tabela for usado por outro motivo, um bloqueio exclusivo reconhecido pela sigla (x) será usado.

Importante destacar que sempre que um UpdLock é especificado, as dicas em nível de isolamento ReadCommitted e ReadCommittedLock são ignoradas, sendo assim, podemos em alguns cenários se deparar com a ocorrência de dados fantasmas.

Agora que conhecemos um pouco mais sobre esta table hint, vamos avançar, conhecer seu funcionamento de forma prática, para tal, utilizaremos como base o Bloco de Código 1, que realizará a criação do seguinte ambiente:

·         Databases: TesteDatabaseTableHintUpdLock;

·         Tables: UpdLockTable; e

·         Transações: TUPD e TUPDII.

— Bloco de Código 1 —
— Criando o Banco de Dados – TesteDatabaseTableHintUpdLock —
Create Database TesteDatabaseTableHintUpdLock
Go

— Acessando o Banco de Dados – TesteDatabaseTableHintUpdLock —
Use TesteDatabaseTableHintUpdLock
Go

 — Criando a Tabela – UpdLockTable —
Create Table UpdLockTable
(Codigo Int Identity(1,1) Not Null Primary Key Clustered,
Valores Varchar(20))
Go

 

Até aqui nada de especial, nosso ambiente já está criado e pronto para receber alguns dados, para tal, utilizaremos o Bloco de Código 2, responsável em realizar o insert e consulta dos dados, conforme apresento a seguir:

 

— Bloco de Código 2 —
— Inserindo uma pequena porção de dados —
Insert Into UpdLockTable
Values (‘Pedro’), (‘Antonio’), (‘Galvão’), (‘Junior’),
(‘MVP’), (‘MCC’), (‘MSTC’), (‘MIE’), (‘SQL Server’),
(‘Banco de Dados’),(‘Table Hint UpdLock’)
Go
— Consultando os dados —
Select Codigo, Valores From UpdLockTable
Order By Valores Desc
Go

A partir deste momento temos uma porção de dados armazenados em nossa table UpdLockTable, o que nos permite realizar uma pequena simulação de seu comportamento e entender como a ela realiza o bloqueio em nossa query.

Vamos então realizar a execução do Bloco de Código 3, sendo este o ponto chave que vai nortear nosso entendimento, observe que estamos abrindo um bloco transacional denominado TUPD (conforme já destacado anteriormente).

— Bloco de Código 3 —
— Iniciando um novo Bloco de Transações denominada TUPD —
Begin Transaction TUPD

 

— Realizando o Update —

Update UpdLockTable
Set Valores = ‘BD’
Where Codigo = 10
Go

Neste instante o Microsoft SQL Server em conjunto com alguns de seus mais importantes componentes: Database Engine e Storage Engine, estabelecem uma nova transação que deverá ser processada dentro da sessão que estamos trabalhando mais que a mesma não recebeu até o presente momento nenhuma instrução Commit ou Rollback.

No próximo passo a ser realizado aparentemente pode parecer bastante simples, mas após sua execução você vai entender que nem sempre é assim que as coisas podem ser interpretadas.

 

Seguindo em frente, vamos executar o Bloco de Código 4, o qual vai nos exigir abrir uma nova query dentro da ferramenta que você se encontra acessando o Microsoft SQL Server no momento, eu como de costume estou utilizando o bom e velho Management Studio.

— Bloco de Código 4 —

Select Codigo, Valores From UpdLockTable
Order By Valores Desc
Go

Acredito que você deva ter feito a execução deste simples bloco de código e até o presente momento o Microsoft SQL Server ainda não te retornou nenhum dado. Não é verdade?


A Figura 1 pode te ajudar a comprovar e responder este meu questionamento:

Figura 1 – Execução do bloco de código 4 sendo realizada e nenhum dado retornado em tela.

Viu, nem tudo que parece ser fácil realmente é! Mas o que pode ter acontecido?

 

Na verdade, o SQL Server está trabalhando da forma correta, realizamos o processamento de um comando Update dentro de um bloco de transações que ainda não foi encerrado e internamente o bloqueio da tabela foi aplicada de forma geral o que impede que quaisquer outras transações que venha a acessar a tabela como um todo consiga.

 

Mas se você observou em nosso Bloco de Código 3 não fizemos uso da table hint UpdLock, é justamente este o ponto chave, a partir do momento em que fazemos uso desta dica de tabela teremos a capacidade de acessar nossos dados mesmo que estes se encontrem dentro de outra transação ou bloqueio.

 

Para confirmar esta mudança de comportamento, vamos executar agora o Bloco de Código 5 e logo na sequência abrir uma nova query e observar o resultado apresentado na Figura 2:

 

— Bloco de Código 5 —

RollBack Transaction TUPD — Encerrando a transação anterior

Go

 

 

— Realizar novamente o Update agora com UpdLock e Abrir nova Sessão —
Begin Transaction TUPDII

 

Update UpdLockTable With (UpdLock)
Set Valores = ‘Forçando UpdLock’
Where Codigo = 11
Go

Figura 2 – Select realizado em outra query mesmo com a transação TUPDII ainda não encerrada.

Show, não é verdade, neste momento o Microsoft SQL Server acaba de retornar nossos dados manipulados na tabela UpdLock a qual se encontra pertencente a um bloqueio de atualizações de dados que pode estar sendo aplicado no nível de linha ou página de dados (mas este comportamento e estudo vou deixar para outro momento).

 

Com isso, conhecemos a table hint UpdLock, ainda não terminamos nossa caminhada, podemos evoluir mais um pouco nesta jornada, conhecendo agora a dica de tabela TabLock na sequência.

 

Table Hint – TabLock

Também uma das mais tradicionais dicas de tabela, e durante minha pesquisa e entendimento sobre esta table hint, cheguei a conclusão que a ela é muito misteriosa, devido ao seu comportamento.

Aonde a mesma tem a função de especificar que o bloqueio adquirido seja aplicado no nível de tabela, o tipo de bloqueio que é adquirido depende da instrução que está sendo executada.

Por exemplo:

1.      Uma instrução Select pode adquirir um bloqueio compartilhado. Ao especificar TABLOCK, o bloqueio compartilhado é aplicado à tabela inteira, e não no nível de linha ou página. Se HoldLock também for especificado, o bloqueio de tabela será mantido até o final da transação; e

2.      Ou então quando usado com o provedor de conjuntos de linhas em massa através do uso de uma instrução OPENROWSET para importar dados em uma tabela, TabLock permite que vários clientes carreguem dados simultaneamente na tabela de destino com o registro em log e o bloqueio otimizados.

Estamos preparados para seguir em frente, conhecemos um pouco mais sobre esta table hint, chegou a hora de conhecer o seu funcionamento de forma prática, para tal, utilizaremos como base o Bloco de Código 6, que realizará a criação do seguinte ambiente:

·         Databases: TesteDatabaseTableHintTabLock;

·         Tables: TabLockTable; e

·         Transações: TTBL e TTBLII.

— Bloco de Código 6 —
— Criando o Banco de Dados – TesteDatabaseTableHintTabLock —
Create Database TesteDatabaseTableHintTabLock
Go

— Acessando o Banco de Dados – TesteDatabaseTableHintTabLock —
Use TesteDatabaseTableHintTabLock
Go

 

— Criando a Tabela – TabLockTable —
Create Table TabLockTable
(Codigo Int Identity(1,1) Not Null Primary Key Clustered,
Valores Varchar(20))
Go

 

Até aqui nada de especial, nosso ambiente foi criado, preparado para receber alguns dados, para tal, utilizaremos o Bloco de Código 7, responsável em realizar o insert e consulta dos dados, conforme apresento a seguir:

 

— Bloco de Código 7 —

— Inserindo uma pequena porção de dados —
Insert Into  UpdLockTable
Values (‘Pedro’), (‘Antonio’), (‘Galvão’), (‘Junior’),
(‘MVP’), (‘MCC’), (‘MSTC’), (‘MIE’), (‘SQL Server’),
(‘Banco de Dados’),(‘Table Hint TabLock’)
Go

 

— Consultando os dados —
Select Codigo, Valores From UpdLockTable
Order By Valores Desc

Go

 

Nossa porção de dados encontra-se armazenados em nossa table TabLockTable, o que nos permite realizar uma pequena simulação de seu comportamento e entender como ela realiza o bloqueio em nossa query.

 

Vamos então realizar a execução do Bloco de Código 8, sendo este o ponto chave que vai nortear nosso entendimento, observe que estamos abrindo um bloco transacional denominado TTBL (conforme já destacado anteriormente).

 

— Bloco de Código 8 —

— Iniciando um novo Bloco de Transações denominada TTBL —

Begin Transaction TTBL

 

 

— Utilizando o TabLock —
Begin Transaction TTBL

 

Declare @Contador TinyInt = 1

 

Select ‘Início…’

 

While @Contador < 255
BeginUpdate TabLockTable
Set Valores = @Contador
Where Codigo = 10

 

Select Valores From TabLockTable
Where Codigo = 10

 

Set @Contador += 1
End

 

Select ‘Fim…’

Go

 

Observação: Você deve ter notado um pouco de lentidão na execução de bloco de código, bem como, o uso de alguns comandos e técnicas que podem ser melhoradas ou até mesmo substituídas, ressalto que o mesmo não possui o objetivo de ser executado no menor tempo possível ou até mesmo ser entendimento como uma técnica para inserção de dados. Este bloco de código foi criado e elaborado somente para esta prática, sem qualquer finalidade de uso em cenários reais.

 

Dando continuidade, enquanto nosso Bloco de Código 8 é processado, vamos abrir uma nossa query e executar o Bloco de Código 9 e observar se algo de errado ou diferente acontece:

 

— Bloco de Código 9 —
— Inserindo uma nova linha de registró lógico na TableTableLock durante o processamento do bloco de código 8 —

Insert Into TabLockTable Values (‘Teste TabLock’)
Go

 

Tenho a certeza que você imaginava que o SQL Server iria demorar para processar nossa query ou simplesmente não iria retornar nada em tela, da mesma forma que a UpdLock.

Não!

 

Ele mais uma vez está trabalhando de forma certa, da mesma maneira que fizemos anteriormente não utilizamos de forma proposital a table hint TabLock em nosso bloco de código, algo que vamos realizar agora utilizando os blocos de código 10 e 11, declarados a seguir:

 

— Bloco de Código 10 —

Rollback Transaction TTBL — Encerrando a transação anterior —

Go

 

 

— Adicionar TabLock —
Begin Transaction TTBLII

 

Declare @Contador TinyInt = 1

 

Select ‘Início…’

While @Contador < 255
BeginUpdate TabLockTable With (TabLock)
Set Valores = @Contador
Where Codigo = 10

 

Select Valores From TabLockTable
Where Codigo = 10

Set @Contador += 1
End

 

Select ‘Fim…’
Go

 

— Bloco de Código 11 —

— Abrir nova query e realizar Insert vai ocorrer bloqueio —
Insert Into TabLockTable Values (‘Teste TabLock II’)
Go

 

Para nossa surpresa, o Bloco de Código 10 já deve ter sido processado, mas o 11 ainda se encontra em processamento, a Figura 3 apresentada abaixo, comprova este comportamento:

Figura 3 – Bloco de código 11 ainda em execução, aguardando algum retorno do bloco de código 10, mesmo após sua execução.

Você pode estar questionamento a si mesmo, o porquê deste comportamento por parte do nosso Microsoft SQL Server. Não precisa ficar preocupado, por padrão o Database Engine em conjunto com o Storage Engine estão aplicando em tempo de execução um bloqueio em nossa tabela TabLockTable, ou seja, a mesma ficou bloqueada pela operação de Update que nos disparamos no bloco de código 10 em conjunto table hint TabLock.

 

Para que possamos concluir a execução do Bloco de Código 11, precisamos encerrar nossa transação aberta anteriormente denominada TTBLII, para tal vamos executar o Bloco de Código 12 dentro da mesma query utilizada para executar o Bloco de Código 10:

 

— Bloco de Código 12 —

— Confirmando e encerrando a transação TTBLII dentro da mesma sessão do bloco de código 10 —

Commit Transaction TTBLII
Go

 

E como um passe de mágica, o Bloco de Código 11 foi encerrado simultaneamente após o processamento do Bloco de Código 12.

Vou deixar para que você mesmo comprove este resultado.

 

Não é algo realmente surpreendente, como a mesma funcionalidade utilizada de formas similares ou parecidas possa ser comportar de maneiras tão diferentes.

 

Eu sou suspeito a dizer, mas não podemos dizer que isso é um passe de mágicas ou truque, ao contrário, existe um conjunto de propriedades relacionadas ao controle de transacional e bloqueios que os Sistemas Gerenciadores de Bancos de Dados utilizam para garantir que tudo funcione da melhor forma possível chamado ACID:

 

  • Atomicidade;
  • Consistência;
  • Isolamento; e
  • Durabilidade.

 

Quem sabe em um outro post eu aborde este tema, por hoje, vou ficando por aqui.

Com isso, e sem mais delongas, chegamos ao final. Ufa deu um pouco de trabalho este post, como de costume, mesmo assim sempre vale a pena poder compartilhar um pouco do conhecimento e experiências adquiridas ao longo dos anos de trabalho como DBA e Professor.

Espero que você tenha gostado, eu posso dizer que sim, mas sua opinião é muito importante.


Referências

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

http://sqlissuessa.blogspot.com/2016/07/table-hints-transact-sql.html#!

https://sqlhelp.wordpress.com/2009/01/13/table-hints-transact-sql/

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/d2e78faa-9c79-4faf-8232-5ae08a5dd23e/sql-table-hints-not-working-updlock-holdlock

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/a7536fc4-ed1e-44aa-a16b-d4dc9ca6cd70/what-is-the-difference-between-holdlock-and-updlock-in-sql-server

https://www.sqlservercentral.com/Forums/Topic1227171-392-1.aspx

http://www.sql-server-performance.com/2004/2000-table-hints/

https://pedrogalvaojunior.wordpress.com/2018/03/01/script-challenge-13-a-resposta/

https://pedrogalvaojunior.wordpress.com/tag/trace-flag/

Links

Caso você ainda não tenha acessado os posts anteriores desta sessão, fique tranquilo é fácil e rápido, basta selecionar um dos links apresentados a seguir:

https://pedrogalvaojunior.wordpress.com/2018/12/21/23-para-que-serve/

https://pedrogalvaojunior.wordpress.com/2018/08/22/22-para-que-serve/

https://pedrogalvaojunior.wordpress.com/2018/05/28/21-para-que-serve/

https://pedrogalvaojunior.wordpress.com/2018/04/12/20-para-que-serve/

https://pedrogalvaojunior.wordpress.com/2018/01/02/19-para-que-serve/

Conclusão

Mais uma vez podemos observar como o Microsoft SQL Server apresenta um conjunto grandioso de funcionalidades, aplicando formas diferentes e especificas para cenários simulares em suas estruturas de código, mas que durante sua execução pode ser entendida de uma maneira muito particular.

Neste post podemos conhecer, aprender e visualizar como as table hints UpdLock e TabLock são utilizadas, seus comportamentos, e principalmente como os bloqueios realizados por ambas podem ser aplicar para um mesmo cenário no caso o uso do comando Update dentro de um bloco de transações.

Este é o fantástico Microsoft SQL Server, que desde suas primeiras versões nos apresenta inúmeras possibilidades de se aprender, possibilitando usar o passado como fonte de inspiração para construção de um futuro melhor, por isso que a cada dia eu me apaixono ainda mais por este produto…

Vai SQL Server, Vai SQL Server….

Agradecimentos

Mais uma vez obrigado por sua ilustre visita, sinto-me honrado com sua presença, espero que este conteúdo possa lhe ajudar e ser útil em suas atividades profissionais e acadêmicas.

Um forte abraço, até o próximo post da sessão Para que serve a ser publicado no mês maio de 2019.

Um grande abraço e ótimo final de semana.

Valeu.

Material de Apoio – Fevereiro 2019


Olá, muito bom dia….

Tudo bem? O mês de fevereiro já chegou, ainda não é carnaval no Brasil, mas para alegria e folia da garotada e de nós professores as aulas estão de volta (kkkkk).

Mesmo com toda esta loucura de volta as aulas, estou aqui mais uma vez procurando colaborar e compartilhar com a comunidade técnica em mais um post da sessão Material de Apoio dedicado exclusivamente ao meu blog.

Espero que você esteja gostando do conteúdo aqui disponibilizado, como também, possa me ajudar a torná-lo ainda melhor no decorrer do tempo com a sua participação.

O post de hoje

Seja bem-vindo a mais um post da sessão Material de Apoio, sendo o primeiro post da sessão em 2019 e de número 161 no total da mesma.

Para aqueles que já acompanham o meu blog a um certo tempo, os posts dedicados a sessão Material de Apoio, possuem o objetivo de compartilhar o conhecimento de recursos, funcionalidades e procedimentos que podemos realizar no Microsoft SQL Server.

Hoje não será diferente, estou trazendo alguns dos mais recentes scripts catalogados nos últimos meses, que atualmente estão compondo a minha galeria de códigos formada ao longo dos anos de trabalho como DBA e atualmente como Professor de Banco de Dados.

Neste post você vai encontrar arquivos relacionados com os seguintes temas:

  • Check List Diário;
  • Concatenar valores ;
  • Criptografia de Código Fonte;
  • Descriptografia de Código Fonte;
  • Disponibilidade de Ambiente;
  • DMV sys.dm_exec_procedure_stats;
  • DMV sys.dm_exec_query_plan;
  • Formatação de Valores;
  • Função Format;
  • Função Parse;
  • Ordem Crescente de dados;
  • Ordem Descrecente de dados;
  • Plano de Execução;
  • Querys;
  • Stored Procedure;
  • Stored Procedure sp_fixeddrivers; e
  • Texto.

Espero que este conteúdo possa lhe ajudar em seus atividades profissionais e acadêmicas. Por questões de compatibilidade com a plataforma WordPress.com, todos os arquivos estão renomeados com a extensão .docx ao final do seu respectivo nome, sendo assim, após o download torna-se necessário remover esta extensão, mantendo somente a extensão padrão .sql.

Material de Apoio

A seguir apresento a relação de arquivos  selecionados:

1 – Material de Apoio – Fevereiro 2019 – Relação das Querys mais pesadas em conjunto com plano de execução

2 – Material de Apoio – Fevereiro 2019 – Stored Procedure – CheckList Diário – Disponibilidade e Ambiente

3 – Material de Apoio – Fevereiro 2019 – Stored Procedure – sp_fixeddrives

4 – Material de Apoio – Fevereiro 2019 – Stored Procedure para Descriptografia de Stored Procedure

5 – Material de Apoio – Fevereiro 2019 – Stored Procedure – Exibir – Código Stored Procedure Criptografada

6 – Material de Apoio – Fevereiro 2019 – PARSE e FORMAT para alterar exibição de valores

7 – Material de Apoio – Fevereiro 2019 – Função – Formatação de Valores

8 – Material de Apoio – Fevereiro 2019 – Função – Concatenar valores em ordem decrescente

9 – Material de Apoio – Fevereiro 2019 – Função – Contar caracteres específicos dentro de um texto

10 – Material de Apoio – Fevereiro 2019 – Plano de Execução – Obtendo informações sobre Querys e Stored Procedures – sys.dm_exec_procedure_stats + sys.dm_exec_query_plan

Fique a vontade para copiar, editar, compartilhar e distribuir estes arquivos com seus contatos, aproveite se possível deixe seu comentário, críticas, sugestões e observações.

Nota: Todos os arquivos disponibilizados foram obtidos ou criados com autorização de seus autores, sendo estes, passíveis de direitos autorais.

Links

Caso você queira acessar os posts anteriores da sessão, não perca tempo utilize os links listados abaixo:

https://pedrogalvaojunior.wordpress.com/2018/12/18/material-de-apoio-dezembro-2018/

https://pedrogalvaojunior.wordpress.com/2018/10/30/material-de-apoio-outubro-2018/

https://pedrogalvaojunior.wordpress.com/2018/08/14/material-de-apoio-agosto-2018/

https://pedrogalvaojunior.wordpress.com/2018/06/19/material-de-apoio-junho-2018/

https://pedrogalvaojunior.wordpress.com/2018/04/05/material-de-apoio-abril-2018/

Agradecimento

Quero agradecer imensamente a sua visita, sinto-me honrado e orgulhoso de contar com a sua presença.

Não deixe de acessar os outros posts das demais sessões, o próximo post desta sessão será publicado no mês de abril, até lá, continue aproveitando cada momento da sua vida, desfrutando com muita sabedoria os momentos de galeria e também os desafios que são colocados ao seu redor.

Um forte abraço, muita saúde, sucesso e nos encontramos em breve.

Valeu.

Você já ouvi falar na sigla AVIAO na área de banco de dados?


Olá pessoal, boa tarde.

Feliz Ano Novo, seja bem vindo ao primeiro post de 2019 do meu blog, que felicidade te encontrar aqui neste comecinho de ano, ainda mais após estes dias de feriados, festas, descansos e mesa farta (Graças a deus).

Pois bem, também estou tentando colocar meus pensamentos em ordem para redigir este post, tarefa bastante complexa de se realizar hoje, mas acredito que conseguirei.

Posso lhe garantir que este é um daqueles posts totalmente fora dos padrões que normalmente eu costumo utilizar nas sessões existentes neste blog, o conteúdo que você terá acesso no decorrer do mesmo, é resultado dos meus 25 (vinte e cinco) anos de carreira na área de tecnologia em abril deste ano, sendo que, deste totalmente de vinte e cinco anos, 19 (dezenove) deles estão totalmente envolvidos e relacionados com a área de banco de dados, tempo suficiente que me permitiu no ano de 2018 (recém encerrado no último dia 31 de dezembro) “criar” minha primeira sigla totalmente voltado para área de banco de dados, denominada AVIAO.

Antes de se aprofundar e conhecer o significado e como esta sigla foi criada, quero destacar o que me fez ter embasamento suficiente para idealização.


Um pouco de história não faz mal para ninguém

Diariamente nos deparamos com diversas situações, acontecimentos, circunstâncias, fatos e momentos que nos permitem ou apresentam um conjunto infinito de números ou até mesmos palavras que precisam demandar um pouco do nosso raciocínio afim de estabelecermos um possível cenário de entendimento e significado até chegarmos propriamente no reconhecimento do que aquele número ou palavra pode realmente nos ilustrar de significado, o que vai nos permitir então dizer que este conjunto infinito de números ou palavras podem representar um dado.

Mas como podemos definir este tão desconhecido “Dado ou Dados”?

Ao longo dos últimos 12 anos venho lecionando diversas disciplinas na área de banco de dados, entre as mais diversas instituições, faculdades, cursos e área de tecnologia, mas sempre me deparei em todos estes momentos e locais com a maior dúvida, como podemos definir ou afirmar que tal valor pode ser reconhecido como um dado ou informação?

Dados são fatos conhecidos, que podem ser registrados e possuem significado, o mesmo pode  ser definido como a matéria-prima ou o elemento básico para a geração de informações, é um elemento básico para um banco de dados.

Dado é Informação ou Informação é o Dado?

Eis a questão que constantemente me depare a cada inicio de semestre nas disciplinas básicas de banco de dados ou modelagem, e sempre respondo para meus discípulos (alunos): “Dado é tudo aquilo que existe no mundo real e nos permite atribuir ou obter um significado, algo que nos permita reconhecer um valor.”

Já a informação é justamente o valor, significado, atribuído ao dado, que nos estabelece um cenário de entendimento, reconhecimento, compreensão do que “este mesmo dado” quer nos dizer, quer nos revelar.

Então eu apresento o que chamo de Cadeia Evolutiva de um Dado, conforme ilustra a Figura 1 a seguir:

Figura 1 – Cadeia evolutiva de um dado.

Observe que todo e qualquer elemento que reconhecemos com um possível dado, o mesmo, passa por um conjunto de fases até se tornar verdadeiramente algo que nos ajude a tomar decisões e resolve em novos dados.

A Informação

Sabendo então que o dado é o estado anterior de algo que denominados constantemente como informação, o que exatamente pode ser definido ou entendido como informação? Vou tentar te responder de forma simples e objetiva:

A informação pode ser entendida com o dado com significado, passível de interpretação e de entendimento por parte de quem o usa, enfim, é o dado capaz de transmitir conhecimento para a ação ou para a tomada de decisão.

As empresas precisam armazenar os dados relevantes ao seu negócio de alguma forma controlada, organizada, integra e segura. A Tecnologia da Informação oferece recursos para atender a esta importante necessidade das empresas através de sistemas de informação que manipulam as informações da empresa que são armazenadas em um banco de dados.

Um sistema automatizado lida com tarefas comuns aos processos de negócios tais como: contabilidade, controle de estoque, compra e venda. A compreensão de que as informações mantidas por esses sistemas podem ser classificadas, organizadas e pesquisadas apoiando das atividades e tomada de decisões da empresa. Foi a partir deste momento que surgiu a ideia de um Sistema de Informações Gerenciais (SIG). A partir do momento em que os dados estão armazenados, ordenados e organizados, tinha-se a matéria prima disponível para análise por um sistema de suporte à decisão.

A tomada de decisão, ou preparação para o futuro, é a atividade central das organizações modernas. Sendo assim, o sucesso de uma empresa depende da boa tomada de decisão, e para isso a qualidade e disponibilidade dos dados é fundamental.

Sendo assim, todo que qualquer profissional independente da sua área de atuação que consiga reconhecer, entender e diferenciar Dado de uma Informação, estará sempre a frente.


E a sigla AVIAO, o que ela tem haver com estes elementos? Esta resposta eu lhe apresento a seguir:

A Sigla AVIAO

A necessidade de se estudar periodicamente esta cadeia evolutiva que um dado pode apresentar, principalmente estes dois primeiros elementos Dado e Informação, ou Dados e Informações que para muitos representam a mesma coisa, mas obrigatoriamente a maneira que eu sempre busquei, tentei e demorei um certo tempo para encontrar uma forma mais simples e direta visando transmitir para meus alunos como estes “amiguinhos” são tão significantes e importantes para a vida, fez com que eu busca-se de forma mais que constante definir um elemento único para em poucos minutos dizer que estava escrito em diversos livros, apostilas e apresentações.

Além disso, a conjunto de dúvidas, questionamentos e até mesmo críticas em minha abordagem durantes as aulas de Modelagem, Introdução a Banco de Dados, entre outras disciplinas de forma a se relacionar com a área de tecnologia se serviram como base e parâmetro para sua criação.

Como ela foi idealizada

Muito bem, mas posso dizer e garantir que a origem e criação desta sigla não ocorreu dentro de uma sala de aula ou laboratório, na verdade ela surgiu como boa parte das invenções e ideias criada pelo homem, foi em um momento que eu talvez não estivesse de corpo presente mas somente com a minha mente.

Eram quatro horas da manhã do dia 14/11, como sempre em véspera de provas de concurso ou processos de seleção eu tenho dificuldade para dormir, o sono fica leve, como também ansioso para que o tempo passe rápido, naquele mesmo dia eu tinha uma apresentação a ser realizada para um processo de seleção, esta apresentação teria três possíveis temas para serem escolhidos, todos relacionados a área de banco de dados, e eu queria achar uma maneira de tentar justamente resolver em uma única apresentação a junção dos três possíveis temas, foi então que virando várias vezes de um lado para outro e pensando em possibilidades que surgiu  sigla AVIAO, ela é recente, mas vem me orgulhando muito, pois me ajudou absurdamente a resolver sérias dificuldades acadêmicas e profissionais nos últimos dias, como principalmente facilitou o entendimento dos meus alunos.

Neste momento você estar fazendo basicamente estas duas perguntas:

1 – O que representa a sigla Aviao?

2 – Quais são as palavras que forma esta sigla?

Eis as respectivas respostas:

1 – A sigla AVIAO representa um conjunto de definições e características relacionadas diretamente com um dado e seu primeiro estado de evolução conhecido como Informação.

2 – As palavras que forma a sigla AVIAO são: Atomicidade, Veracidade ou Valor, Integridade, Autenticidade e Obrigatoriedade.

Para tentar lhe ajudar a entender melhor o quanto a sigla AVIAO pode lhe ser útil, vou descrever brevemente cada uma destas siglas:

  • Atomicidade: Característica que podemos atribuir diretamente a um dado que nos permite dizer se ele é atômico ou não atômico, ou seja, não divisível ou divisível em partes;
  • Veracidade: Característica que garante que o valor atribuído ou estabelecido para aquele elemento de dado pode ser tratado como algo correto, algo verdadeiro, confiável em sua essência e posteriormente para tomada de decisão;
  • Integridade: Propriedade que devemos estabelecer a um dado, quando estamos analisando a sua origem, ou seja, quem ou o que criou, armazenou ou até mesmo tratou tão conjunto de valores que nos permitem reconhecer como um dado. A integridade se relaciona com o quanto o mesmo o mesmo dado pode ser tratado como verídico, verdadeiro;
  • Autenticidade: Propriedade que nos garante o que valor ou algo que esta sendo apresentado e posteriormente reconhecido pelo dado, realmente é algo que pode existir ou coexistir no mundo real, no qual utilizamos como base as análises e aprendizados obtidos no mundo real, afim de reconhecer e fortalecer que aquele valor é autentico em sua essência, o que nos permite atribuir novos valores, trazendo assim a analise para geração de novos dados; e
  • Obrigatoriedade: Característica que atribuímos a determinados dados, a qual se relaciona com sua importância e posteriormente o quanto este dado pode representar de valor importante para tomada de decisão, ou seja, a obrigatoriedade tem como objetivo principal garantir a qualidade dos nossos dados, um dado que não é obrigatório não pode ser reconhecido, com um dado, verdadeiro, integro ou autentico, esta característica é essencial para definir se aquele dado deve ou não fazer parte de um estudo ou pesquisa.

Sendo assim, acabo de apresentar a sigla AVIAO que venho utilizando desde mês de novembro de 2018, nascida em uma madrugada de sono leve e ansioso devido a um momento importante que iria me deparar na manhã seguinte.


Conclusão

O conhecimento que aprendemos ao longo de nossas vidas é algo transformador, saber a cada dia reconhecer, entender, transmitir e aprender que este conhecimento é nosso dever, o que para muitos pode se tornar uma ameaça, medo ou receio.

Este mesmo elemento chamado de conhecimento, antes de mais nada é um valor ou melhor um dado que passou para algumas fases de evolução até ser reconhecido e tratado como possibilidade de se aprender, tal aprendizado que nos permite criar novos conhecimentos transformando e gerando novos valores.

Foi justamente desta forma, com base, nas minhas experiência profissionais e acadêmicas coletadas ao longo dos anos, reconhecendo e entendendo minhas limitações e dificuldades que me permitiram “criar” um elemento que representa em poucas palavras a junção de diversas conhecimento obtidos durantes anos.

Desta mesma maneira, estou fazendo com que a cadeia de evolução de um dado, continue visa, transformando e criando novos valores, afim de gerar um novo resultando, não deixando que o conhecimento mora comigo, com isso a sigla AVIAO tem me ajudado e transmitir mais facilmente conceitos básicos e de grande importância relacionados com a área de banco de dados e tecnologia.

Agradecimentos

Obrigado por sua visita mesmo primeiro post de 2019, espero que você tenha gostado do conteúdo aqui compartilhado e que o mesmo lhe sirva de inspiração para criar formas de se renovar e transmitir qualquer tipo de conhecimento mais facilmente.

Nos encontraremos nos outros 363 anos de 2019 nos mais variados posts do meu blog.

Um grande abraço, mais uma vez feliz ano novo.

Material de Apoio – Dezembro 2018


Olá, muito bom dia….

Tudo bem? Estamos no mês de dezembro, mês de festividades, e os brasileiros correndo nas ruas, shoppings, comércios em geral para escolher seus presentes e lembrança de Natal, como de costume e a cada ano parece que o tempo voa e não nos damos conta de o quanto nossas vidas tem se tornado um grande roda gigante, repleta de altos e baixos em todos os sentidos.

Como de costume, estou aqui mais uma vez procurando colaborar e compartilhar com a comunidade técnica em mais um post da sessão Material de Apoio dedicado exclusivamente ao meu blog.

Espero que você esteja gostando do conteúdo aqui disponibilizado, como também, possa me ajudar a torná-lo ainda melhor no decorrer do tempo com a sua participação.

O post de hoje

Seja bem-vindo a mais um post da sessão Material de Apoio, sendo o quinto e último do ano de 2018 e de número 160 no total desta sessão.

Para aqueles que já acompanham o meu blog a um certo tempo, os posts dedicados a sessão Material de Apoio, possuem o objetivo de compartilhar o conhecimento de recursos, funcionalidades e procedimentos que podemos realizar no Microsoft SQL Server.

Hoje não será diferente, estou trazendo alguns dos mais recentes scripts catalogados nos últimos meses, que atualmente estão compondo a minha galeria de códigos formada ao longo dos anos de trabalho como DBA e atualmente como Professor de Banco de Dados.

Neste post você vai encontrar arquivos relacionados com os seguintes temas:

  • Alter Database;
  • Arquivos de Dados;
  • Colunas Dinâmicas;
  • Contagem de Caracteres;
  • Data e Hora;
  • DBCC ShowFileStats;
  • DBCC ShrinFile;
  • DBCC TraceStatus;
  • Espaço em Disco;
  • Espaço Ocupado em Disco;
  • Extents;
  • FileGroups;
  • Função Char();
  • Função FileProperty;
  • Função Len();
  • Função PadIndex();
  • Função Replace();
  • Função Revert();
  • Função SubString();
  • Operador Composto;
  • Operador Like;
  • Páginas de Dados;
  • Pivot;Strings; e
  • View sys.database_files.

Espero que este conteúdo possa lhe ajudar em seus atividades profissionais e acadêmicas. Por questões de compatibilidade com a plataforma WordPress.com, todos os arquivos estão renomeados com a extensão .docx ao final do seu respectivo nome, sendo assim, após o download torna-se necessário remover esta extensão, mantendo somente a extensão padrão .sql.

Material de Apoio

A seguir apresento a relação de arquivos  selecionados:

1 – Material de Apoio – Dezembro – 2018 – Adicionando novos arquivos de dados.sql

2 – Material de Apoio – Dezembro – 2018 – Criando um Pivot com Colunas dinâmicas através da hora.sql

3 – Material de Apoio – Dezembro – 2018 – Invertendo a posição de palavras em uma linha.sql

4 – Material de Apoio – Dezembro – 2018 – Movendo páginas não alocadas, Truncando, Esvaziando e Removendo um arquivo de dados.sql

5 – Material de Apoio – Dezembro – 2018 – Utilizando operador Like em conjunto com Colchetes.sql

6 – Material de Apoio – Dezembro – 2018 – Utilizando operador composto.sql

7 – Material de Apoio – Dezembro – 2018 – Identificando o espaço ocupado e livre para arquivos de dados e log.sql

8 – Material de Apoio – Dezembro – 2018 – Simulando a contagem de um caracter específico dentro de uma string.sql

9 – Material de Apoio – Dezembro – 2018 – Dbcc ShowFileStats – Identificando o número de páginas alocados por extents de acordo com o filegroup.sql

10 – Material de Apoio – Dezembro – 2018 – DBCC TraceStatus – Validar as Trace Flags de inicialização habilitadas.sql

Fique a vontade para copiar, editar, compartilhar e distribuir estes arquivos com seus contatos, aproveite se possível deixe seu comentário, críticas, sugestões e observações.

Nota: Todos os arquivos disponibilizados foram obtidos ou criados com autorização de seus autores, sendo estes, passíveis de direitos autorais.

Links

Caso você queira acessar os posts anteriores da sessão, não perca tempo utilize os links listados abaixo:

https://pedrogalvaojunior.wordpress.com/2018/10/30/material-de-apoio-outubro-2018/

https://pedrogalvaojunior.wordpress.com/2018/08/14/material-de-apoio-agosto-2018/

https://pedrogalvaojunior.wordpress.com/2018/06/19/material-de-apoio-junho-2018/

https://pedrogalvaojunior.wordpress.com/2018/04/05/material-de-apoio-abril-2018/

https://pedrogalvaojunior.wordpress.com/2018/02/13/material-de-apoio-fevereiro-2018/

Agradecimento

Quero agradecer imensamente a sua visita, sinto-me honrado e orgulhoso de contar com a sua presença.

Não deixe de acessar os outros posts das demais sessões, o próximo post desta sessão será publicado no mês de fevereiro, até lá, continue aproveitando cada momento da sua vida, desfrutando com muita sabedoria os momentos de galeria e também os desafios que são colocados ao seu redor.

Um forte abraço, muita saúde, sucesso e nos encontramos em 2019 (Ano Novo, vida nova e SQL Server 2019 pintando na área).

Valeu.

Short Scripts – Novembro 2018


Muito boa tarde, já estamos no mês de novembro, e este é mais um post da sessão Short Scripts.

Tudo bem? Já esta se preparando para as festividades de final de ano?

Eu particularmente ainda não, na verdade a grana esta curta então tenho que esperar um pouquinho….

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 35 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

Normalmente compartilho os principais scripts armazenados nos últimos meses, no post de hoje vou fazer a mesma forma que o anterior, compartilhar scripts relacionados a um tema específico, sendo o tema de hoje a propriedade Identity(), desta maneira, você vai se deparar com alguns códigos que estejam envolvidos com este tema e que também se vinculem com outros, dentre os quais destaco:

  • Ativando e Desativando a propriedade Identity;
  • Capturando o último valor Identity;
  • Comando DBCC CheckIdenty();
  • Função Identity;
  • Ident_Current;
  • Realizando insert com a propriedade Identity;
  • Refazer numeração sequencial;
  • Scope_Identity;
  • Select Into;
  • Sequência Numérica;
  • Set Identity_Insert On / Off;
  • Tabela de sistema sys.indexes;
  • Tabela de sistema sys.objects;
  • Tabela de sistema sys.identity_columns;
  • Tabela de sistema sys.index_column; e
  • Variáveis de sistema @@Identity.

Chegou a hora, mãos nos teclados, a seguir apresento os códigos e exemplos selecionados para o Short Script – Novembro 2018 . 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 a vontade para compartilhar, comentar e melhorar cada um destes códigos.

Short Scripts

— Short Script 1  – Ativando e Desativando a propriedade Identity() —

SET IDENTITY_INSERT NomedaTabela On
Go

SET IDENTITY_INSERT NomeDaTabela Off
Go

— Short Script 2  – Comando DBCC CheckIdent(), redefinindo a sequência Identity() —
Declare @Identity Int

— Obtendo o último valor Identity() —
Set @Identity=(Select Ident_Current(‘NomedaTabela’))

— Aplicando e redefinindo a sequência Identity através do último valor obtido —
DBCC CheckIdent(‘NomedaTabela‘,Reseed,@Identity)
Go

— Short Script 3  – Identificando se a chave primária possui a propriedade Identity aplicada —
Select O.Object_Id,
O.Name,
Case IC.is_identity
When 0 Then ‘Identity desabilitado’
When 1 Then ‘Identity habilitado’
End As ‘Identity’
From sys.objects O Inner Join sys.identity_columns IC
On O.object_id = IC.object_id
Where IC.is_identity=1

— Short Script 4  – Obtendo o último valor Identity de cada tabela —
SELECT sys.tables.name AS [Table Name],
sys.identity_columns.name AS [Column Name],
sys.types.name as Type,
last_value AS [Last Value]
FROM sys.identity_columns INNER JOIN sys.tables
ON sys.identity_columns.object_id = sys.tables.object_id
Inner join sys.types
on sys.types.user_type_id = sys.identity_columns.user_type_id
ORDER BY last_value DESC

— Short Script 5  – Resentando o valor Identity atualmente em uso — 
DBCC CHECKIDENT (‘NomedaTabela’, RESEED, 0)
Go

— Short Script 6 – Identificando o valor Identity atualmente em uso —
DBCC CHECKIDENT (‘NomedaTabela’, NORESEED)
Go

— Short Script 7 – Utilizando a função Identity() em conjunto com o comando Insert —

— Exemplo 1 —
Create Table Valores
(Codigo Int)

Insert Into Valores Values(1)
Go 100

Select Identity(Int, 2,2) As Linha, Codigo Into Registros from Valores
Go

— Exemplo 2 —
Select identity(int, 1,1) As Seq, name from sys.sysdatabases
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/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/

https://pedrogalvaojunior.wordpress.com/2017/12/09/short-scripts-dezembro-2017/

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 somente em 2019, mais especificamente no mês de fevereiro.

Um forte abraço, lhe desejo um ótimo final de ano.

Até mais.

Microsoft SQL Server 2019 Preview 2.1 liberado


A Microsoft disponibilizou na semana passada através do Microsoft Evaluation Center o Microsoft SQL Server 2019 Preview 2.1. Esta versão está disponível em múltiplos idiomas, este é o segundo Preview público liberado pela Microsoft da nova versão do Microsoft SQL Server.

De acordo com a empresa, 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, melhor desempenho em hardware moderno e alta disponibilidade em Windows, Linux e contêineres.

Alguns dos principais recursos do produto, nesta nova versão estão recebendo mais atenção, dentre eles o PolyBase, que apresenta alguns aprimoramentos, permitindo que você possa consultar outros bancos de dados como Oracle, Teradata e Mongo DB diretamente do SQL Server sem mover ou copiar os dados, além disso, pela primeira vez, o SQL Server 2019 vai além do banco de dados relacional com Spark e o Sistema de Arquivos Distribuído (HDFS) inclusos.

Baixe o Microsoft SQL Server 2019 Preview 2.1

O Microsoft Server 2019 Preview 2.1 para Windows está disponível para download, como ISO e como arquivo .cab nos seguintes idiomas: ‎

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

Para maiores detalhes e Instruções para as versões Red Hat Enterprise Server, SUSE Linux Enterprise Server, Ubuntu e Docker estão disponíveis aqui.

Fontes e Direitos Autorais: https://docs.microsoft.com/en-us/sql/sql-server/what-s-new-in-sql-server-ver15?view=sqlallproducts-allversions

Material de Apoio – Outubro 2018


Bom dia, bom dia, bom dia…

Tudo bem? Estamos no mês de outubro, as eleições terminaram, e os brasileiros escolheram os seus representantes, passado estes últimos acontecimentos, começamos a direcionar nossos esforços e pensamentos nos acontecimentos de final de ano, aquele momento tão esperado por todos esta mais uma vez se aproximando e nossos sonhos de um futuro melhor começam novamente a serem renovados.

Como de costume, estou aqui mais uma vez procurando colaborar e compartilhar com a comunidade técnica em mais um post da sessão Material de Apoio dedicado exclusivamente ao meu blog.

Espero que você esteja gostando do conteúdo aqui disponibilizado, como também, possa me ajudar a torná-lo ainda melhor no decorrer do tempo com a sua participação.

O post de hoje

Seja bem-vindo a mais um post da sessão Material de Apoio, sendo o quarto do ano de 2018 e de número 159 no total desta sessão.

Para aqueles que já acompanham o meu blog a um certo tempo, os posts dedicados a sessão Material de Apoio, possuem o objetivo de compartilhar o conhecimento de recursos, funcionalidades e procedimentos que podemos realizar no Microsoft SQL Server.

Hoje não será diferente, estou trazendo alguns dos mais recentes scripts  catalogados nos últimos meses, que atualmente estão compondo a minha galeria de códigos formada ao longo dos anos de trabalho como DBA e atualmente como Professor de Banco de Dados.

Neste post você vai encontrar arquivos relacionados exclusivamente ao recurso de Linked Server, sendo este, uma funcionalidade existente a muitos anos no Microsoft SQL Server, que nos permite de uma forma bastante simples, mas não muito prática e performática estabelecer um canal de acesso entre fontes de dados distintas, possibilitando em tempo real que o próprio SQL Server possa acessar e manipular dados entre estas fontes, bem como, armazenar estes mesmos dados internamente.

Segue abaixo a relação de temas relacionados ao uso Linked Server:

  • Access;
  • Active Directory;
  • Excel;
  • Query Dinâmica;
  • Remote Servers;
  • Senhas;
  • sp_addlinkedserver;
  • sp_addlinkedsrvlogin;
  • sp_droplinkedsrvlogin;
  • sp_dropserver;
  • Stored Procedure;
  • sys.linked_logins;
  • sys.server_principals;
  • sys.servers;
  • Transações; e
  • Variáveis.

Espero que este conteúdo possa lhe ajudar em seus atividades profissionais e acadêmicas. Por questões de compatibilidade com a plataforma WordPress.com, todos os arquivos estão renomeados com a extensão .docx ao final do seu respectivo nome, sendo assim, após o download torna-se necessário remover esta extensão, mantendo somente a extensão padrão .sql.

Material de Apoio

A seguir apresento a relação de arquivos  selecionados:

1 – Material de Apoio – Outubro 2018 – Linked Server – Acessando – Active Directory via Linked Server.sql

2 – Material de Apoio – Outubro 2018 – Linked Server – Configurando – Linked Server entre Access 2010 e SQL Server 2008.sql

3 – Material de Apoio – Outubro 2018 – Linked Server – Criando – Linked Server entre Access e Banco de Dados com Senha.sql

4 – Material de Apoio – Outubro 2018 – Linked Server – Criando – Linked Server para acesso ao Excel.sql

5 – Material de Apoio – Outubro 2018 – Linked Server – Trabalhando com Transaçoes no Linked Server.sql

6 – Material de Apoio – Outubro 2018 – Linked Server – Obtendo informacoes sobre o Linked Server.sql

7 – Material de Apoio – Outubro 2018 – Linked Server – Trabalhando com Query Dinâmica em conjunto com Linked Server e Variável.sql

8 – Material de Apoio – Outubro 2018 – Linked Server – Trabalhando com Linked Server e seus recursos básicos.sql

9 – Material de Apoio – Outubro 2018 – Linked Server – Realizando um update através de uma conexão via Linked Server.sql

Fique a vontade para copiar, editar, compartilhar e distribuir estes arquivos com seus contatos, aproveite se possível deixe seu comentário, críticas, sugestões e observações.

Nota: Todos os arquivos disponibilizados foram obtidos ou criados com autorização de seus autores, sendo estes, passíveis de direitos autorais.

Links

Caso você queira acessar os posts anteriores da sessão, não perca tempo utilize os links listados abaixo:

https://pedrogalvaojunior.wordpress.com/2018/08/14/material-de-apoio-agosto-2018/

https://pedrogalvaojunior.wordpress.com/2018/06/19/material-de-apoio-junho-2018/

https://pedrogalvaojunior.wordpress.com/2018/04/05/material-de-apoio-abril-2018/

https://pedrogalvaojunior.wordpress.com/2018/02/13/material-de-apoio-fevereiro-2018/

Agradecimento

Quero agradecer imensamente a sua visita, sinto-me honrado e orgulhoso de contar com a sua presença.

Não deixe de acessar os outros posts das demais sessões, o próximo post desta sessão será publicado no mês de dezembro, até lá, continue aproveitando cada momento da sua vida, desfrutando com muita sabedoria os momentos de galeria e também os desafios que são colocada ao nosso redor.

Um forte abraço, muita saúde, sucesso e nos encontramos no final do ano (que na verdade já chegou)….

Script Challenge – 14 – A resposta….


Boa tarde, pessoal…

Tudo bem?  Seja mais uma vez muito bem vindo ao meu blog, mais especificamente ao post que apresenta a resposta para o Script Challenge – 2018 – Post 14, publicado em junho de 2018, sendo este respectivamente o segundo post após o retorno desta desafiadora sessão em meu blog denominada Script Challenge (Script Desafiador ou Desafio do Script) como queiram traduzir.

Espero que você já tenha ouvido falar desta sessão ou acessado alguns dos posts publicados na mesma, caso ainda não tenha feito, fique tranquilo você vai encontrar no final deste post uma pequena relação contendo os últimos desafios lançados e seus respostas.

Vamos então falar um pouco mais sobre o último desafio, estou me referindo ao Script Challenge 14, desta forma, seja bem vindo a mais um post da sessão Script Challenge.


Script Challenge 14

Falando do desafio de número 14, o mesmo foi publicado no mês de junho de 2018, período de data em que o mundo todo praticamente direcionou os seus olhares para a Rússia, mais especificamente para os jogos de futebol que estavam ocorrendo no país naquele momento.

Pois bem, o Script Challenge 14 não tem nenhum relação com o mundo do futebol, muito menos com o esporte, e como diria aquele apresentador do programa que passa ao domingos: “Sabe o que isso significa? Nada…..”.

Na verdade não é bem assim, para todos aqueles que trabalham com tecnologia e são responsáveis em armazenar, compartilhar, gerenciar e manter dados armazenados em banco de dados, sabe muito bem o quanto temos que nos preocupar em estabelecer boas práticas de retenção de dados afim de podermos ter uma quem sabe vida tranquila ou momentos de lazer.

Continuando nossa história, quero lhe perguntar: E ai já matou a charada? Eu acredito que sim!

Mas para te ajudar mais um pouco vou apresentar a Figura 1 que contem todo código Transact-SQL utilizado neste desafio, contendo trechos ou partes de código ocultas, procedimento que realizei no post que contempla o lançamento deste desafio como forma de aumentar o nível de dificuldade:

Figura 1 – Código Transact-SQL apresentado no Script Challenge 14.

Bom chegou a hora de revelar o que exatamente este bloco de código esta fazendo, chegou o momento de revelar e desvendar este desafio, a seguir apresento a resposta para o Script Challenge 14 e o trecho de código disponível para você utilizar em seus ambientes de trabalho ou estudos.

A resposta

Tanto no post de lançamento do desafio, bem como, neste post que a resposta para o mesmo, eu deixei algumas pequenas dicas para tentar ajudar a identificar a resposta, dentre as quais a relação do script com uma das mais tradicionais atividades desempenhadas por um Administrador de Banco de Dados ou Profissional de tabela, mais diretamente falando a execução de uma operação de backup de banco de dados.

Mas se mesmo assim, você ainda não conseguiu adivinhar ou até mesmo esta se perguntando qual a relação do Script Challenge – 14 tem haver com um momento de lazer, a resposta é muito simples, para qualquer Administrador de Banco de Dados, Administrador de Servidores, Desenvolvedor, enfim um profissional de tecnologia, tudo o que fazemos basicamente em um computador é manipular dados (Criar, Atualizar, Excluir).

Tudo o que fazemos esta relacionado com esta palavrinha pequena mas de altíssima importância e pensando neste sentido a resposta para este desafio se relaciona a estimativa de crescimento de um arquivo de backup, e o quanto esta atividade tão importante e de alta complexidade pode impactar totalmente na vida daqueles que assim como eu um dia ou por diversos momentos teve que abrir mão do seu convívio familiar para se dedicar a acompanhar esta atividade.

Então a resposta para o Script Challenge 14 se relaciona com a possibilidade que o script apresenta em nos ajudar a identificar e estimar o quanto de espaço livre em disco em megabytes ainda teremos antes da execução do backup database levando-se em consideração o tamanho do arquivo de backup a ser criado.

Isso mesmo, esta é a resposta, e o script original que apresenta esta funcionalidade apresentada abaixo:

— Script Challenge 14 – A resposta – Identificando o total de espaço livre em disco antes da realização do backup database — 

— Criando a Stored Procedure —
USE AdventureWorksDW2016
Go

CREATE PROCEDURE dbo.dbo.EstimatedDriveFreeSpaceAndDBSize (
@drvLetter VARCHAR (5),
@enoughSpaceForBackupFlag BIT OUTPUT
)
AS
BEGIN
DECLARE @estimatedBackSizeMB INT,
@estimatedDriveFreeSpaceMB INT,
@dbCheckMessage varchar(80)

SET NOCOUNT ON

SET @dbCheckMessage = Concat (‘Checking database ‘, DB_NAME ())

SELECT @estimatedBackSizeMB = round (sum (a.total_pages) * 8192 / SQUARE (1024.0), 0)
FROM sys.partitions p JOIN sys.allocation_units a
                                            ON p.partition_id = a.container_id
                                           LEFT JOIN sys.internal_tables it
                                            ON p.object_id = it.object_id

CREATE TABLE #freespace

(drive VARCHAR (5),

MBFree DECIMAL (8, 2))

INSERT INTO #freespace (Drive, MBFree)
EXEC xp_fixeddrives

SELECT @estimatedDriveFreeSpaceMB = MBFree
FROM #freespace
WHERE drive = @drvLetter

IF @estimatedBackSizeMB * 1.15 < @estimatedDriveFreeSpaceMB
 SET @enoughSpaceForBackupFlag = 1
ELSE
 SET @enoughSpaceForBackupFlag = 0

SELECT DatabaseName = db_name(),
Estimated_Back_Size_MB = @estimatedBackSizeMB,
Estimated_Drive_Free_Space_MB = @estimatedDriveFreeSpaceMB,
EnoughSpaceForBackupFlag = @enoughSpaceForBackupFlag

DROP TABLE #freespace
SET NOCOUNT OFF
END
GO

Então, agora você deve ter gostado deste desafio, não é verdade? Poder estimar o espaço livre em disco e o tamanho ocupado pelo arquivo mesmo sem executar o Backup Database é realmente uma grande funcionalidade que o Microsoft SQL Server possui. 

Observações

  1. Estamos criando uma User Stored Procedure EstimatedDriveFreeSpaceAndDBSize;
  2. A mesma possui um parâmetros de entrada de valores: @drvLetter (utilizado para informar qual a letra da unidade de disco que iremos analisar); e
  3. Um parâmetro de saída @enoughSpaceForBackupFlag (utilizado no momento da execução da stored procedure como sinalizar responsável em apresentar uma mensagem ao usuário).

Para que você possa entender mais ainda sobre como podemos obter os resultados apresentados por este script, declaro a seguir uma possível maneira de executar o Script Challenge – 14:

— Executando o Script Challenge – 14 —

USE AdventureWorksDW2016
Go

DECLARE @enoughSpaceForBackupFlag bit

EXEC Master.dbo.EstimatedDriveFreeSpaceAndDBSize ‘S’, @enoughSpaceForBackupFlag OUTPUT

PRINT @enoughSpaceForBackupFlag
IF @enoughSpaceForBackupFlag = 1
PRINT ‘Continue to Backup…’
ELSE
PRINT ‘Drive Space Problem…’
GO

A Figura 2 apresentada abaixo, ilustra o conjunto de dados retornados após a execução do Script Challenge – 14:

Figura 2 – Informações relacionadas a estimativa de tamanho do arquivo de backup e espaço livre em disco em megabytes.

Muito bom, sensacional, conseguimos, chegamos ao final, esta é a resposta para o Script Challenge 14, fico extremamente feliz por ter conseguido compartilhar este conteúdo com vocês.

Espero que você tenha gostado deste novo post da sessão Script Challenge!


Sua Participação

No post de lançamento deste desafio, contei com a participação através de uma enquete contendo algumas opções de respostas que poderiam estar relacionadas com o Script Challenge 14. A seguir apresento o resultado desta enquete:

A opção mais votada com 77,78% dos votos é justamente a resposta correta para este desafio, o qual exibe retorna ao usuário informações relacionadas a estimativa de espaço em disco ocupado pelo arquivo de backup de banco de dados e o espaço livre disponível em disco após a conclusão do backup.

Referências

Agradecimentos

Obrigado por sua visita, espero que este conteúdo aqui apresentado como um possível “desafio” possa ser útil e ao mesmo tempo prover conhecimento, aprendizado ou mostrar recursos e problemas existentes no Microsoft SQL Server que as vezes parecem não ter uma resposta.

Um forte abraço nos encontramos em breve nas demais sessões e especialmente em fevereiro de 2019 em mais um post da sessão Script Challenge.

Até a próxima…

Short Scripts – Setembro 2018


Buenos dias, bom dia, comunidade….

E ai como passaram os últimos meses?

Pergunto isso, devido ao post anterior desta sessão ter sido publicado no mês de maio, posso imaginar que neste intervalo de tempo nossas vidas apresentaram inúmeras situações, espero que todas possam ter sido dentro do possível boas, assim como a minha, e se caso venha a existir algo mais espinhoso, que você possa ter superado.

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 34 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

Normalmente compartilho os principais scripts armazenados nos últimos meses, no post de hoje vou fazer um pouco diferente, recentemente tive a necessidade de realizar alguns atividades relacionadas as Split de dados e Collation, sendo assim, decide então compartilhar alguns códigos que estejam envolvidos com estes assuntos e que também se vinculem com outros, dentre os quais destaco:

  • Collate Column,
  • Collate,
  • Collation,
  • Database Collate,
  • Database Collation,
  • Instâncias Microsoft SQL Server,
  • Junção de Tabelas,
  • Page Split,
  • Server Collation,
  • Servidores Microsoft SQL Server,
  • String Split,
  • User Defined Function, e
  • Valores separados por vírgulas.

Chegou a hora, mãos nos teclados, a seguir apresento os códigos e exemplos selecionados para o Short Script – Setembro 2018 . 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 a vontade para compartilhar, comentar e melhorar cada um destes códigos.

Short Scripts

— Short Script 1  – Identificando Page Split – Método 1  —
SELECT cntr_value
FROM sys.sysperfinfo
WHERE counter_name =’Page Splits/sec’ AND
OBJECT_NAME LIKE’%Access methods%’
Go

— Short Script 2  – Identificando Page Split – Método 2  —
SELECT object_name,
counter_name,
instance_name,
cntr_value, cntr_type

FROM sys.dm_os_performance_counters
WHERE counter_name =’Page Splits/sec’ AND
OBJECT_NAME LIKE’%Access methods%’
Go

— Short Script 3  – Criando um User Defined Function para separação de Strings por vírgula  – Método 1 —
CREATE FUNCTION dbo.UFN_SEPARATES_COLUMNS(@TEXT1 varchar(8000), @COLUMN tinyint, @SEPARATOR char(1))
RETURNS varchar(8000)
AS
BEGIN
DECLARE @POS_START int = 1
DECLARE @POS_END int = CHARINDEX(@SEPARATOR, @TEXT, @POS_START)

WHILE (@COLUMN >1 AND @POS_END> 0)
BEGIN
SET @POS_START = @POS_END + 1
SET @POS_END = CHARINDEX(@SEPARATOR, @TEXT, @POS_START)
SET @COLUMN = @COLUMN – 1
END

IF @COLUMN > 1 SET @POS_START = LEN(@TEXT) + 1
IF @POS_END = 0 SET @POS_END = LEN(@TEXT) + 1

RETURN SUBSTRING (@TEXT, @POS_START, @POS_END – @POS_START)
END
Go

SELECT
dbo.UFN_SEPARATES_COLUMNS(@ISBN, 1, ‘-‘) AS PREFIX,
dbo.UFN_SEPARATES_COLUMNS(@ISBN, 2, ‘-‘) AS REGISTRATION_GROUP,
dbo.UFN_SEPARATES_COLUMNS(@ISBN, 3, ‘-‘) AS REGISTRANT,
dbo.UFN_SEPARATES_COLUMNS(@ISBN, 4, ‘-‘) AS PUBLICATION,
dbo.UFN_SEPARATES_COLUMNS(@ISBN, 5, ‘-‘) AS [CHECK]
Go

— Short Script 4  – Criando um User Defined Function para separação de Strings por vírgula – Método 2  —

Create FUNCTION [dbo].[fnSplitString]
(
@string NVARCHAR(MAX),
@delimiter CHAR(1)
)
RETURNS @output TABLE(splitdata NVARCHAR(MAX)
)
BEGIN
DECLARE @start INT, @end INT
SELECT @start = 1, @end = CHARINDEX(@delimiter, @string)
WHILE @start < LEN(@string) + 1 BEGIN
IF @end = 0
SET @end = LEN(@string) + 1

INSERT INTO @output (splitdata)
VALUES(SUBSTRING(@string, @start, @end – @start))
SET @start = @end + 1
SET @end = CHARINDEX(@delimiter, @string, @start)

END
RETURN
END

Select * from dbo.fnSplitString(‘Querying SQL Server’,”)
Go

— Short Script 5  – Informando o Collate de uma coluna na cláusula Where  —
S
elect campo
From tabela
Where campo collate Latin_General_CI_AS like ‘%á%’
Go

— Short Script 6  – Informando o Collate na declaração de uma coluna e na cláusula Where  —
Select Campo collate Latin_General_CI_AS
From tabela
Where Campo collate Latin_General_CI_AS like ‘%á%’
Go

— Short Script 7  – Alterando o Collate de um Banco de Dados  —
Alter Database MosaicoClient
Collate SQL_Latin1_General_CP1_CI_AI
Go

— Short Script 8  – Alterando o Collate de uma Coluna  —
Alter Table Users
Alter Column [Password] Varchar(12) Collate SQL_Latin1_General_CP1_CS_AS
Go

— Short Script 9  – Identificando o Server Collation  – Método 1 —
Select SERVERPROPERTY (‘collation’)
Go

— Short Script 10 – Identificando o Server Collation  – Método 2 —
Exec sp_helpsort
Go

— Short Script 11 – Identificando o Database Collation —
Select DatabasePropertyEx(‘MRP’,’collation’)
Go

— Short Script 12 – Identificando o Column Collation – Método 1 —
Exec sp_help ‘Produtos’
Go

— Short Script 13 – Identificando o Column Collation – Método 2 —
Select * from Sys.columns
Where Name = ‘Produtos’
Go

— Short Script 14 – Identificando o Column Collation – Método 3 —
Select * from Information_schema.columns
Where Table_Name = ‘Produtos’
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/05/10/short-scripts-maio-2018/

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

https://pedrogalvaojunior.wordpress.com/2017/12/09/short-scripts-dezembro-2017/

https://pedrogalvaojunior.wordpress.com/2017/09/16/short-scripts-setembro-2017/

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 do mês de novembro de 2018.

Abraços…

Microsoft SQL Server 2014 Service Pack 2 – Cumulative Update 13


A Microsoft divulgou no último dia 28 de agosto em seu blog SQL Server Release Services a disponibilidade da Atualização Cumulativa 13 (Cumulative Update 13) para SQL Server 2014 SP2.

A CU13 inclui todas as correções para os problemas que foram descobertos depois do lançamento do SQL Server 2014 SP2 e das atualizações cumulativas anteriores lançados até o presente momento.

Caso você deseje realizar o download das atualizações cumulativas anteriores, utilize a relação de links listadas abaixo:

Com base no artigo KB4456287, a atualização traz correções para quatro bugs específicos, dentre eles, um que causa erro de violação de acesso quando você consulta a tabela sysmembers, enquanto outro causa um erro durante a execução do sp_send_dbmail em certos cenários.

Ao instalar a Atualização Cumulativa 13 para SQL Server 2014 SP2, o build (número da versão) será atualizado para o número 12.0.5590.1.

Para realizar o download clique na imagem abaixo:

Fontes e Direitos Autorais: Microsoft Support – https://support.microsoft.com/en-us/help/4456287/cumulative-update-13-for-sql-server-2014-sp2

Microsoft SQL Server 2017 Cumulative Update 9 disponível


A Microsoft informou ontem dia 19/07 no blog SQL Server Release Services a disponibilidade da Atualização Cumulativa(Cumulative Update) 9 para o Microsoft SQL Server 2017.

Atualizações Cumulativas disponíveis para o Microsoft SQL Server 2017:

O artigo KB4341265 publicado no site de suporte da Microsoft, esta nova atualização do SQL Server 2017 traz todas as correções disponibilizadas desde o lançamento do novo SQL Server, incluindo também correções para problemas encontrados após o lançamento das atualizações cumulativas anteriores.

Hotfixes que estão incluídos neste pacote de atualização cumulativa:
Número do bug VSTS Número do artigo KB Descrição Área fixa Plataforma
12144190 4340069 CORREÇÃO: SQL Server 2017 no Linux é desligado inesperadamente durante a recuperação de um banco de dados OLTP de memória OLTP in-memory Linux
12041154 4340134 CORREÇÃO: Erro quando uma função é definida com uma coluna restrita é usada para executar uma consulta drill-through no SSAS Analysis Services Windows
12128861 4340747 CORRIGIR: SQLDUMPER. Despejos EXE iniciada podem levar muito tempo para concluir o processo de geração de despejo para 2017 do SQL Server no Linux Mecanismo SQL Linux
12168709 4010460 CORREÇÃO: Um erro do.NET Framework ocorreu quando você atualiza a tabela de referência de uma transformação Fuzzy Lookup no SSIS Integration Services Windows
12138685 4339613 CORREÇÃO: “Unclosed aspas após a sequência de caracteres” erro ocorre no explorer MDS quando você tentar adicionar um novo membro para uma entidade no SQL Server Data Quality Services (DQS) Windows
12107546 4338890 CORREÇÃO: Uma instância do SQL Server pode parecer não responder e em seguida, pode ocorrer um erro de “não respondendo no Agendador” no SQL Server 2016 Mecanismo SQL Windows
11922902 4316858 CORREÇÃO: “índice corrompido” mensagem e servidor desconexão quando uma consulta de estatísticas de atualização usa hash agregação no SQL Server Desempenho do SQL Todas
12149855 4341219 CORREÇÃO: Um cenário de cérebro divisão ocorre após um failover ao usar grupos de disponibilidade do AlwaysOn com a tecnologia de cluster externo no SQL Server 2017 Alta disponibilidade Todas
12111717 4340837 CORREÇÃO: Erro 3906 quando for aplicado um hotfix em um SQL Server que possui um banco de dados em um banco de dados de inscrição de recepção de instantâneo Mecanismo SQL Windows
11983925 4133164 CORREÇÃO: Erro quando um trabalho do SQL Server Agent executa um comando PowerShell enumere permissões do banco de dados Ferramentas de gerenciamento Windows
12121216 4339664 CORREÇÃO: O erro de exceção ocorre quando você tenta atualizar dados de uma tabela dinâmica no Excel no SSAS 2017 Analysis Services Windows
12123248 4340742 CORREÇÃO: Acesso ao SSAS usando HTTP falha no SQL Server Analysis Services Windows
12162067 4341264 Aperfeiçoamento: Permitir trabalhos do SQL Server Agent iniciar sem esperar que todos os bancos de dados obter recuperado no SQL Server 2017 no Linux Mecanismo SQL Linux
12186129 4101502 CORREÇÃO: Backup de banco de dados TDE habilitada com compactação causa corrupção de banco de dados no SQL Server Mecanismo SQL Todas
12129434 4134601 CORREÇÃO: “não foi possível carregar arquivo ou assembly ‘ Microsoft.AnalysisServices.AdomdClientUI” erro quando uma operação de “Processo total” é executada no SQL Server Analysis Services Windows
12162425 4341221 CORREÇÃO: Backup VSS Falha na réplica secundária de grupos básicos de disponibilidade no SQL Server 2016 e 2017 Mecanismo SQL Windows
12108225 4339858 CORREÇÃO: Redo paralelo não funciona após você desativar 3459 de sinalizador de rastreamento em uma instância do SQL Server Alta disponibilidade Todas
12061383 4341253 CORREÇÃO: Sys.dm_db_log_info e sys.dm_db_log_stats DMVs podem retornar valores incorretos para o último banco de dados da instância do SQL Server 2016 Mecanismo SQL Windows

Dentre os erros e falhas corrigidas neste cumulative update, as informações apresentadas no KB4341265 destacam uma correção relacionada comportamento apresentado por uma instância do SQL Server 2017 que aparentemente encontra-se travada e exibindo o erro “Non-yielding Scheduler“. 

Outra correção destacada no artigo, se relaciona ao erro “Could not load file or assembly ‘Microsoft.AnalysisServices.AdomdClientUI”.

Vale ressaltar que além de correções relacionadas a erros apresentados por comportamentos apresentadas pelas instância SQL Server 2017, a CU9 também possui correções para os bugs relacionados as DMVs sys.dm_db_log_stats e sys.dm_db_log_info may retornem valores incorretos em determinados momentos de consulta de dados relacionados aos arquivos de log existentes em bancos de dados.

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

Para realizar o download clique na imagem abaixo:

Fontes e Direitos Autorais: SQL Server Release Services – 19/07/2018.