Baixei o SQL Server First Aid Kit do site de Brent Ozar. Quando tentei executar o script sp_BlitzIndex em meu banco de dados mestre por meio do Microsoft Sql Server Management Studio enquanto estava conectado como administrador de nível de servidor de banco de dados do Azure, recebi o seguinte erro:
Msg 262, Nível 14, Estado 18, Procedimento sp_BlitzIndex, Linha 18 Permissão CREATE PROCEDURE negada no banco de dados 'mestre'.
Criei com sucesso o procedimento na instância do banco de dados que queria testar. Ao executar o procedimento, recebi um erro informando:
Msg 50000, Nível 16, Estado 1, Linha 1265 Nome de objeto inválido 'mydatabase.sys.partitions'.
Em seguida, tentei ser inteligente e executar o código do procedimento armazenado diretamente no banco de dados mestre sem criar o procedimento armazenado e obtive o seguinte erro:
Msg 50000, Nível 15, Estado 1, Linha 1267 A referência ao banco de dados e/ou nome do servidor em 'mydatabase.sys.indexes' não é suportada nesta versão do SQL Server.
Não me sinto confiante o suficiente para começar a brincar com o funcionamento interno de ~ 2.700 linhas de lógica heurística de índice. Existe uma maneira rápida e fácil de fazer com que esse procedimento armazenado funcione bem no Banco de Dados SQL do Azure ou devo procurar em outro lugar uma ferramenta/procedimento armazenado de análise de índice?
Kendra aqui (o autor de
sp_BlitzIndex
)Em primeiro lugar, obrigado por se interessar pelo procedimento e experimentá-lo.
O Azure não expõe todas as exibições de gerenciamento dinâmico que obtemos no produto in a box. Na verdade, faço referência a
sys.dm_db_partition_stats
, mas há outras informações que preciso obtersys.partitions
para outros usuários. (Está usando compressão? Que tipo?)Não tive tempo de escrever um teste de uma versão específica do Azure, apenas porque não tive muita demanda por ela. Mas sua pergunta me diz que há mais interesse do que eu sabia - então é isso!
Vou, no mínimo, analisar a implementação de algum tratamento de erros para que você saiba de uma maneira elegante. (Este é um alvo em movimento, porque o Azure também expandiu os recursos disponíveis para os usuários.)
Algumas das consultas 'padrão' para identificar índices ausentes são executadas no Azure, por exemplo :
Eles provavelmente serão muito menos úteis do que
sp_BlitzIndex
, mas vale a pena tentar.Aqui está outra consulta útil para identificar as principais consultas, que você pode executar com o plano de execução para identificar índices ausentes por meio do SQL Management Studio. Tedioso fazê-los um por um, mas melhor do que nada: