API de Avaliação do SQL

Aplica-se a: SQL Server 2012 (11.x) e versões posteriores Instância Gerenciada de SQL do AzureSQL Server em Máquinas Virtuais do Azure SQL Server em Linux

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

A API de Avaliação do SQL é útil quando você deseja ter certeza de que a configuração do SQL Server está alinhada com as melhores práticas. Após uma avaliação inicial, é possível acompanhar a estabilidade da configuração realizando avaliações agendadas regularmente.

A API pode ser usada para avaliar:

A API também é usada pela Extensão da Avaliação do SQL Server para o ADS (Azure Data Studio).

Observação

A API de Avaliação do SQL fornece avaliação em uma variedade de áreas, mas não se aprofunda em segurança. Recomendamos que você use a Avaliação de Vulnerabilidades do SQL para aprimorar proativamente a segurança do banco de dados.

Regras

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

O conjunto de regras enviado pela Microsoft está disponível no GitHub. Veja o conjunto regras inteiro no repositório de exemplos.

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

Usar a API diretamente

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

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

A estrutura do SMO é complementada pela extensão da API de Avaliação do SQL que fornece os seguintes métodos:

  • GetAssessmentItems: retorna verificações disponíveis para um objeto SQL específico (IEnumerable<...>)

  • GetAssessmentResults: avalia de modo síncrono a avaliação e retorna resultados e erros, se houver (IEnumerable<...>)

  • GetAssessmentResultsList: avalia de modo assíncrono a avaliação e retorna resultados e erros, se houver (Task<...>)

Usar a API por meio do PowerShell

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

  • Get-SqlAssessmentItem: fornece uma lista de verificações de avaliação disponíveis para um objeto SQL Server

  • Invoke-SqlAssessment: fornece resultados de uma avaliação

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

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

Os objetos SqlServer e RegisteredServer são intercambiáveis, portanto, você pode passar qualquer um deles para os cmdlets de Avaliação do SQL.

Siga os exemplos a seguir para começar.

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

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

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

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

    Get-SqlDatabase -ServerInstance 'localhost' | Get-SqlAssessmentItem
    
  3. Invoque a avaliação da instância e salve os resultados em uma tabela do SQL Server. Neste exemplo, estamos redirecionando a saída do cmdlet Get-SqlInstance para o cmdlet Invoke-SqlAssessment e os resultados são redirecionados para o cmdlet Write-SqlTableData. O cmdlet Invoke-Assessment é executado com o parâmetro -FlattenOutput neste exemplo. Esse parâmetro torna a saída adequada para o cmdlet Write-SqlTableData. O último gerará 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 os links na tabela para entender ainda mais as recomendações.

  5. Personalize as regras com base em seu ambiente e nos 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 único. Os usuários podem gravar os próprios arquivos JSON e personalizar as regras existentes ou adicionar novas. Exemplos de personalização e do conjunto de regras completo do Microsoft liberado estão disponíveis no repositório de exemplos. Para obter mais detalhes sobre como executar os cmdlets de Avaliação do SQL com arquivos JSON personalizados, use o cmdlet Get-Help.

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

Habilitar/desabilitar determinadas regras ou grupos de regras (usando tags)

Você pode silenciar regras específicas quando elas não são aplicadas a seu ambiente ou até que o trabalho agendado seja feito para corrigir o problema.

Alterar parâmetros de limite

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

Adicionar mais regras escritas por você ou por terceiros

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

Importante

Recomendamos só usar conjuntos de regras provenientes de fontes não confiáveis após examiná-los detalhadamente para garantir que sejam seguros.

Próximas etapas