AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 108989
Accepted
Erik
Erik
Asked: 2015-08-05 09:31:31 +0800 CST2015-08-05 09:31:31 +0800 CST 2015-08-05 09:31:31 +0800 CST

Como faço para que o sp_BlitzIndex de Brent Ozar seja executado no Azure?

  • 772

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?

t-sql azure-sql-database
  • 2 2 respostas
  • 2231 Views

2 respostas

  • Voted
  1. Best Answer
    Kendra Little
    2015-08-05T13:46:40+08:002015-08-05T13:46:40+08:00

    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 obter sys.partitionspara 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.)

    • 27
  2. Rory
    2016-07-27T16:26:56+08:002016-07-27T16:26:56+08:00

    Algumas das consultas 'padrão' para identificar índices ausentes são executadas no Azure, por exemplo :

      SELECT
      migs.avg_total_user_cost * (migs.avg_user_impact / 100.0) * (migs.user_seeks + migs.user_scans) AS improvement_measure,
      'CREATE INDEX [missing_index_' + CONVERT (varchar, mig.index_group_handle) + '_' + CONVERT (varchar, mid.index_handle)
      + '_' + LEFT (PARSENAME(mid.statement, 1), 32) + ']'
      + ' ON ' + mid.statement
      + ' (' + ISNULL (mid.equality_columns,'')
        + CASE WHEN mid.equality_columns IS NOT NULL AND mid.inequality_columns IS NOT NULL THEN ',' ELSE '' END
        + ISNULL (mid.inequality_columns, '')
      + ')'
      + ISNULL (' INCLUDE (' + mid.included_columns + ')', '') AS create_index_statement,
      migs.*, mid.database_id, mid.[object_id]
    FROM sys.dm_db_missing_index_groups mig
    INNER JOIN sys.dm_db_missing_index_group_stats migs ON migs.group_handle = mig.index_group_handle
    INNER JOIN sys.dm_db_missing_index_details mid ON mig.index_handle = mid.index_handle
    WHERE migs.avg_total_user_cost * (migs.avg_user_impact / 100.0) * (migs.user_seeks + migs.user_scans) > 10
    ORDER BY migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans) DESC
    

    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:

    SELECT TOP 1000 qs.execution_count, 
           qs.total_worker_time, 
           qs.total_worker_time / qs.execution_count AS 'Avg CPU Time', 
           qs. total_physical_reads, 
           qs.total_physical_reads / qs.execution_count AS 'Avg Physical Reads', 
           qs.total_logical_reads, 
           qs.total_logical_reads / qs.execution_count AS 'Avg Logical Reads', 
           qs.total_logical_writes, 
           qs.total_logical_writes / qs.execution_count AS 'Avg Logical Writes', 
           SUBSTRING(st.text, qs.statement_start_offset / 2 + 1, 
            (CASE qs.statement_end_offset
                         WHEN-1 THEN DATALENGTH(st.text)
                         ELSE qs.statement_end_offset
                         END
               - qs.statement_start_offset) / 2 + 1)AS statement_text
      FROM sys.dm_exec_query_stats AS qs 
      CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle)AS st
      ORDER BY qs.execution_count DESC;
    
    • 1

relate perguntas

  • Como alterar as configurações do gerenciador de configuração do servidor SQL usando o TSQL?

  • Como posso obter uma lista de nomes e tipos de coluna de um conjunto de resultados?

  • MS SQL: Use o valor calculado para calcular outros valores

  • Como posso saber se um banco de dados SQL Server ainda está sendo usado?

  • Implementando uma consulta PIVOT

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve