Microsoft SQL Server Data Tools v15.5.1 para Visual Studio 2017 disponível


O SQL Server Data Tools v15.5.1 é uma ferramenta de desenvolvimento moderna que você pode baixar gratuitamente para criar bancos de dados relacionais do SQL Server, bancos de dados SQL do Azure, pacotes do Integration Services, modelos de dados do Analysis Services e relatórios do Reporting Services.

Com o SSDT, você pode projetar e implantar qualquer tipo de conteúdo do SQL Server com a mesma facilidade com que desenvolve um aplicativo no Visual Studio.

O SQL Server Data Tools v15.5.1 para Visual Studio 2017 está disponível para download aqui e é compatível com o Windows 7 SP1, Windows 8.1, Windows 10, Windows Server 2012 R2 e Windows Server 2016.

SQL Server Data Tools v15.5.1 para Visual Studio 2017Esta versão do SSDT pode ser instalada nos seguintes idiomas:

Chinês (República Popular da China) | Chinês (Taiwan) | Inglês (Estados Unidos) | Francês | Alemão | Italiano | Japonês | Coreano | Português (Brasil) | Russo | Espanhol

De acordo com o changelog, esta versão traz a correção de um problema no qual o instalador trava na pós-instalação do SQL Server Integration Services e a correção de um problema no qual a instalação falha com a seguinte mensagem de erro: “Não há suporte para a operação de metarquivo solicitada (0x800707D3)”.

IMPORTANTE: Antes de instalar o SSDT v15.5.1 para Visual Studio 2017, desinstale as extensões “Projetos do Microsoft Analysis Services” e “Projetos do Microsoft Reporting Services”, caso eles já estejam instalados no VS 2017 e feche todas as instâncias do VS.

Mais informações sobre o SQL Server Data Tools podem ser encontradas aqui. Ele também possui uma versão para o Visual Studio 2015.

Fontes e Direitos Autorais: https://docs.microsoft.com/pt-br/sql/ssdt/changelog-for-sql-server-data-tools-ssdt

Anúncios

Microsoft disponibiliza atualização cumulativa 9 para SQL Server 2014 SP2


A Microsoft disponibilizou para download nesta semana a Atualização Cumulativa 9 para SQL Server 2014 SP2. Esta atualização contém correções para os problemas que foram descobertos depois do lançamento do SQL Server 2014 SP2.

O SP2 foi lançado pela Microsoft em julho de 2016.

Atualização Cumulativa 9 para SQL Server 2014 SP2

De acordo com o artigo KB4055557 publicado no site de suporte da Microsoft, a Atualização Cumulativa 9 altera o build para 12.0.5563.0 e traz correções para múltiplos bugs.

Entre os bugs corrigidos estão que faz com que o DBCC CHECKDB retorne erros de consistência se a função SOUNDEX é usada em certos cenários e um que gera o erro “Invalid comparison due to NO COLLATION”.

A lista completa com todos os bugs corrigidos por esta atualização cumulativa pode ser vista no link acima.

A Atualização Cumulativa 9 para SQL Server 2014 SP2 está disponível para download aqui em múltiplos idiomas para plataformas 32 e 64 bits.

Atualização Cumulativa 9 para SQL Server 2014 SP2
De acordo com o artigo KB4055557 publicado no site de suporte da Microsoft, a Atualização Cumulativa 9 altera o build para 12.0.5563.0 e traz correções para múltiplos bugs

Correcções incluídas neste pacote de atualizações cumulativas


Fontes e Direitos Autorais: Microsoft.com – 19/12/2017 –https://support.microsoft.com/pt-br/help/4055557/cumulative-update-9-for-sql-server-2014-sp2

Microsoft SQL Server 2016 SP1 – Atualização Cumulativa 9


A Microsoft disponibilizou para download nesta semana a Atualização Cumulativa 6 para SQL Server 2016 SP1.

Atualização Cumulativa 6 para SQL Server 2016 SP1

O artigo KB4037354 com informações sobre o que a atualização traz de novo ainda não está disponível, publicado aqui pela Microsoft.

A tabela a seguir lista o status de artigos individuais da Base de conhecimento Microsoft. 

