API de SQL Assessment

Se aplica a: SQL Server 2012 (11.x) y versiones posteriores Azure SQL Managed Instance SQL Server en Azure Virtual Machines SQL Server en Linux

La API de SQL Assessment ofrece un mecanismo para evaluar la configuración de la instancia de SQL Server a efectos de los procedimientos recomendados. La API se entrega con un conjunto de reglas que contiene las reglas de procedimientos recomendados sugeridas por el equipo de SQL Server. Este conjunto de reglas se ha mejorado con el lanzamiento de nuevas versiones, pero cabe destacar que, al mismo tiempo, la API se ha diseñado para proporcionar una solución altamente personalizable y extensible. Los usuarios pueden ajustar las reglas predeterminadas y crear las suyas propias.

La API de SQL Assessment resulta útil si quiere asegurarse de que la configuración de SQL Server esté en consonancia con los procedimientos recomendados. Después de una valoración inicial, se puede realizar un seguimiento de la estabilidad de la configuración mediante evaluaciones programadas periódicamente.

La API se puede usar para evaluar lo siguiente:

La extensión SQL Assessment de SQL Server también usa la API para Azure Data Studio (ADS).

Nota

La API de SQL Assessment proporciona una evaluación de diversas áreas, pero no profundiza en la seguridad. Se recomienda usar la evaluación de vulnerabilidades de SQL para mejorar de forma proactiva la seguridad de la base de datos.

Reglas

Las reglas, a las que a veces se hace referencia como "comprobaciones", se definen en archivos con formato JSON. El formato del conjunto de reglas requiere que se especifiquen su nombre y versión. Al usar conjuntos de reglas personalizados, podrá saber fácilmente qué recomendaciones proceden de los distintos conjunto de reglas.

El conjunto de reglas de Microsoft está disponible en GitHub. Puede ver todo el conjunto de reglas en el repositorio de ejemplos.

Cmdlets de SQL Assessment y extensiones asociadas

Uso de la API directamente

La API SQL Assessment está disponible y se puede usar a través de código administrado como parte de cualquiera de estos componentes:

Antes de empezar a usar la API SQL Assessment misma, asegúrese de instalar alguno de los componentes siguientes:

El marco de SMO se complementa con la extensión de la API SQL Assessment que proporciona los métodos siguientes:

  • GetAssessmentItems: devuelve las comprobaciones disponibles para un objeto SQL determinado (IEnumerable<...>)

  • GetAssessmentResults: evalúa sincrónicamente la valoración y devuelve los resultados y errores, si hay alguno (IEnumerable<...>)

  • GetAssessmentResultsList: evalúa asincrónicamente la valoración y devuelve los resultados y errores, si hay alguno (Task<...>)

Uso de la API mediante PowerShell

Si desea invocar la API SQL Assessment a través de PowerShell, debe instalar el módulo SQL Server PowerShell. El módulo SqlServer proporciona dos cmdlets que funcionan con la API SQL Assessment:

  • Get-SqlAssessmentItem: ofrece una lista de las comprobaciones de valoración disponibles para un objeto SQL Server.

  • Invoke-SqlAssessment: facilita los resultados de una valoración.

Introducción al uso de cmdlets de SQL Server Assessment

Se realiza una valoración en un objeto de SQL Server determinado. En el conjunto de reglas predeterminado, solo hay comprobaciones para dos tipos de objetos: Server y Database (además de ellos, la API admite dos tipos más, Filegroup y AvailabilityGroup). Si quiere evaluar una instancia de SQL Server y todas sus bases de datos, debe ejecutar los cmdlets de SQL Assessment para cada objeto por separado. También puede pasar objetos para su valoración a los cmdlets de SQL Assessment en una variable o la canalización.

Los objetos SqlServer y RegisteredServer son intercambiables, por lo que puede pasar cualquiera a los cmdlets de SQL Assessment.

