API de Avaliação do SQL
Aplica-se a: SQL Server 2012 (11.x) e versões posteriores Instância Gerenciada de SQL do Azure SQL 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:
SQL Server em Máquinas Virtuais do Azure
Instância Gerenciada do Azure SQL
SQL Server 2012 e versões posteriores
SQL Server em sistemas e contêineres baseados em Linux
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:
-
Versão de lançamento a partir de junho de 2020 e superior.
SQL Server Management Objects (SMO)
Versão de lançamento a partir de julho de 2019 e superior.
Módulo do SQL Server PowerShell
Versão de lançamento a partir de julho de 2019 e superior.
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 ServerInvoke-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.
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 cmdletGet-SqlAssessmentItem
para passar o objeto de instância para ele.Get-SqlInstance -ServerInstance 'localhost' | Get-SqlAssessmentItem
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 cmdletGet-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
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 cmdletInvoke-SqlAssessment
e os resultados são redirecionados para o cmdletWrite-SqlTableData
. O cmdletInvoke-Assessment
é executado com o parâmetro-FlattenOutput
neste exemplo. Esse parâmetro torna a saída adequada para o cmdletWrite-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
Siga as descrições e os links na tabela para entender ainda mais as recomendações.
Personalize as regras com base em seu ambiente e nos requisitos organizacionais (veja abaixo).
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.