Número de bug do VSTS Número de artigo do KB Descrição Corrigir a área
10918636 4049027 CORREÇÃO: Erro de “AdomdConnectionException” quando a fonte de dados do SSRS 2016 usa msmdpump O Reporting Services
10868757 4040512 CORREÇÃO: Erro ao exportar um relatório do Reporting Services para PDF no SQL Server 2017 O Reporting Services
10868767 4039510 CORREÇÃO: Violação de acesso ocorre quando você usar sp_xml_preparedocument para abrir documentos XML no SQL Server 2014 ou 2017 XML
10067707 4019840 CORREÇÃO: Consultas em tabelas externas PolyBase retornam linhas duplicadas no SQL Server de 2016 e 2017 Mecanismo do SQL
10362525 4035062 CORREÇÃO: Uso de memória com muitos bancos de dados maiores no SQL Server 2016 que versões anteriores Mecanismo do SQL
11078704 4039592 CORREÇÃO: Não pode alterar a senha para um SQL Server 2014 ou 2016 conta de serviço quando é habilitada para proteção adicional da LSA Ferramentas de gerenciamento
11078711 4042232 CORREÇÃO: Violação de acesso quando você cancelar uma consulta pendente se os desaparecidos indexa o recurso está habilitada no SQL Server de 2014 e 2016 Desempenho de SQL
11078718 4043947 CORREÇÃO: Funcionalidade de favoritos não funciona completamente quando você abre um relatório em formato MHTML através do Outlook no SSRS 2014 e 2016 O Reporting Services
10868753 4033789 FIX: Um vazamento de memória pode ocorrer quando você executar operações de atualização de processo no SSAS Serviços de análise
10868722 4038882 FIX: SQL Server Backup gerenciado não exclui os backups antigos que estão para além do período de retenção no SQL Server Mecanismo do SQL
10868738 4039509 CORREÇÃO: SSAS falha quando você processa um cubo no SQL Server ou um banco de dados do SSAS Serviços de análise
10868725 4039511 CORREÇÃO: Conseguiu falhar Backup intermitentemente por causa de erro SQLVDI no SQL Server Mecanismo do SQL
10868770 4039735 CORREÇÃO: “Non-produzindo Scheduler” condição ocorre para consulta com muitas expressões em SQL Server 2014 e 2016 Desempenho de SQL
10868732 4040376 CORREÇÃO: Backup gerenciado no Microsoft Azure para depois de backup de banco de dados grande no SQL Server Mecanismo do SQL
11052450 4046056 CORREÇÃO: Afirmação ocorre sobre como acessar a tabela de memória otimizada através de Marte Mecanismo do SQL
10864945 3010148 CORREÇÃO: Papel Non-admin não pode receber correto ChildCount estimativas para membros da folha dimensão pai/filho no SSAS Serviços de análise
10965956 4034789 CORREÇÃO: Um erro de exceção inesperada ocorre quando uma medida de XTIR processa muitos registros no SSAS 2016 ou 2017 Serviços de análise
10870250 4040934 CORREÇÃO: Pacotes de serviço do SQL Server Integration pendurar aleatoriamente se log personalizado está habilitado Serviços de integração
11029968 4051356 CORREÇÃO: Restauração de banco de dados na memória falha com erros no SQL server 2016 Na memória OLTP
11031436 4052133 CORREÇÃO: Violação de acesso ocorre quando SQL Server 2016 tenta iniciar o Gerenciador de loja de consulta durante a inicialização Mecanismo do SQL
10980994 4052132 FIX: Um problema de Agendador não produzindo ocorre quando você usar o recurso de armazenamento de consulta do SQL Server no SQL Server Mecanismo do SQL
11124144 4052127 Hotfix: Mecanismo de alerta lê todo Log de eventos do aplicativo e envia aler Ferramentas de gerenciamento
10855950 4052125 CORREÇÃO: Log de auditoria para eventos de ROLLBACK TRANSACTION não está disponível no SQL Server 2016 Segurança do SQL
11060168 4052123 CORREÇÃO: Deslizamento de validade para o cookie de autenticação não está funcionando e falha redirecionar para a página de logon no SSRS 2016 O Reporting Services
11031058 4052121 CORREÇÃO: Violação de acesso para consultas de DMV correr contra um grupo de disponibilidade distribuídas no SQL Server Alta disponibilidade
10971673 4052119 CORREÇÃO: Transações distribuídas em um banco de dados AG falhar depois de reiniciar no SQL Server 2016 Mecanismo do SQL
10881290 4052131 CORREÇÃO: Sys.dm_os_windows_info Detran retorna valores errados para 10 de Windows e Windows server 2016 Mecanismo do SQL
10864854 4052572 CORREÇÃO: 2016 SSAS trava intermitentemente quando você renomear o banco de dados multidimensional usando script Serviços de análise
11127649 4052625 CORREÇÃO: Consultas de recuperação de dados usando a busca de índice não-agrupado demoram muito no SQL Server Mecanismo do SQL
10820931 4048942 CORREÇÃO: “Parado IOCP Listener” e “não produzidas IOCP ouvinte” dumps de memória gerado pelo SQL Server 2016 reiniciar Mecanismo do SQL
10921921 4048943 CORREÇÃO: Violação de acesso na réplica primária da AlwaysOn AG em SQL Server 2016 Alta disponibilidade
11018232 4046858 CORREÇÃO: Consulta que usa o plano de execução de consulta paralela com operação “merge join” lenta na atualização cumulativa 3, 4 ou 5 para SQL Server 2016 Service Pack 1 Desempenho de SQL
10935673 4052633 CORREÇÃO: Consulta SELECT que usa hash de modo lote operador agregado que conta várias colunas anuláveis retorna incorreto resulta em SQL Server Desempenho de SQL
10330560 4053550 CORREÇÃO: Processamento mensagem XML usando o Service Broker resulta em sessão pendurada no SQL Server 2016 Mecanismo do SQL
10678621 4037454 CORREÇÃO: Política de gerenciamento de diretiva não está funcionando depois de instalar o CU2 para SQL Server SP1 de 2016 Ferramentas de gerenciamento
10972567 4043624 CORREÇÃO: Limpeza manual de controle de alterações falhar com o erro de não-existência de tabela no SQL Server Mecanismo do SQL
10868776 3208545 FIX: SQL Server 2016 ou 2017 Analysis Services pode falhar em uma situação específica Serviços de análise
10868735 4022483 CORREÇÃO: Erro quando você exporta uma base de conhecimento DQS que contém domínios no cliente DQS no SQL Server Serviços de qualidade de dados (DQS)
10868748 4040401 CORREÇÃO: Violação de acesso para consulta a tipos de dados espaciais através de servidor vinculado no SQL Server Mecanismo do SQL
10930335 4044064 CORREÇÃO: Erro de “Solicitação expirou” quando você alterar as opções de segurança para um grupo de segurança MDS no SQL Server 2016 Serviços de qualidade de dados (DQS)
10934352 4045795 CORREÇÃO: Thread pool exaustão e contenção CMEMTHREAD na AAG com dados semeadura em SQL Server 2016 Mecanismo do SQL

A Atualização Cumulativa 6 para SQL Server 2016 SP1 está disponível para download aqui.

Fontes e Direitos Autorais: Microsoft Support – 21/11/2017 –https://support.microsoft.com/en-us/help/4037354/cumulative-update-6-for-sql-server-2016-sp1

Microsoft SQL Server 2016 – Atualização Cumulative 9


A Microsoft disponibilizou para download nesta semana a Atualização Cumulativa 9 para SQL Server 2016.

Atualização Cumulativa 9 para SQL Server 2016

De acordo com o artigo KB4037357 publicado pela Microsoft em seu site de suporte, esta atualização contém correções para os problemas que foram encontrados depois do lançamento do SQL Server 2016 e antes do lançamento do SQL Server 2016 SP1.

Entre os bugs corrigidos pela atualização estão um que causa um erro ao exportar um relatório do Reporting Services em PDF, um que faz com que uma violação de acesos ocorra quando você usar sp_xml_preparedocument para abrir documentos XML no SQL Server e um que causa o vazamento de memória quando você executa operações de atualização de processo no SSAS.

A tabela a seguir lista o status de artigos individuais da Base de conhecimento Microsoft.

Número de bug do VSTS Número de artigo do KB Descrição Corrigir a área
10868755 4040512 CORREÇÃO: Erro ao exportar um relatório do Reporting Services para PDF no SQL Server 2016 ou 2017 O Reporting Services
10868765 4039510 CORREÇÃO: Violação de acesso ocorre quando você usar sp_xml_preparedocument para abrir documentos XML no SQL Server XML
11078703 4039592 CORREÇÃO: Não pode alterar a senha para um SQL Server 2014 ou 2016 conta de serviço quando é habilitada para proteção adicional da LSA Ferramentas de gerenciamento
11078710 4042232 CORREÇÃO: Violação de acesso quando você cancelar uma consulta pendente se os desaparecidos indexa o recurso está habilitada no SQL Server de 2014 e 2016 Desempenho de SQL
11078717 4043947 CORREÇÃO: Funcionalidade de favoritos não funciona completamente quando você abre um relatório em formato MHTML através do Outlook no SSRS 2014 e 2016 O Reporting Services
10868752 4033789 FIX: Um vazamento de memória pode ocorrer quando você executar operações de atualização de processo no SSAS Serviços de análise
11077635 4035062 CORREÇÃO: Uso de memória com muitos bancos de dados maiores no SQL Server 2016 que versões anteriores Mecanismo do SQL
10868720 4038882 FIX: SQL Server Backup gerenciado não exclui os backups antigos que estão para além do período de retenção no SQL Server Mecanismo do SQL
10868737 4039509 CORREÇÃO: SSAS falha quando você processa um cubo no SQL Server ou um banco de dados do SSAS Serviços de análise
10868724 4039511 CORREÇÃO: Conseguiu falhar Backup intermitentemente por causa de erro SQLVDI no SQL Server Mecanismo do SQL
10868769 4039735 CORREÇÃO: “Non-produzindo Scheduler” condição ocorre para consulta com muitas expressões em SQL Server 2014 e 2016 Desempenho de SQL
11078700 4040108 CORREÇÃO: O Backup do banco de dados de disponibilidade através de aplicativo baseado em VSS pode falhar no SQL Server Mecanismo do SQL
10868731 4040376 CORREÇÃO: Backup gerenciado no Microsoft Azure para depois de backup de banco de dados grande no SQL Server Mecanismo do SQL
11061122 4046056 CORREÇÃO: Afirmação ocorre quando você acessar a tabela de memória otimizada através de Marte em 2016 de SQL Server Mecanismo do SQL
11057320 4052134 CORREÇÃO: Erros 33111 e 3013 quando você fazer backup de um TDE criptografada de dados no SQL Server Mecanismo do SQL
11124143 4052127 CORREÇÃO: O mecanismo de alerta lê o log de eventos do aplicativo completo e envia alertas sobre eventos antigos depois Windows é atualizado Ferramentas de gerenciamento
10881287 4052131 CORREÇÃO: Sys.dm_os_windows_info Detran retorna valores errados para 10 de Windows e Windows Server 2016 Mecanismo do SQL
11127656 4052625 CORREÇÃO: Consultas que recuperam dados por meio de busca de índice não-agrupado demorar mais no SQL Server Mecanismo do SQL
10870632 4042948 CORREÇÃO: Assinatura controlada por dados falha após você atualizar do SSRS 2008 a 2016 SSRS O Reporting Services
10868734 4022483 CORREÇÃO: Erro quando você exporta uma base de conhecimento DQS que contém domínios no cliente DQS no SQL Server Serviços de qualidade de dados (DQS)
10868746 4040401 CORREÇÃO: Violação de acesso para consulta a tipos de dados espaciais através de servidor vinculado no SQL Server Serviço do SQL

