Partilhar via


API de avaliação SQL

Aplica-se a:SQL ServerAzure SQL Managed Instance

A API de Avaliação do SQL fornece um mecanismo para avaliar a configuração do seu SQL Server para práticas recomendadas. A API é fornecida com um conjunto de regras contendo regras de práticas recomendadas sugeridas pela equipe do SQL Server. Esse conjunto de regras é aprimorado com o lançamento de novas versões, mas, ao mesmo tempo, a API é criada para fornecer uma solução altamente personalizável e extensível. Os usuários podem ajustar as regras padrão e criar suas próprias.

A API de Avaliação do SQL é útil quando você deseja garantir que sua configuração do SQL Server esteja de acordo com as práticas recomendadas recomendadas. Após uma avaliação inicial, a estabilidade da configuração pode ser controlada por avaliações agendadas regularmente.

A API pode ser usada para avaliar:

Observação

A API de Avaliação SQL fornece avaliação em várias áreas, mas não se aprofunda na segurança. Use a avaliação de vulnerabilidades para SQL Server para melhorar proativamente a segurança da sua base de dados.

Regras

As regras (às vezes chamadas de cheques) são definidas em arquivos formatados JSON. O formato do conjunto de regras requer que um nome e uma versão do conjunto de regras sejam especificados. Ao usar conjuntos de regras personalizados, você pode saber facilmente quais recomendações vêm de qual conjunto de regras.

O conjunto de regras fornecido pela Microsoft está disponível no GitHub. Você pode visualizar todo o conjunto de regras no repositório de amostras .

Cmdlets de Avaliação SQL e extensões associadas

Use a API diretamente

A API de Avaliação SQL está disponível e pode ser usada por meio de código gerenciado como parte de qualquer um destes componentes:

Antes de começar a usar a própria API de Avaliação do SQL, certifique-se de instalar um destes:

O SMO Framework é complementado pela extensão da API de Avaliação SQL que fornece os seguintes métodos:

  • GetAssessmentItems: Retorna verificações disponíveis para um objeto SQL específico (IEnumerable<...>)
  • GetAssessmentResults: Avalia a avaliação de forma síncrona e retorna resultados e erros, se houver (IEnumerable<...>)
  • GetAssessmentResultsList: Avalia a avaliação de forma assíncrona e retorna resultados e erros, se houver (Task<...>)

Utilizar a API através do PowerShell

Se quiser invocar a API de Avaliação do SQL por meio do PowerShell, instale o módulo SQL Server PowerShell. O SqlServer módulo fornece dois cmdlets que funcionam com a API de Avaliação SQL:

  • Get-SqlAssessmentItem: Fornece uma lista de verificações de avaliação disponíveis para um objeto do SQL Server
  • Invoke-SqlAssessment: Fornece os resultados de uma avaliação

Introdução ao uso de cmdlets de Avaliação SQL

Uma avaliação é executada em relação a um objeto escolhido do SQL Server. No conjunto de regras padrão, há verificações apenas para dois tipos de objetos: Server e Database (além deles, a API suporta mais dois tipos: Filegroup e AvailabilityGroup). Se quiser avaliar uma instância do SQL Server e todos os seus bancos de dados, execute os cmdlets de Avaliação do SQL para cada objeto separadamente. Ou, você pode passar objetos para avaliação para os cmdlets de Avaliação SQL em uma variável ou no pipeline.

Os objetos SqlServer e RegisteredServer são intercambiáveis, podendo passar qualquer um para os cmdlets de Avaliação SQL.

