MCDBA Brasil


  • Home
  • Sobre
  • Contato

Livros





Links Rápidos

SQL Server Builds (All Versions/Editions)


Download SQL Server 2017 (trial)


SQL Server 2017 Feature Pack


SQL Server 2016 Feature Pack


Cumulative Update SQL Server 2017 builds


Cumulative Update SQL Server 2016 builds


Cumulative Update SQL Server 2014 builds


Cumulative Update SQL Server 2012 builds


SQL Server 2005/2008 Samples Databases


Documentando o Servidor SQL Server


Analisando a Performance do Servidor-CheckList


Virtual PASS PT


Faça parte do maior virtual chapter do PASS com conteúdos técnicos em Português sobre SQL Server.

Todos os meses um evento Online para você! Acompanhe aqui os WebCasts já agendados

Sindicalize seu blog ou site ao VirtualPASSPT

SQL Server Blogs

SQL Server Query Processing Team


SQL Programmability & API Development Team


SQL Server Manageability Team


Latin America Support Team


Database + Disk + Performance


Microsoft SQL Server Support


SQL CLR Team


SQL Query Optimization Team


SQL 2005 Code Samples


SQL Server Express Team


SQL SMO Samples


SQL Storage Engine Team


SQL CAT Team


SQL Protocols Team


PSS SQL Server Engineers


Slava Oks on SQLOS


Ken Henderson’s blog


LUTI@Microsoft Blog


kimberly L. Trip’s blog


Fernando Garcia Blog

Dica da Semana

Recuperando as Colunas da Cláusula INCLUDE

por Nilton Pinheiro janeiro 19, 2009 Nenhum comentário

Ok, para exemplificar vamos pegar como exemplo a tabela Person.Contact do banco de dados AdventureWorks. Para saber todos os índices desta tabela podemos executar a procedure de sistema sp_helpindex…correto? Correto! Então ao executar a procedure temos o seguinte:


sp_helpindex [Person.Contact]


index_name                  index_description                                index_keys
———————– ————————————————- ————–
AK_Contact_rowguid nonclustered, unique located on PRIMARY rowguid
IX_Contact_EmailAddress
nonclustered located on PRIMARY EmailAddress
PK_Contact_ContactID
clustered, unique, primary key located on PRIMARY ContactID



Podemos ver que a tabela possui 3 índices, sendo 1 CLUSTERED (PK_Contact_ContactID) e 2 NONCLUSTERED. Porém como cito
no início, usando a sp_helpindex nós não temos como saber se um dos índices NONCLUSTERD foi criado usando a cláusula INCLUDE e consequentemente possui outros colunas no índice.


Isso fica claro se usarmos a isntrução abaixo para alterar o índice IX_Contact_EmailAddress e incluir a coluna FirstName como INCLUDE…


CREATE INDEX IX_Contact_EmailAddress ON Person.Contact (EmailAddress) INCLUDE (FirstName) WITH (DROP_EXISTING =ON)


Ao executarmos a sp_helpindex novamente, verá que temosexatamente o mesmo resultado da primeira execução.


Então vem a pergunta: Como fazer para saber se um índice possui outras colunas como INCLUDE? Bom, neste caso você pode reescrever a procedure sp_helpindex ou ainda usar as DMVs do SQL Server 2005.


Quanto a reescrever a sp_helpindex, não perca tempo pois a MVP Kimberly Tripp já fez isso para você, basta ler o artigo sp_helpindex2 to show included columns e baixar o script na faixa. Inclusive com versão para o SQL 2005 e SQL 2008.


Quanto a usar DMVs, o script abaixo é tudo o que você precisa. Ao executá-lo você verá se os índices possuem outras colunas como INCLUDE. No nosso exemplo, a coluna “colum usage” que lhe indica que a coluna FirstName está como INCLUDE para o índice IX_Contact_EmailAddress.


— Verifica se coluna está como INCLUDE
SELECT [object_name] = object_name(ic.object_id),index_name = i.name, ‘column’ = c.name,‘column usage’ = CASE ic.is_included_column WHEN 0 then ‘KEY’ ELSE ‘INCLUDED’ END
FROM
sys.index_columns ic JOIN sys.columns c
ON ic.object_id = c.object_id
AND ic.column_id = c.column_id JOIN sys.indexes i
ON i.object_id = ic.object_id AND i.index_id = ic.index_id
WHERE ic.object_id = object_id(‘Person.Contact’)


Usando nosso exemplo da tabela Person.Contact, temos o seguinte resultado:


object_name  index_name                 column                   column usage
———— ————————– ———————— ————
Contact      PK_Contact_ContactID       ContactID                KEY
Contact      AK_Contact_rowguid         rowguid                  KEY
Contact      IX_Contact_EmailAddress    EmailAddress             KEY
Contact      IX_Contact_EmailAddress    FirstName                INCLUDED
Contact      PXML_Contact_AddContact    AdditionalContactInfo    KEY


Bom, agora ficoou fácil certo?


Abraços
Nilton Pinheiro

Avaliação:
Compartilhe:
  • Anterior Enquete: Quando você pretende instalar o SP3 em producão?17 anos atrás
  • Próximo High-Availability Hands-On Labs and SQL Server 2008 JumpStart Materials17 anos atrás

Deixe uma resposta Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

MVP Reconnect Award

Categorias

  • Artigos (359)
  • Dica da Semana (95)
  • Documentação (54)
  • Downloads (113)
  • MSDE 2000 (3)
  • Sem categoria (1)
  • Tutoriais (9)

Posts recentes

  • #FechouBrasil #PartiuPortugal
  • Brigando com o erro “The cached MSI file is missing”
  • MCDBABRASIL está de volta
  • Documentando o Servidor SQL Server
  • Brigando com os Erros 17182, 17826 e 17120

SQL Server AlwaysOn Video Series

Video1: Introdução ao SQLServer2012 AlwaysOn


Video2: Introdução ao SQLServer2012 AlwaysOn Availability Group


Video3: Introdução ao SQLServer2012 AlwaysOn AVG-Demo


Video4: Introdução ao SQLServer2012 AlwaysOn Listener


Video5: Introdução ao SQLServer2012 AlwaysOn Readable Secondaries


Video6: Introdução ao SQLServer2012 AlwaysOn Readable Secondaries-Demo


Video7: Introdução ao SQLServer2012 AlwaysOn Failover Clustering


Serie SQL Server Failover Clustering End-to-End

Parte 1: Configuração da Rede e Ambiente


Parte 2: Configurando o Windows 2008 R2 Domain Controler e DNS


Parte 3: Preparando os nós para o Failover Cluster


Parte 4: Configurando um Failover Cluster de 2 nós


Parte 5: Configurando as LUNs no iSCSI Software Target (Parte 1)


Parte 6: Configurando as LUNs no iSCSI Software Target (Parte 2)


Parte 7: Apresentando as LUNs para os nós do Failover Cluster


Parte 8: Configurando os discos no Failover Cluster


Parte 9: Instalando a primeira instância virtual do SQL Server 2008


Parte 10: Instalando a segunda instância virtual do SQL Server 2008


Parte 11: Instalando e Configurando o MSDTC no Failover Cluster


Parte 12: Configurando Mount Points no Cluster e SQL Server 2008


Vídeo Extra: Removendo uma Instância do SQL Server 2008 R2 em Cluster


Alta Disponibilidade no SQL Server 2008 R2: Failover Clustering Overview


Alta Disponibilidade no SQL Server 2008 R2: Failover Clustering na Prática

Menu

  • Home
  • Sobre
  • Contato

Mais

  • RSS Feeds
2026 MCDBA Brasil.