Repase los siguientes ejemplos para empezar.

  1. Obtenga una lista de las comprobaciones disponibles para una instancia predeterminada local a fin de familiarizarse con las comprobaciones. En este ejemplo, se canaliza la salida del cmdlet Get-SqlInstance al cmdlet Get-SqlAssessmentItem para pasarle el objeto de la instancia.

    Get-SqlInstance -ServerInstance 'localhost' | Get-SqlAssessmentItem
    
  2. Obtenga una lista de las comprobaciones disponibles para todas las bases de datos de la instancia. Aquí se va a usar el cmdlet Get-Item y una ruta de acceso implementada con el proveedor de SQL Server de Windows PowerShell para obtener una lista de las bases de datos y, luego, canalizarla con el cmdlet Get-SqlDatabase.

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

    Además, puede usar el cmdlet Get-SqlDatabase para hacer lo mismo.

    Get-SqlDatabase -ServerInstance 'localhost' | Get-SqlAssessmentItem
    
  3. Invoque la valoración de la instancia y guarde los resultados en una tabla de SQL Server. En este ejemplo, se canaliza la salida del cmdlet Get-SqlInstance al cmdlet Invoke-SqlAssessment, cuyos resultados se canalizan al cmdlet Write-SqlTableData. En este ejemplo, el cmdlet Invoke-Assessment se ejecuta con el parámetro -FlattenOutput. Este parámetro hace que la salida sea adecuada para el cmdlet Write-SqlTableData. En el último caso, se produce un error si se omite el parámetro.

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

    Ahora vamos a invocar una valoración para todas las bases de datos de la instancia y agregar los resultados a la misma tabla.

    Get-SqlDatabase -ServerInstance 'localhost' |
    Invoke-SqlAssessment -FlattenOutput |
    Write-SqlTableData -ServerInstance 'localhost' -DatabaseName SQLAssessmentDemo -SchemaName Assessment -TableName Results -Force
    
  4. Siga las descripciones y los vínculos de la tabla para comprender mejor las recomendaciones.

  5. Personalice las reglas en función de su entorno y los requisitos de la organización; puede consultarlos a continuación.

  6. Programe una tarea o un trabajo para ejecutar la valoración periódicamente o a petición para medir el progreso.

Personalización de reglas

Las reglas están diseñadas para ser personalizables y extensibles. El conjunto de reglas de Microsoft está diseñado para funcionar en la mayoría de los entornos. Sin embargo, es imposible tener un conjunto de reglas que funcione con todos los entornos. Los usuarios pueden escribir sus propios archivos JSON y personalizar las reglas existentes o agregar otras nuevas. En el repositorio de ejemplos hay disponibles ejemplos de personalización y un conjunto de reglas completo publicado por Microsoft. Para obtener más información sobre cómo ejecutar los cmdlets de SQL Assessment con archivos JSON personalizados, use el cmdlet Get-Help.

Opciones disponibles con la característica de personalización de reglas

Habilitación y deshabilitación de ciertas reglas o grupos de reglas (mediante etiquetas)

Puede silenciar reglas específicas cuando no sean aplicables a su entorno o hasta que se realicen trabajos programados para rectificar el problema.

Cambio de parámetros de umbral

Las reglas específicas tienen umbrales que se comparan con el valor actual de una métrica para averiguar un problema. Si los umbrales predeterminados no se ajustan a sus necesidades, puede cambiarlos.

Incorporación de otras reglas escritas por usted o por terceros

Puede combinar conjuntos de reglas agregando uno o más archivos JSON como parámetros a la llamada a la API SQL Assessment. Su organización podría escribir esos archivos u obtenerlos de un tercero. Por ejemplo, puede tener el archivo JSON que deshabilite reglas específicas del conjunto de reglas de Microsoft y otro archivo JSON de un experto del sector que incluya reglas que le resulten útiles para su entorno, seguido de otro archivo JSON que cambie algunos valores de umbral en ese archivo JSON.

Importante

Le recomendamos que no utilice conjuntos de reglas que provengan de fuentes que no sean de confianza hasta que los haya revisado detenidamente para asegurarse de que sean seguros.

Pasos siguientes