Compartir a través de


Get-SqlAssessmentItem

Obtiene las comprobaciones de procedimientos recomendados de SQL Assessment disponibles para un objeto de SQL Server elegido.

Sintaxis

Get-SqlAssessmentItem
   [-Check <String[]>]
   [[-InputObject] <PSObject>]
   [-Configuration <PSObject>]
   [-MinSeverity <SeverityLevel>]
   [-FlattenOutput]
   [-ProgressAction <ActionPreference>]
   [<CommonParameters>]

Description

El cmdlet Get-SqlAssessmentItem busca todas las comprobaciones de procedimientos recomendados disponibles para cada objeto de entrada. Para obtener más información, consulte introducción a la API de evaluación de SQL de .

Este cmdlet acepta los siguientes tipos de entrada:

  • Microsoft.SqlServer.Management.Smo.Server
  • Microsoft.SqlServer.Management.Smo.Database
  • Microsoft.SqlServer.Management.Smo.AvailabilityGroup
  • Microsoft.SqlServer.Management.Smo.FileGroup
  • Microsoft.SqlServer.Management.Smo.RegisteredServers.RegisteredServer
  • Cadena que contiene la ruta de acceso a cualquier objeto de los tipos anteriores
  • Colección de objetos

Puede obtener objetos de entrada con cmdlets sqlServer, como Get-SqlInstance y Get-SqlDatabase o PowerShell básico.
cmdlets como Get-Item y Get-ChildItem. Además, el cmdlet admite el proveedor de SQL Server PowerShell, por lo que puede obtener un objeto de su ruta de acceso. La ruta de acceso se puede pasar explícitamente; de lo contrario, se usará la ruta de acceso actual.

La disponibilidad de una comprobación de un objeto elegido varía según la versión, la plataforma y el tipo de objeto de SQL Server. Además, hay comprobaciones que tienen como destino bases de datos específicas como tempdb o master. Además, puede filtrar las comprobaciones por etiquetas, nombres y gravedad con los parámetros -MinSeverity y -Check.

Con cmdlet Get-SqlAssessmentItem, puede obtener una lista de comprobaciones aplicables al objeto de SQL Server determinado. Además, puede usar la salida de este cmdlet como argumento -Check para cmdlet Invoke-SqlAssessment.

Las configuraciones personalizadas se pueden aplicar con el parámetro -Configuration. Los ejemplos de personalización están disponibles en Github.

Compatibilidad con SQL Server en máquinas virtuales de Azure

Con los cmdlets de SQL Assessment, puede evaluar una instancia de SQL Server en una máquina virtual de Azure no solo como SQL Server local, sino también con reglas específicas de SQL Server en máquinas virtuales de Azure (las que usan información sobre la configuración de la máquina virtual). Por ejemplo, la regla AzSqlVmSize comprueba que la máquina virtual que hospeda una instancia de SQL Server en la máquina virtual de Azure tiene un tamaño recomendado.

Para usar estas reglas, conéctese a Azure con módulo de Azure PowerShell y asegúrese de que está instalado el módulo Az.ResourceGraph.

iniciar sesión con Azure PowerShell antes de invocar SQL Assessment en una instancia de máquina virtual de Azure. En el ejemplo 13 se muestra el proceso de inicio de sesión interactivo y la selección de la suscripción.

NOTA. Es posible usar la conexión de la cuenta de Azure persistente entre sesiones de PowerShell, es decir, invocar Connect-AzAccount en una sesión y omitir este comando más adelante. Sin embargo, la versión actual de los cmdlets de SQL Assessment necesita que el módulo Az.ResourceGraph se importe explícitamente en este caso: Import-Module Az.ResourceGraph

Ejemplos

Ejemplo 1: Obtención de comprobaciones de la instancia predeterminada local

PS:> Get-SqlInstance -ServerInstance 'localhost' | Get-SqlAssessmentItem

   Target: [LOCAL]

ID                             ON      Name                                     Origin                                  
--                             --      ----                                     ------                                  
TF1204                         True    TF 1204 returns deadlock information     Microsoft Ruleset 0.1.202               
BlackboxTrace                  True    Blackbox trace is configured and running Microsoft Ruleset 0.1.202               
HintsStatistics                True    Hints are being used                     Microsoft Ruleset 0.1.202               
PlansUseRatio                  True    Amount of single use plans in cache i... Microsoft Ruleset 0.1.202            
TempDBFilesAutoGrowth          True    Some TempDB data files have different... Microsoft Ruleset 0.1.202             
CpuUtil90                      True    CPU usage over 90%                       Microsoft Ruleset 0.1.202  
...

En este ejemplo se obtienen todas las comprobaciones disponibles para la instancia predeterminada de SQL Server que se ejecuta en la máquina actual.

Ejemplo 2: Obtención de comprobaciones con Get-Item cmdlet

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

   Target: [LOCAL]

ID                             ON      Name                                     Origin                                  
--                             --      ----                                     ------                                  
TF1204                         True    TF 1204 returns deadlock information     Microsoft Ruleset 0.1.202               
BlackboxTrace                  True    Blackbox trace is configured and running Microsoft Ruleset 0.1.202               
HintsStatistics                True    Hints are being used                     Microsoft Ruleset 0.1.202               
PlansUseRatio                  True    Amount of single use plans in cache i... Microsoft Ruleset 0.1.202               
TempDBFilesAutoGrowth          True    Some TempDB data files have different... Microsoft Ruleset 0.1.202               
CpuUtil90                      True    CPU usage over 90%                       Microsoft Ruleset 0.1.202  
...

En este ejemplo se obtienen todas las comprobaciones disponibles para la instancia predeterminada de SQL Server que se ejecuta en la máquina actual.

Ejemplo 3: Obtención de comprobaciones con la ruta de acceso al objeto de destino

PS:> Get-SqlAssessmentItem SQLSERVER:\SQL\localhost\default

   Target: [LOCAL]

ID                             ON      Name                                     Origin                                  
--                             --      ----                                     ------                                  
TF1204                         True    TF 1204 returns deadlock information     Microsoft Ruleset 0.1.202                   
BlackboxTrace                  True    Blackbox trace is configured and running Microsoft Ruleset 0.1.202                   
HintsStatistics                True    Hints are being used                     Microsoft Ruleset 0.1.202                   
PlansUseRatio                  True    Amount of single use plans in cache i... Microsoft Ruleset 0.1.202                   
TempDBFilesAutoGrowth          True    Some TempDB data files have different... Microsoft Ruleset 0.1.202                   
CpuUtil90                      True    CPU usage over 90%                       Microsoft Ruleset 0.1.202  
...

En este ejemplo se obtienen todas las comprobaciones disponibles para la instancia predeterminada de SQL Server que se ejecuta en la máquina actual.

Ejemplo 4: Obtención de comprobaciones con la configuración personalizada aplicada

PS:> Get-SqlDatabase master -ServerInstance . |
     Get-SqlAssessmentItem -Configuration C:\rulesetA.json, D:\rulesetB.json

   Target: [LOCAL]

ID                             ON      Name                                     Origin                                  
--                             --      ----                                     ------                                  
TF1204                         False   TF 1204 returns deadlock information     Microsoft Ruleset 0.1.202                   
BlackboxTrace                  True    Blackbox trace is configured and running Microsoft Ruleset 0.1.202                   
HintsStatistics                True    Hints are being used                     Microsoft Ruleset 0.1.202                   
PlansUseRatio                  True    Amount of single use plans in cache i... Microsoft Ruleset 0.1.202                   
TempDBFilesAutoGrowth          False   Some TempDB data files have different... Microsoft Ruleset 0.1.202                   
CpuUtil90                      True    CPU usage over 90%                       Microsoft Ruleset 0.1.202                   
SomeCustomCheck                True    Some custom check                        Ruleset A 1.0                           
AnotherCustomCheck             True    Another custom check                     Ruleset B 1.0
...

En este ejemplo se obtienen todas las comprobaciones disponibles con la configuración personalizada aplicada obtenida de los archivos JSON especificados. Visite carpeta de ejemplos de SQL Assessment en Github para averiguar cómo realizar la personalización.

Ejemplo 5: Obtención de comprobaciones de todas las instancias en localhost

PS:> Get-SqlInstance -ServerInstance localhost | Get-SqlAssessmentItem

   Target: [LOCAL]

ID                             ON      Name                                     Origin                                  
--                             --      ----                                     ------                                  
TF1204                         True    TF 1204 returns deadlock information     Microsoft Ruleset 0.1.202               
BlackboxTrace                  True    Blackbox trace is configured and running Microsoft Ruleset 0.1.202               
CpuUtil90                      True    CPU usage over 90%                       Microsoft Ruleset 0.1.202

   Target: [LOCAL\INSTANCE1]

ID                             ON      Name                                     Origin                                  
--                             --      ----                                     ------                                  
HintsStatistics                True    Hints are being used                     Microsoft Ruleset 0.1.202             
PlansUseRatio                  True    Amount of single use plans in cache i... Microsoft Ruleset 0.1.202               
TempDBFilesAutoGrowth          True    Some TempDB data files have different... Microsoft Ruleset 0.1.202               
CpuUtil90                      True    CPU usage over 90%                       Microsoft Ruleset 0.1.202
...

En este ejemplo se muestra cmdlet Get-SqlAssessmentItem que acepta un conjunto de instancias de SQL Server a través de la canalización.

Ejemplo 6: Obtención de comprobaciones de todas las instancias con nombres que terminan con números