Percorra os exemplos a seguir para começar.

  1. Obtenha uma lista de verificações disponíveis para uma instância padrão local para se familiarizar com as verificações. Neste exemplo, estamos a canalizar a saída do cmdlet Get-SqlInstance para o cmdlet Get-SqlAssessmentItem de modo a passar o objeto de instância para ele.

    Get-SqlInstance -ServerInstance 'localhost' | Get-SqlAssessmentItem
    
  2. Obtenha uma lista de verificações disponíveis para todos os bancos de dados da instância. Aqui, estamos usando o Get-Item cmdlet e um caminho implementado com o provedor do SQL Server do Windows PowerShell para obter uma lista dos bancos de dados e, em seguida, canalizá-la para o Get-SqlDatabase cmdlet.

    Get-Item SQLSERVER:\SQL\localhost\default | Get-SqlAssessmentItem
    

    Além disso, você pode usar o Get-SqlDatabase cmdlet para fazer o mesmo.

    Get-SqlDatabase -ServerInstance 'localhost' | Get-SqlAssessmentItem
    
  3. Invoque a avaliação para a instância e salve os resultados em uma tabela do SQL Server. Neste exemplo, estamos a canalizar a saída do cmdlet `Get-SqlInstance` para o cmdlet `Invoke-SqlAssessment`, e os resultados são canalizados para o cmdlet `Write-SqlTableData`. O Invoke-Assessment cmdlet é executado com o -FlattenOutput parâmetro neste exemplo. Esse parâmetro torna a saída adequada para o Write-SqlTableData cmdlet. Este último gera um erro se você omitir o parâmetro.

    Get-SqlInstance -ServerInstance 'localhost' |
    Invoke-SqlAssessment -FlattenOutput |
    Write-SqlTableData -ServerInstance 'localhost' -DatabaseName SQLAssessmentDemo -SchemaName Assessment -TableName Results -Force
    

    Agora vamos invocar uma avaliação para todos os bancos de dados da instância e adicionar os resultados à mesma tabela.

    Get-SqlDatabase -ServerInstance 'localhost' |
    Invoke-SqlAssessment -FlattenOutput |
    Write-SqlTableData -ServerInstance 'localhost' -DatabaseName SQLAssessmentDemo -SchemaName Assessment -TableName Results -Force
    
  4. Siga as descrições e links na tabela para entender melhor as recomendações.

  5. Personalize as regras com base em seu ambiente e requisitos organizacionais (veja abaixo).

  6. Agende uma tarefa ou um trabalho para executar a avaliação regularmente ou sob demanda para medir o progresso.

Personalizar regras

As regras são projetadas para serem personalizáveis e extensíveis. O conjunto de regras da Microsoft foi projetado para funcionar na maioria dos ambientes. No entanto, é impossível ter um conjunto de regras que funcione para cada ambiente. Os usuários podem escrever seus próprios arquivos JSON e personalizar regras existentes ou adicionar novas. Exemplos de personalização e conjunto de regras completo lançado pela Microsoft estão disponíveis no repositório de exemplos. Para obter mais detalhes sobre como executar os cmdlets de Avaliação SQL com arquivos JSON personalizados, use o Get-Help cmdlet.

Opções disponíveis com recurso de personalização de regras

Ativar/desativar determinadas regras ou grupos de regras (usando tags)

Você pode silenciar regras específicas quando elas não forem aplicadas ao seu ambiente ou até que o trabalho agendado seja concluído para corrigir o problema.

Alterar parâmetros de limite

Regras específicas têm limites que são comparados com o valor atual de uma métrica para descobrir um problema. Se os limites padrão não se ajustarem, você poderá alterá-los.

Adicionar mais regras escritas por si ou por terceiros

Você pode combinar conjuntos de regras adicionando um ou mais arquivos JSON como parâmetros à sua chamada à API de Avaliação SQL. Sua organização pode escrever esses arquivos ou obtê-los de terceiros. Por exemplo, você pode ter seu arquivo JSON que desabilita regras específicas do conjunto de regras da Microsoft e outro arquivo JSON de um especialista do setor que inclua regras que você considera úteis para seu ambiente, seguido por outro arquivo JSON que altera alguns valores de limite nesse arquivo JSON.

Importante

Pedimos que você não use conjuntos de regras que vêm de fontes não confiáveis, até que você os revise completamente para se certificar de que eles são seguros.