A Atualização Cumulativa 9 para SQL Server 2016 está disponível para download aqui.

Fonte e Direitos Autorais: Microsoft Support – 21/11/2017 – https://support.microsoft.com/en-us/help/4037357/cumulative-update-9-for-sql-server-2016

Dica do Mês – Microsoft SQL Server 2017 – Relação de Novas colunas internas


Olá pessoal, bom dia.

Tudo bem? Preparado para um mês que esta se iniciando hoje? Se você me perguntar eu ainda não sei te responder pois acordei a pouco(kkkkkk).

Estou iniciando mais um post da sessão Dica do Mês, hoje algo um pouco diferente, não vou apresentar linhas de código, funcionalidades novas ou algo que conheci, muito menos ferramentas. Caso você venha a me perguntar. “Mas Galvão o que exatamente você esta planejando para hoje?”

A minha resposta é simples, vou compartilhar o que descobri de novo no Microsoft SQL Server 2017 que poderá lhe ajudar em momentos de análise de seus dados, bancos de dados e até mesmo do próprio servidor SQL Server. Parece ser algo de outro mundo mas não é, muito pelo contrário, algo que você facilmente poderá encontrar sem muito esforço.

Mas antes de falar do post, vamos destacar um pouco sobre o Microsoft SQL Server 2017. Acredito que você deva saber que no último mês de outubro, a Microsoft realizou mais um lançamento de uma nova versão do Microsoft SQL Server, estou me referindo a versão 2017. Por acaso você estão utilizando esta nova versão? Caso ainda não tenha feito, aproveite e faça agora mesmo acessando o link: https://www.microsoft.com/en-us/sql-server/sql-server-2017.

Se você, assim como eu realizou o download no mesmo dia do lançamento, ou seja, dia 02/10, pode ter um certo tempo para notar que a cada nova versão, o produto esta evoluindo, tanto no seu processo de instalação que realmente é fantástico e muito prático, como também, na quantidade de recursos, funcionalidades e componentes internos apresentados a partir desta da versão 2017.

Foi pensando neste cenário que o post da sessão Dica do Mês foi concebido, apresentar um pouco das novidades internas que o Microsoft SQL Server 2017 possuí em comparação com seus antecessores.

Sendo assim, seja bem vindo ao post – Dica do Mês – Microsoft SQL Server 2017 – Relação de Novas colunas internas.

Você vai descobrir o conjunto de novos dados técnicos catalogados pelo SQL Server 2017 seremos capazes de obter em real-time……


Introdução

Afim de mostrar o que de novo foi adicionado a partir da versão 2017, decidi identificar o que internamente existe de diferente que não tínhamos na versão 2016 ou anteriores, desta forma, escolhi fazer um comparativo entre a versão 2017 e a versão 2016 SP1, lançado no último mês de abril.

Foi idealizando este cenário, que fiz a simples escolha de utilizar uma velha conhecida system view denominada sys.all_columns presente a partir do Microsoft SQL Server desde a versão 2005. Tenho quase a certeza que você conhece esta system view! Ainda não, poxa vida, isso não é um pecado, mas é algo que talvez possa lhe ser útil.

Basicamente a sys.all_columns, como boa parte das visões de sistemas, apresentam um conjunto de dados técnicos catalogados pelo Microsoft SQL Server afim de ajudar internamente o funcionamento lógico e relacional do produto, mas também, como um guia para nós profissionais de bancos de dados, quanto temos a necessidade de analisar ou identificar dados técnicos, objetos, recursos ou funcionalidades oriundas do SQL Server.

Através desta DMV, temos a capacidade de obter a relação completa de colunas que formam nossos objetos e também os próprios objetos criados pelo SQL Server no processo da instalação ou durante nossas atividades, o que me permitiu identificar os novas colunas internas adicionadas na versão 2017 categorizadas da seguinte maneira:

  • Internal Tables;
  • InLine Table-Valued Function;
  • System Tables;
  • System Views; e
  • User Tables.

A seguir apresento a relação completa das novas colunas internadas adicionadas a partir do Microsoft SQL Server 2017:

Internal Tables

  • _trusted_assemblies.create_date
  • _trusted_assemblies.created_by
  • _trusted_assemblies.description
  • _trusted_assemblies.hash
  • plan_persist_query.query_flags
  • plan_persist_query_hints.batch_sql_handle
  • plan_persist_query_hints.comment
  • plan_persist_query_hints.context_settings_id
  • plan_persist_query_hints.last_query_hint_failure_reason
  • plan_persist_query_hints.object_id
  • plan_persist_query_hints.query_hash
  • plan_persist_query_hints.query_hint_failure_count
  • plan_persist_query_hints.query_hint_id
  • plan_persist_query_hints.query_hints_flags
  • plan_persist_query_hints.query_hints
  • plan_persist_query_hints.query_id
  • plan_persist_query_hints.query_param_type
  • plan_persist_query_hints.statement_sql_handle
  • plan_persist_query_template_parameterization.comment
  • plan_persist_query_template_parameterization.last_parameterization_failure_reason
  • plan_persist_query_template_parameterization.parameterization_failure_count
  • plan_persist_query_template_parameterization.query_param_type
  • plan_persist_query_template_parameterization.query_template_flags
  • plan_persist_query_template_parameterization.query_template_hash
  • plan_persist_query_template_parameterization.query_template_id
  • plan_persist_query_template_parameterization.query_template
  • plan_persist_query_text.query_template_hash
  • plan_persist_wait_stats.count_executions
  • plan_persist_wait_stats.execution_type
  • plan_persist_wait_stats.last_query_wait_time_ms
  • plan_persist_wait_stats.max_query_wait_time_ms
  • plan_persist_wait_stats.min_query_wait_time_ms
  • plan_persist_wait_stats.plan_id
  • plan_persist_wait_stats.runtime_stats_interval_id
  • plan_persist_wait_stats.sumsquare_query_wait_time_ms
  • plan_persist_wait_stats.total_query_wait_time_ms
  • plan_persist_wait_stats.wait_category
  • plan_persist_wait_stats.wait_stats_id

Inline table-valued functions

  • dm_db_log_info.database_id
  • dm_db_log_info.file_id
  • dm_db_log_info.vlf_active
  • dm_db_log_info.vlf_begin_offset
  • dm_db_log_info.vlf_create_lsn
  • dm_db_log_info.vlf_first_lsn
  • dm_db_log_info.vlf_parity
  • dm_db_log_info.vlf_sequence_number
  • dm_db_log_info.vlf_size_mb
  • dm_db_log_info.vlf_status
  • dm_db_log_stats.active_log_size_mb
  • dm_db_log_stats.active_vlf_count
  • dm_db_log_stats.current_vlf_sequence_number
  • dm_db_log_stats.current_vlf_size_mb
  • dm_db_log_stats.database_id
  • dm_db_log_stats.log_backup_lsn
  • dm_db_log_stats.log_backup_time
  • dm_db_log_stats.log_checkpoint_lsn
  • dm_db_log_stats.log_end_lsn
  • dm_db_log_stats.log_min_lsn
  • dm_db_log_stats.log_recovery_lsn
  • dm_db_log_stats.log_recovery_size_mb
  • dm_db_log_stats.log_since_last_checkpoint_mb
  • dm_db_log_stats.log_since_last_log_backup_mb
  • dm_db_log_stats.log_truncation_holdup_reason
  • dm_db_log_stats.recovery_model
  • dm_db_log_stats.recovery_vlf_count
  • dm_db_log_stats.total_log_size_mb
  • dm_db_log_stats.total_vlf_count
  • dm_os_enumerate_filesystem.creation_time
  • dm_os_enumerate_filesystem.file_or_directory_name
  • dm_os_enumerate_filesystem.full_filesystem_path
  • dm_os_enumerate_filesystem.has_integrity_stream
  • dm_os_enumerate_filesystem.is_directory
  • dm_os_enumerate_filesystem.is_hidden
  • dm_os_enumerate_filesystem.is_read_only
  • dm_os_enumerate_filesystem.is_sparse
  • dm_os_enumerate_filesystem.is_system
  • dm_os_enumerate_filesystem.is_temporary
  • dm_os_enumerate_filesystem.last_access_time
  • dm_os_enumerate_filesystem.last_write_time
  • dm_os_enumerate_filesystem.level
  • dm_os_enumerate_filesystem.parent_directory
  • dm_os_enumerate_filesystem.size_in_bytes
  • dm_os_file_exists.file_exists
  • dm_os_file_exists.file_is_a_directory
  • dm_os_file_exists.parent_directory_exists
  • dm_sql_referenced_entities.is_incomplete
  • fn_full_dblog.AllocUnitId
  • fn_full_dblog.AllocUnitName
  • fn_full_dblog.Article ID
  • fn_full_dblog.Begin Time
  • fn_full_dblog.Beginlog Status
  • fn_full_dblog.Bulk allocated extent count
  • fn_full_dblog.Bulk allocated extent ids
  • fn_full_dblog.Bulk allocation first IAM Page ID
  • fn_full_dblog.Bulk AllocUnitId
  • fn_full_dblog.Bulk RowsetId
  • fn_full_dblog.Byte Offset
  • fn_full_dblog.Bytes Freed
  • fn_full_dblog.Checkpoint Begin
  • fn_full_dblog.Checkpoint End
  • fn_full_dblog.CHKPT Begin DB Version
  • fn_full_dblog.CHKPT End DB Version
  • fn_full_dblog.CI Index Id
  • fn_full_dblog.CI Table Id
  • fn_full_dblog.Column Offset
  • fn_full_dblog.Command Type
  • fn_full_dblog.Command
  • fn_full_dblog.Compression Info
  • fn_full_dblog.Compression Log Type
  • fn_full_dblog.Context
  • fn_full_dblog.CopyVerionInfo Source Page Id
  • fn_full_dblog.CopyVerionInfo Source Page LSN
  • fn_full_dblog.CopyVerionInfo Source Slot Count
  • fn_full_dblog.CopyVerionInfo Source Slot Id
  • fn_full_dblog.Current LSN
  • fn_full_dblog.Database Name
  • fn_full_dblog.Description
  • fn_full_dblog.Dirty Pages
  • fn_full_dblog.End AGE
  • fn_full_dblog.End Time
  • fn_full_dblog.File ID
  • fn_full_dblog.File Status
  • fn_full_dblog.FileGroup ID
  • fn_full_dblog.Flag Bits
  • fn_full_dblog.Flags
  • fn_full_dblog.Format LSN
  • fn_full_dblog.InvalidateCache Id
  • fn_full_dblog.InvalidateCache keys
  • fn_full_dblog.Last Distributed Backup End LSN
  • fn_full_dblog.Last Distributed End LSN
  • fn_full_dblog.Lock Information
  • fn_full_dblog.Log Record Fixed Length
  • fn_full_dblog.Log Record Length
  • fn_full_dblog.Log Record
  • fn_full_dblog.Log Reserve
  • fn_full_dblog.LogBlockGeneration
  • fn_full_dblog.Logical Name
  • fn_full_dblog.LSN before writes
  • fn_full_dblog.Mark Name
  • fn_full_dblog.Master DBID
  • fn_full_dblog.Master XDESID
  • fn_full_dblog.Max XDESID
  • fn_full_dblog.Meta Status
  • fn_full_dblog.Minimum LSN
  • fn_full_dblog.Modify Size
  • fn_full_dblog.New Size
  • fn_full_dblog.New Split Page
  • fn_full_dblog.New Value
  • fn_full_dblog.NewAllocUnitId
  • fn_full_dblog.Next Replicated End LSN
  • fn_full_dblog.Num Elements
  • fn_full_dblog.Num Transactions
  • fn_full_dblog.Number of Locks
  • fn_full_dblog.Offset in Row
  • fn_full_dblog.Offset
  • fn_full_dblog.Old Size
  • fn_full_dblog.Old Value
  • fn_full_dblog.Oldest Active LSN
  • fn_full_dblog.Oldest Active Transaction ID
  • fn_full_dblog.Oldest Replicated Begin LSN
  • fn_full_dblog.Operation
  • fn_full_dblog.Page ID
  • fn_full_dblog.PageFormat FormatOption
  • fn_full_dblog.PageFormat PageFlags
  • fn_full_dblog.PageFormat PageLevel
  • fn_full_dblog.PageFormat PageStat
  • fn_full_dblog.PageFormat PageType
  • fn_full_dblog.Pages Written
  • fn_full_dblog.Parent Transaction ID
  • fn_full_dblog.Partial Status
  • fn_full_dblog.PartitionId
  • fn_full_dblog.Physical Name
  • fn_full_dblog.Prepare Time
  • fn_full_dblog.Preplog Begin LSN
  • fn_full_dblog.Previous LSN
  • fn_full_dblog.Previous Page LSN
  • fn_full_dblog.Previous Savepoint
  • fn_full_dblog.Publication ID
  • fn_full_dblog.Repl CSN
  • fn_full_dblog.Repl Epoch
  • fn_full_dblog.Repl Flags
  • fn_full_dblog.Repl Min Hold LSN
  • fn_full_dblog.Repl Msg
  • fn_full_dblog.Repl Partition ID
  • fn_full_dblog.Repl Source Commit Time
  • fn_full_dblog.Replicated Records
  • fn_full_dblog.Rowbits Bit Count
  • fn_full_dblog.Rowbits Bit Value
  • fn_full_dblog.Rowbits First Bit
  • fn_full_dblog.RowFlags
  • fn_full_dblog.RowLog Contents 0
  • fn_full_dblog.RowLog Contents 1
  • fn_full_dblog.RowLog Contents 2
  • fn_full_dblog.RowLog Contents 3
  • fn_full_dblog.RowLog Contents 4
  • fn_full_dblog.RowLog Contents 5
  • fn_full_dblog.Rows Deleted
  • fn_full_dblog.RowsetId
  • fn_full_dblog.Savepoint Name
  • fn_full_dblog.Server Name
  • fn_full_dblog.Server UID
  • fn_full_dblog.Slot ID
  • fn_full_dblog.SPID
  • fn_full_dblog.Tag Bits
  • fn_full_dblog.Text Size
  • fn_full_dblog.TextPtr
  • fn_full_dblog.Transaction Begin
  • fn_full_dblog.Transaction ID
  • fn_full_dblog.Transaction Name
  • fn_full_dblog.Transaction SID
  • fn_full_dblog.Virtual Clock
  • fn_full_dblog.VLFs added
  • fn_full_dblog.Xact ID
  • fn_full_dblog.Xact Node ID
  • fn_full_dblog.Xact Node Local ID
  • fn_full_dblog.Xact Type
  • fn_get_audit_file.affected_rows
  • fn_get_audit_file.application_name
  • fn_get_audit_file.client_ip
  • fn_get_audit_file.duration_milliseconds
  • fn_get_audit_file.response_rows
  • fn_xe_file_target_read_file.timestamp_utc