PS:> Get-SqlInstance -ServerInstance localhost | Where { $_.Name -Match '.*\d+' } | Get-SqlAssessmentItem

   Target: [LOCAL\INSTANCE1]

ID                             ON      Name                                     Origin                                  
--                             --      ----                                     ------                                  
HintsStatistics                True    Hints are being used                     Microsoft Ruleset 0.1.202               
PlansUseRatio                  True    Amount of single use plans in cache i... Microsoft Ruleset 0.1.202             
TempDBFilesAutoGrowth          True    Some TempDB data files have different... Microsoft Ruleset 0.1.202               
CpuUtil90                      True    CPU usage over 90%                       Microsoft Ruleset 0.1.202
...

En este ejemplo se muestra cmdlet Get-SqlAssessmentItem que acepta un conjunto de instancias de SQL Server a través de la canalización. Solo se procesan las instancias que tienen el nombre que termina con dígitos.

Ejemplo 7: Obtención de comprobaciones de una base de datos por ruta de acceso

PS:> Get-SqlAssessmentItem SQLSERVER:\SQL\localhost\default\Databases\master


   TargetObject: [master]

ID                             ON      Name                                     Origin                    
--                             --      ----                                     ------                    
AutoCreateStats                True    Auto-Create Statistics should be on      Microsoft Ruleset 0.1.202 
HintsUsageInModules            False   Hints usage in modules                   Microsoft Ruleset 0.1.202 
FullBackup                     True    Full backup is missed or outdated        Microsoft Ruleset 0.1.202 
DuplicateIndexes               True    Duplicate Indexes                        Microsoft Ruleset 0.1.202 
RedundantIndexes               True    Redundant Indexes                        Microsoft Ruleset 0.1.202 
...

En este ejemplo se muestra cmdlet Get-SqlAssessmentItem que acepta una ruta de acceso a una base de datos de SQL Server.

Ejemplo 8: Obtención de comprobaciones de gravedad alta para una base de datos

PS:> cd SQLSERVER:\SQL\localhost\default\Databases\master
PS:> Get-SqlAssessmentItem -MinSeverity High

En este ejemplo se muestra Get-SqlAssessmentItem devolver comprobaciones disponibles con una gravedad alta para la base de datos maestra. Acepta la ubicación actual del proveedor de PowerShell como destino.

Ejemplo 9: Obtención de comprobaciones de gravedad alta para una base de datos

PS:> $db = Get-SqlDatabase master -ServerInstance localhost
PS:> Get-SqlAssessmentItem $db -MinSeverity High

En este ejemplo se muestra Get-SqlAssessmentItem devolver comprobaciones disponibles con una gravedad alta para la base de datos maestra.

Ejemplo 10: Obtención de comprobaciones por etiqueta

PS:> Get-SqlDatabase -ServerInstance . | Get-SqlAssessmentItem -Check Backup


   TargetObject: [master]

ID                             ON      Name                                     Origin                    
--                             --      ----                                     ------                    
FullBackup                     True    Full backup is missed or outdated        Microsoft Ruleset 0.1.202 


   TargetObject: [msdb]

ID                             ON      Name                                     Origin                    
--                             --      ----                                     ------                    
FullBackup                     True    Full backup is missed or outdated        Microsoft Ruleset 0.1.202

En este ejemplo se muestra cmdlet Get-SqlAssessmentItem que devuelve todas las comprobaciones relacionadas con la copia de seguridad de todas las bases de datos en la instancia predeterminada de SQL Server local.

Ejemplo 11: Ejecutar comprobaciones seleccionadas interactivamente

PS:> $serverInstance = Get-SqlInstance -ServerInstance '(local)'
PS:> $checks = Get-SqlAssessmentItem $serverInstance | Select Id, Description | Out-GridView -PassThru
PS:> Invoke-SqlAssessment $serverInstance -Check $checks

    TargetPath : Server[@Name='LOCAL']

Sev. Message                                                            Check ID               Origin                   
---- -------                                                            --------               ------                   
Info Enable trace flag 834 to use large-page allocations to improve     TF834                  Microsoft Ruleset 0.1.202
     analytical and data warehousing workloads.                                                                         
Low  Detected deprecated or discontinued feature uses: String literals  DeprecatedFeatures     Microsoft Ruleset 0.1.202
     as column aliases, syscolumns, sysusers, SET FMTONLY ON, XP_API,                                                   
     Table hint without WITH, More than two-part column name. We                                                        
     recommend to replace them with features actual for SQL Server                                                      
     version 14.0.1000.

La segunda línea de este ejemplo muestra la obtención de comprobaciones de un $serverInstance y la selección de algunas de ellas de forma interactiva. Los elementos seleccionados se almacenan en una variable de matriz, que luego se puede usar como entrada para cmdlet Invoke-SqlAssessment. En este caso, solo se ejecutarán comprobaciones seleccionada durante el proceso de evaluación.

Ejemplo 12: Especificar credenciales explícitamente

PS> $cred = Get-Credential

PowerShell credential request
Enter your credentials.
User: Administrator
Password for user Administrator: ********

PS> $db = Get-SqlDatabase master -ServerInstance 10.0.3.118 -Credential $cred
PS> Get-SqlAssessmentItem $db

   TargetObject: [master]

ID                             ON      Name                                     Origin                    
--                             --      ----                                     ------                    
AutoCreateStats                True    Auto-Create Statistics should be on      Microsoft Ruleset 0.1.202 
FullBackup                     True    Full backup is missed or outdated        Microsoft Ruleset 0.1.202 
DuplicateIndexes               True    Duplicate Indexes                        Microsoft Ruleset 0.1.202 
RedundantIndexes               True    Redundant Indexes                        Microsoft Ruleset 0.1.202 
...

En este ejemplo se muestra cómo obtener la lista de comprobación de sql Assessment con credenciales especificadas explícitamente.

Ejemplo 13: Obtención de la lista de reglas de evaluación de SQL para la instancia de máquina virtual de SQL Server en Azure

PS> Connect-AzAccount
PS> Set-Subscription My-Pay-As-You-Go
PS> $cred = Get-Credential

PowerShell credential request
Enter your credentials.
User: Administrator
Password for user Administrator: ********

PS> $inst = Get-SqlInstance -ServerInstance 10.0.3.118 -Credential $cred
PS> Get-SqlAssessmentItem $inst

   TargetObject: [ContosoAzureSql]

ID                             ON      Name                                     Origin                    
--                             --      ----                                     ------                    
HintsStatistics                True    Hints are being used                     Microsoft Ruleset 0.1.202               
PlansUseRatio                  True    Amount of single use plans in cache i... Microsoft Ruleset 0.1.202             
TempDBFilesAutoGrowth          True    Some TempDB data files have different... Microsoft Ruleset 0.1.202 
AzSqlVmSize                    True    VM size is not memory-optimized          Microsoft Ruleset 0.1.202 
...

En este ejemplo se muestra cómo obtener una lista de reglas que son aplicables a un servidor SQL Server determinado en la instancia de máquina virtual de Azure.

Una conexión de suscripción activa de Azure habilita las comprobaciones relacionadas con Azure (AzSqlVmSize en este ejemplo). La primera línea se conecta a una cuenta de Azure para obtener datos de Azure Resource Graph. La segunda línea es opcional.

Para ejecutar estas comprobaciones, SQL Assessment requiere el módulo Az.ResourceGraph.

Parámetros

-Check

Una o varias comprobaciones, comprobar identificadores o etiquetas.

Para cada objeto check, Get-SqlAssessmentItem devuelve esa comprobación si admite el objeto de entrada.

Para cada identificador de comprobación, Get-SqlAssessmentItem devuelve la comprobación correspondiente si admite el objeto de entrada.

En el caso de las etiquetas, get-SqlAssessmentItem devuelve comprobaciones con cualquiera de esas etiquetas.

Tipo:String[]
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Configuration

Especifica las rutas de acceso a los archivos que contienen la configuración personalizada. Los archivos de personalización se aplicarán a la configuración predeterminada en orden especificado. El ámbito solo se limita a esta invocación de cmdlet.

Tipo:PSObject
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-FlattenOutput

Indica que este cmdlet genera objetos simples de tipo Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNoteFlat en lugar de Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNote.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-InputObject

Especifica un objeto de SQL Server o una ruta de acceso a este objeto. El cmdlet devuelve las comprobaciones adecuadas para este objeto. Cuando se omite este parámetro, la ubicación actual se usa como objeto de entrada. Si la ubicación actual no es un objeto de SQL Server compatible, el cmdlet indica un error.

Tipo:PSObject
Alias:Target
Posición:10
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

-MinSeverity

Especifica el nivel de gravedad mínimo para las comprobaciones que se van a encontrar. Por ejemplo, las comprobaciones de niveles Medio, Bajo o Información no se devolverán cuando -MinSeverity Alto.

Tipo:SeverityLevel
Alias:Severity
Valores aceptados:Information, Low, Medium, High
Posición:Named
Valor predeterminado:Information
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-ProgressAction

Determina cómo Responde PowerShell a las actualizaciones de progreso generadas por un script, cmdlet o proveedor, como las barras de progreso generadas por el cmdlet Write-Progress. El cmdlet Write-Progress crea barras de progreso que muestran el estado de un comando.

Tipo:ActionPreference
Alias:proga
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

Entradas

System.String[]

Microsoft.SqlServer.Management.Smo.SqlSmoObject[]

Salidas

Microsoft.SqlServer.Management.Assessment.ICheck