System Tables

  • syscscolsegments.container_id
  • syscsdictionaries.container_id

User Tables

  • MSreplication_options.install_failures
  • MSreplication_options.major_version
  • MSreplication_options.minor_version
  • MSreplication_options.optname
  • MSreplication_options.revision
  • MSreplication_options.value
  • spt_monitor.connections
  • spt_monitor.cpu_busy
  • spt_monitor.idle
  • spt_monitor.io_busy
  • spt_monitor.lastrun
  • spt_monitor.pack_errors
  • spt_monitor.pack_received
  • spt_monitor.pack_sent
  • spt_monitor.total_errors
  • spt_monitor.total_read
  • spt_monitor.total_write

Views

  • all_columns.graph_type_desc
  • all_columns.graph_type
  • availability_groups.cluster_type_desc
  • availability_groups.cluster_type
  • availability_groups.required_synchronized_secondaries_to_commit
  • availability_groups.sequence_number
  • columns.graph_type_desc
  • columns.graph_type
  • computed_columns.graph_type_desc
  • computed_columns.graph_type
  • database_automatic_tuning_mode.actual_state_desc
  • database_automatic_tuning_mode.actual_state
  • database_automatic_tuning_mode.desired_state_desc
  • database_automatic_tuning_mode.desired_state
  • database_automatic_tuning_options.actual_state_desc
  • database_automatic_tuning_options.actual_state
  • database_automatic_tuning_options.desired_state_desc
  • database_automatic_tuning_options.desired_state
  • database_automatic_tuning_options.name
  • database_automatic_tuning_options.reason_desc
  • database_automatic_tuning_options.reason
  • database_credentials.principal_id
  • database_files.is_persistent_log_buffer
  • database_query_store_options.wait_stats_capture_mode_desc
  • database_query_store_options.wait_stats_capture_mode
  • database_scoped_configurations.is_value_default
  • database_scoped_credentials.principal_id
  • databases.is_temporal_history_retention_enabled
  • dm_db_column_store_row_group_physical_stats.closed_time
  • dm_db_column_store_row_group_physical_stats.created_time
  • dm_db_column_store_row_group_physical_stats.deleted_rows
  • dm_db_column_store_row_group_physical_stats.delta_store_hobt_id
  • dm_db_column_store_row_group_physical_stats.generation
  • dm_db_column_store_row_group_physical_stats.has_vertipaq_optimization
  • dm_db_column_store_row_group_physical_stats.index_id
  • dm_db_column_store_row_group_physical_stats.object_id
  • dm_db_column_store_row_group_physical_stats.partition_number
  • dm_db_column_store_row_group_physical_stats.row_group_id
  • dm_db_column_store_row_group_physical_stats.size_in_bytes
  • dm_db_column_store_row_group_physical_stats.state_desc
  • dm_db_column_store_row_group_physical_stats.state
  • dm_db_column_store_row_group_physical_stats.total_rows
  • dm_db_column_store_row_group_physical_stats.transition_to_compressed_state_desc
  • dm_db_column_store_row_group_physical_stats.transition_to_compressed_state
  • dm_db_column_store_row_group_physical_stats.trim_reason_desc
  • dm_db_column_store_row_group_physical_stats.trim_reason
  • dm_db_file_space_usage.modified_extent_page_count
  • dm_db_mirroring_connections.address
  • dm_db_tuning_recommendations.details
  • dm_db_tuning_recommendations.execute_action_duration
  • dm_db_tuning_recommendations.execute_action_initiated_by
  • dm_db_tuning_recommendations.execute_action_initiated_time
  • dm_db_tuning_recommendations.execute_action_start_time
  • dm_db_tuning_recommendations.is_executable_action
  • dm_db_tuning_recommendations.is_revertable_action
  • dm_db_tuning_recommendations.last_refresh
  • dm_db_tuning_recommendations.name
  • dm_db_tuning_recommendations.reason
  • dm_db_tuning_recommendations.revert_action_duration
  • dm_db_tuning_recommendations.revert_action_initiated_by
  • dm_db_tuning_recommendations.revert_action_initiated_time
  • dm_db_tuning_recommendations.revert_action_start_time
  • dm_db_tuning_recommendations.score
  • dm_db_tuning_recommendations.state
  • dm_db_tuning_recommendations.type
  • dm_db_tuning_recommendations.valid_since
  • dm_db_xtp_checkpoint_internals.checkpoint_id
  • dm_db_xtp_checkpoint_internals.checkpoint_timestamp
  • dm_db_xtp_checkpoint_internals.is_synchronized
  • dm_db_xtp_checkpoint_internals.last_segment_lsn
  • dm_db_xtp_checkpoint_internals.recovery_lsn
  • dm_exec_query_stats.last_columnstore_segment_reads
  • dm_exec_query_stats.last_columnstore_segment_skips
  • dm_exec_query_stats.max_columnstore_segment_reads
  • dm_exec_query_stats.max_columnstore_segment_skips
  • dm_exec_query_stats.min_columnstore_segment_reads
  • dm_exec_query_stats.min_columnstore_segment_skips
  • dm_exec_query_stats.total_columnstore_segment_reads
  • dm_exec_query_stats.total_columnstore_segment_skips
  • dm_exec_requests.is_resumable
  • dm_os_enumerate_fixed_drives.drive_type_desc
  • dm_os_enumerate_fixed_drives.drive_type
  • dm_os_enumerate_fixed_drives.fixed_drive_path
  • dm_os_enumerate_fixed_drives.free_space_in_bytes
  • dm_os_host_info.host_distribution
  • dm_os_host_info.host_platform
  • dm_os_host_info.host_release
  • dm_os_host_info.host_service_pack_level
  • dm_os_host_info.host_sku
  • dm_os_host_info.os_language_version
  • dm_os_memory_objects.partition_type_desc
  • dm_os_nodes.cpu_count
  • dm_os_sys_info.cores_per_socket
  • dm_os_sys_info.numa_node_count
  • dm_os_sys_info.process_physical_affinity
  • dm_os_sys_info.socket_count
  • dm_os_worker_local_storage.gq_address
  • dm_tran_global_transactions.max_csn
  • dm_tran_global_transactions_enlistments.snapshot_timestamp
  • dm_tran_global_transactions_log.commit_timestamp
  • dm_tran_version_store_space_usage.database_id
  • dm_tran_version_store_space_usage.reserved_page_count
  • dm_tran_version_store_space_usage.reserved_space_kb
  • dm_xe_session_targets.bytes_written
  • dm_xe_sessions.buffer_full_count
  • dm_xe_sessions.buffer_processed_count
  • dm_xe_sessions.total_bytes_generated
  • external_libraries.external_library_id
  • external_libraries.language
  • external_libraries.name
  • external_libraries.principal_id
  • external_libraries.scope_desc
  • external_libraries.scope
  • external_library_files.content
  • external_library_files.external_library_id
  • external_library_files.platform_desc
  • external_library_files.platform
  • hash_indexes.auto_created
  • hash_indexes.is_ignored_in_optimization
  • identity_columns.graph_type_desc
  • identity_columns.graph_type
  • index_resumable_operations.index_id
  • index_resumable_operations.last_max_dop_used
  • index_resumable_operations.last_pause_time
  • index_resumable_operations.name
  • index_resumable_operations.object_id
  • index_resumable_operations.page_count
  • index_resumable_operations.partition_number
  • index_resumable_operations.percent_complete
  • index_resumable_operations.sql_text
  • index_resumable_operations.start_time
  • index_resumable_operations.state_desc
  • index_resumable_operations.state
  • index_resumable_operations.total_execution_time
  • indexes.auto_created
  • indexes.is_ignored_in_optimization
  • indexes.suppress_dup_key_messages
  • key_constraints.is_enforced
  • masked_columns.graph_type_desc
  • masked_columns.graph_type
  • master_files.is_persistent_log_buffer
  • query_store_plan.plan_forcing_type_desc
  • query_store_plan.plan_forcing_type
  • query_store_runtime_stats.avg_log_bytes_used
  • query_store_runtime_stats.avg_num_physical_io_reads
  • query_store_runtime_stats.avg_tempdb_space_used
  • query_store_runtime_stats.last_log_bytes_used
  • query_store_runtime_stats.last_num_physical_io_reads
  • query_store_runtime_stats.last_tempdb_space_used
  • query_store_runtime_stats.max_log_bytes_used
  • query_store_runtime_stats.max_num_physical_io_reads
  • query_store_runtime_stats.max_tempdb_space_used
  • query_store_runtime_stats.min_log_bytes_used
  • query_store_runtime_stats.min_num_physical_io_reads
  • query_store_runtime_stats.min_tempdb_space_used
  • query_store_runtime_stats.stdev_log_bytes_used
  • query_store_runtime_stats.stdev_num_physical_io_reads
  • query_store_runtime_stats.stdev_tempdb_space_used
  • query_store_wait_stats.avg_query_wait_time_ms
  • query_store_wait_stats.execution_type_desc
  • query_store_wait_stats.execution_type
  • query_store_wait_stats.last_query_wait_time_ms
  • query_store_wait_stats.max_query_wait_time_ms
  • query_store_wait_stats.min_query_wait_time_ms
  • query_store_wait_stats.plan_id
  • query_store_wait_stats.runtime_stats_interval_id
  • query_store_wait_stats.stdev_query_wait_time_ms
  • query_store_wait_stats.total_query_wait_time_ms
  • query_store_wait_stats.wait_category_desc
  • query_store_wait_stats.wait_category
  • query_store_wait_stats.wait_stats_id
  • sequences.last_used_value
  • spatial_indexes.auto_created
  • spatial_indexes.is_ignored_in_optimization
  • spt_values.high
  • spt_values.low
  • spt_values.name
  • spt_values.number
  • spt_values.status
  • spt_values.type
  • syscscontainers.blob_container_id
  • syscscontainers.blob_container_type
  • syscscontainers.blob_container_url
  • system_columns.graph_type_desc
  • system_columns.graph_type
  • tables.history_retention_period_unit_desc
  • tables.history_retention_period_unit
  • tables.history_retention_period
  • tables.is_edge
  • tables.is_node
  • trusted_assemblies.create_date
  • trusted_assemblies.created_by
  • trusted_assemblies.description
  • trusted_assemblies.hash
  • xml_indexes.auto_created
  • xml_indexes.is_ignored_in_optimization

Importante: Vale ressaltar que estas novas colunas estão compondo o conjunto atual de recursos internos já existentes no Microsoft SQL Server, não estou me referindo a novas Internal Tables, DMVs ou Views adicionadas ao produto na versão 2017.

Com isso chegamos ao final de mais um post da sessão Dica do Mês, espero que você tenha gostado, então do meu tradicional encerramento, quero destacar em algumas destas novas colunas serão destaco em posts futuros do meu blog.


Referências

https://technet.microsoft.com/pt-br/library/ms178596(v=sql.110).aspx

https://technet.microsoft.com/pt-br/library/ms188021(v=sql.110).aspx

https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-all-columns-transact-sql

Posts Anteriores

https://pedrogalvaojunior.wordpress.com/2017/08/26/dica-do-mes-simulando-a-insercao-de-uma-massa-de-dados-aleatoria/

https://pedrogalvaojunior.wordpress.com/2017/05/23/conhecendo-e-aplicando-o-uso-de-atualizacao-de-estatisticas-incrementais/

https://pedrogalvaojunior.wordpress.com/2017/04/13/dica-do-mes-microsoft-sql-server-identificando-as-transacoes-que-estao-utilizando-o-transact-log/

https://pedrogalvaojunior.wordpress.com/2017/03/01/dica-do-mes-microsoft-sql-server-2016-sp1-novo-argumento-use-hint-disponivel-para-query-hints/

https://pedrogalvaojunior.wordpress.com/2017/01/16/dica-do-mes-conhecendo-a-nova-dmf-sys-dm_exec_input_buffer-no-microsoft-sql-server-2016/

Conclusão

A cada versão do Microsoft SQL Server evolui, a gama de dados técnicos catalogados que nos permitem analisar e ajudar em possíveis cenários de administração ou tomadas de decisão cresce de forma exponencial, com isso, temos um conjunto inimaginável de possibilidades e alternativas que nos possibilitam superior nossos desafios.

Esse é o Microsoft SQL Server ainda mais poderoso na versão 2017.

 

Agradecimentos

Mais uma vez obrigado por sua visita, agradeço sua atenção, fique a vontade para enviar suas críticas, sugestões, observações e comentários.

Um forte abraço, nos encontramos no próximo post a ser publicado no mês de janeiro de 2018.

Vai SQL Server, Vai SQL Server…..

Abraços.

Microsoft SQL Server Migration Assistant v7.6


A Microsoft disponibilizou para download nesta semana o Microsoft SQL Server Migration Assistant v7.6. Disponível para MySQL, SAP Adaptive Server Enterprise (ex-Sybase), Oracle Database, IBM DB2 e Access, o Microsoft SQL Server Migration Assistant é uma ferramenta gratuita que simplifica o processo de migração destes produtos para o SQL Server e Azure SQL.

A ferramenta automatiza todos os aspectos da migração. A versão 7.6 inclui o suporte para:

– Migração do MySQL 4.1 e posteriores para todas as edições do SQL Server 2008, SQL Server 2008 R2, SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server 2017 e Azure SQL DB.

– Migração do Access 97 e posteriores para todas as edições do SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server 2017 e Azure SQL DB.

– Migração do SAP Adaptive Server Enterprise (ex-Sybase) 11.9 e posteriores para todas as edições do SQL Server 2008, SQL Server 2008 R2, SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server 2017 e Azure SQL DB.

– Migração do Oracle Database 9.0 e posteriores para todas as edições do SQL Server 2008, SQL Server 2008 R2, SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server 2017, Azure SQL DB e Azure SQL Data Warehouse.

– Migração do IBM DB2 9.0 e 10.0 no z/OS e das versões 9.7 e 10.1 no Linux/Unix/Windows para o SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server 2017 e Azure SQL DB.

IMPORTANTE: A versão 32 bits da ferramenta foi descontinuada. Ela está disponível agora somente para plataformas 64 bits.

Microsoft SQL Server Migration Assistant v7.6

Baixe o Microsoft SQL Server Migration Assistant v7.6

Download da versão 7.6 para MySQL
Download da versão 7.6 para Access
Download da versão 7.6 para SAP Adaptive Server Enterprise (ex-Sybase)
Download da versão 7.6 para Oracle Database
Download da versão 7.6 para IBM DB2

O Microsoft SQL Server Migration Assistant v7.6 é compatível com o Windows 10, Windows 7, Windows 8, Windows 8.1, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2 e Windows Server 2016. Ele também requer o .NET Framework 4.5.2 ou posterior.

As páginas de download também listam alguns requisitos específicos, como MySQL Connector/ODBC e SAP ASE OLEDB/ADO.Net/ODBC provider.

Fontes e Direitos Autorais: Microsoft.com – https://www.microsoft.com/en-us/download/details.aspx?id=54258&WT.mc_id=rss_alldownloads_all – 25/09/2017.

Dica do Mês – Utilizando a Trace Flag 9292 para exibir objetos estatísticos úteis


 

Olá comunidade, boa tarde.

Tudo bem? Estamos se aproximando dos últimos dias de férias ou recesso para grande maioria dos professores e profissionais de educação espalhados por todo Brasil. E ai, já esta preparado para voltar a luta? Posso dizer tranquilamente que sim, eu estou pronto para voltar a conviver com meus alunos e amigos de trabalho.

Antes de começarmos a falar sobre o post de hoje, nada mais justo começar agradecendo como de costume a você está aqui neste momento acessando meu blog. Espero que possa ter encontrado o que precisa, bem como, esteja gostando do conteúdo publicado, fique a vontade para entrar em contato expressando suas opiniões e demais pensamentos.

Neste novo post da sessão Dica do Mês, vou apresentar um recurso que imagino ser conhecido por muitos ou principalmente pelos profissionais de banco de dados, estou me referindo as Trace Flag ou sinalizador de rastreamento em português.

Você já ouvir falar sobre isso ou já utilizou? Eu imagino que sim pois aqui no meu blog diversos posts e artigos foram publicado ao longo dos últimos anos sobre este tipo de recurso. Hoje mais especificamente vou destacar o uso da Trace Flag 9292, por acaso você já utilizou em algum momento esta trace flag?

Bom independente da sua reposta vamos conhecer um pouco mais sobre ela, sua forma de uso e como poderá nos ajudar a entender ainda mais o funcionamento das estatísticas e seus chamados objetos úteis para análise do plano de execução.

E ai esta curioso para saber um pouco sobre este recurso? Eu estou, sendo assim, vamos em frente, seja bem vindo ao post Dica do Mês – Utilizando a Trace Flag 9292 para exibir objetos estatísticos úteis.

Vamos em frente…..


Introdução

Todos sabemos que as estatísticas desempenham um papel muito importante dentro do SQL Server, como também, sabemos que as estatísticas são usadas pelo otimizador de consultas para gerar o plano de execução para cada consulta.
Então a questão é, podemos verificar qual objeto estatístico é útil para a execução da consulta? Sim, usando o Trace Flag do SQL Server 9292. Este é um do sinalizador de rastreamento que pode ser usado durante a solução de problemas.
Esse sinalizador de rastreamento é usado para obter o relatório sobre objetos de estatísticas considerados como “interessantes” ou “úteis” pelo otimizador de consulta durante a compilação ou recompilação de consulta.

Adicionada ao Microsoft SQL Server 2008 após a instalação do service pack 1 e mantida até as atuais versões, no momento em tomamos a decisão de utilizar a Trace Flag 9292, orientamos o SQL Server a apresentar todos os objetos estatísticos considerados úteis por parte do plano de execução para realizar o processamento e retorno dos dados.

O uso da Trace Flag 9292 dentro de uma sessão ou query específica, nos ajuda a entender e conhecer como as estatísticas e seus elementos podem mudar totalmente a maneira que o plano de execução é idealizado, armazenado e processado.

Através dela podemos obter um relatório sobre as estatíticas para cada objeto envolvido em nossa query, onde estes supostos objetos devem ser considerados úteis, ou melhor dizendo válidos e aplicáveis no decorrer do caminho realizado até a apresentação do resultado.

Esta é uma trace flag que pode ser usada durante a resolução de problemas, onde sua função é apresentar na guia de mensagens do Management Studio, um pequeno cabeçalho contendo informações estatísticas sobre cada componente útil e válido para formas os dados estatísticos de processamento da query. Este cabeçalho é conhecido como Stats header loaded.

Para ativar a trace flag utilize o comando DBCC TraceON (9292) ou DBCC TraceOFF (9292) para desativar, ou se preferir utilize a opção QueryTraceOn em sua respectiva query.

Agora que já conhecemos um pouco mais sobre os conceitos desta trace flag, chegou a hora de colocar as mãos no teclado e conhecer melhor o funcionamento da flag 9292 e de que forma ela poderá impactar o trabalho do Microsoft SQL Server, nos permitindo identificar os objetos úteis processados ou candidatos a processamento por parte do Query Processor em conjunto com Execution Plan.

Preparando o ambiente

Nosso ambiente será bastante simples, basicamente criaremos um banco de dados denominado DBTrace9292, constituído de uma tabela denominada TBTrace9292, para tal utilizaremos o Bloco de Código 1 que apresenta a criação dos respectivos objetos:

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

— Acessando —
Use DBTrace9292
Go

— Criando a Tabela TBTrace9292 —
Create Table TBTrace9292
(Codigo Int Identity(1,1) Primary Key,
Valores Int,
Descricao Varchar(100))
Go

Após a criação dos objetos básicos, nosso próximo passo será a criação de índice nonclustered para coluna Valores que nos permitirá fazer o uso de estatísticas de processamento para esta coluna durante o processo de inserção de dados, conforme apresenta o Bloco de Código 2 apresentado abaixo:

— Bloco de Código 2 —
— Criando o Índice NonClustered IND_TBTrace9292Valores —
Create NonClustered Index IND_TBTrace9292Valores on TBTrace9292(Valores)
Go

— Inserindo uma linha de registro na Tabela TBTrace9292 —
Insert Into TBTrace9292
Values(2000,’pedrogalvaojunior.wordpress.com’)
Go

— Inserindo 1.000 linhas de registros na Tabela TBTrace9292 —
Insert Into TBTrace9292
Values(4000,’pedrogalvaojunior.wordpress.com’)
Go 1000

Note que existir uma pequena mais importante diferença entre os dois Inserts, no primeiro estamos inserindo uma linha de registro na tabela TBTrace9292. No segundo criamos em tempo de execução um pequeno bloco de inserção de linhas, sendo este processado 1.000 vezes, inserindo então 1.000 linhas.

Seguindo em frente, o Bloco de Código 3 será utilizado para criarmos uma Stored Procedure denominada P_PesquisarValores como forma para buscar os respectivos registros armazenados na tabela TBTrace9292. A seguir apresento o Bloco de Código 3:

— Bloco de Código 3 –
— Criando a Stored Procedure P_PesquisarValores —
Create Procedure P_PesquisarValores @Valor int
As
Begin
Select Descricao from TBTrace9292
Where Valores = @Valor
OPTION (RECOMPILE)
End
Go

Se você for como eu, normalmente gosto de fazer uma análise de código antes de colocar em prática no meu ambiente, sendo assim, vamos lá. Analisando de forma superficial a Stored Procedure P_PesquisarValores a princípio não apresenta nada muito especial ou de grande complexidade em seu código, mas sim o uso de opção Recompile que justamente vai orientar o plano de execução a recompilar a  P_PesquisarValores no momento da sua execução, forçando assim que a cada execução um novo plano de execução seja criado em conjunto com uma nova análise estatística e seus demais elementos.

O próximo passo consiste na pesquisa de um dos valores armazenados na tabela TBTrace9292 através da execução e processamento da Stored Procedure P_PesquisarValores. Para este passo vamos utilizar o Bloco de Código 4 a seguir, antes de sua execução recomendo habilitar a apresentação do Plano de Execução Atual no SQL Server Management Studio através do botão Include Actual Execution Plan ou simplesmente através da tecla de atalho CTRL+M.

— Bloco de Código 4 —
— Habilitando as TraceFlags 9292 e 3604 —
DBCC TraceOn(9292,3604,-1)
Go

Dica: Utilize o comando DBCC TraceStatus WITH NO_INFOMSGS para verificar quais Trace Flags estão habilitadas em qual nível de escopo.

— Execuntando a Stored Procedure P_PesquisarValores —
Exec P_PesquisarValores 4000
Go

Pois bem, após a execução do Bloco de Código 4, o Microsoft SQL Server realizou o processamento da nossa Stored Procedure P_PesquisarValores realizando uma busca de todas as linhas de registros que possuem o valor 4.000, onde obrigatoriamente foram retornadas 1.000 linhas de registros.

Até ai nada de novo ou surpreende, o que justamente eu quero mostrar para vocês é o que o Management Studio apresenta na guia Messages após o processamento do Bloco de Código 4, conforme apresenta a Figura 1 abaixo:

Note que o cabeçalho retornado pela Trace Flag 9292 conhecido como Stats header loaded esta apresentando os objetos realmente utilizados para o processamento de nossa query, bem como, os objetos considerados úteis e necessários para criação, compilação e processamento do plano de execução envolvidos na execução, sendo eles:

  • Database: DBTrace9292;
  • Table: TBTrace9292,
  • Index: IND_TBTrace9292Valores, sendo este do tipo Nonclustered;
  • Column: Valores; e
  • EmptyTable: False, representa que a tabela possui linhas de registro.

Perfeito, perfeito, ai esta a prova que a Trace Flag 9292 nos permite identificar de forma simples, coerente e muito intuitiva todos os objetos envolvidos na execução de uma query, stored procedure ou demais elementos que permitem a criação de um plano de execução.

Desta forma, chegamos ao final de mais um post, tendo a sensação de dever cumprido, espero que você tenha gostado, como sempre o Microsoft SQL Server nos surpreende com a sua capacidade e potencialidade de recursos.


Referências

https://thomaslarock.com/2016/06/sql-server-Trace-flags/

https://pedrogalvaojunior.wordpress.com/2016/02/26/02-para-que-serve/

DBCC TRACEOFF (Transact-SQL)

DBCC TRACEON (Transact-SQL)

DBCC TRACESTATUS (Transact-SQL)

EXECUTE (Transact-SQL)

Query Hints (Transact-SQL)

Post Anteriores

https://pedrogalvaojunior.wordpress.com/2017/05/23/conhecendo-e-aplicando-o-uso-de-atualizacao-de-estatisticas-incrementais/

https://pedrogalvaojunior.wordpress.com/2017/04/13/dica-do-mes-microsoft-sql-server-identificando-as-transacoes-que-estao-utilizando-o-transact-log/

https://pedrogalvaojunior.wordpress.com/2017/03/01/dica-do-mes-microsoft-sql-server-2016-sp1-novo-argumento-use-hint-disponivel-para-query-hints/

https://pedrogalvaojunior.wordpress.com/2017/01/16/dica-do-mes-conhecendo-a-nova-dmf-sys-dm_exec_input_buffer-no-microsoft-sql-server-2016/

https://pedrogalvaojunior.wordpress.com/2016/11/28/dica-do-mes-sql-server-2016-sp1-comando-create-or-alter/

https://pedrogalvaojunior.wordpress.com/2016/10/24/dica-do-mes-sql-server-2016-obtendo-informacoes-sobre-o-cache-de-execucao-de-funcoes/

Conclusão

Muitas vezes temos dificuldade em entender como um determinado recurso ou funcionalidade esta sendo utilizada pelo Microsoft SQL Server, com também, de que maneira este elemento poderá impactar nosso ambiente.

Neste post foi possível apresentar como a Trace Flag 9292 nos permite identificar quais objetos estão sendo utilizando durante o processamento e execução de uma determinada query. Um recurso de fácil configuração tanto para ser ativado como também desativado a qualquer momento ou necessidade.

Recomendo que você realize diversos testes e validações antes de fazer qualquer tipo de uso de uma trace flag em seu ambiente de produção, isso também se aplica a Trace Flag 9292.

Agradecimentos

Mais uma vez obrigado por sua visita, agradeço sua atenção, fique a vontade para enviar suas críticas, sugestões, observações e comentários.

Um forte abraço, nos encontramos em breve com mais um post da sessão Dica do Mês.

Valeu….