Get-SqlAssessmentItem

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

Syntax

Get-SqlAssessmentItem
   [-Check <String[]>]
   [[-InputObject] <PSObject>]
   [-Configuration <PSObject>]
   [-MinSeverity <SeverityLevel>]
   [-FlattenOutput]
   [<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 sql Assessment API.

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 SQL Server proveedor de 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 el cmdlet Get-SqlAssessmentItem, puede obtener una lista de comprobaciones aplicables al objeto SQL Server especificado. Además, puede usar la salida de este cmdlet como argumento -Check para el 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 la máquina virtual 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 Azure PowerShell Module y asegúrese de que el módulo Az.ResourceGraph está instalado.

Inicie sesión con Azure PowerShell antes de invocar SQL Assessment en una instancia de máquina virtual de Azure SQL Server. 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 el equipo 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 el equipo 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 el equipo 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 la 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 el 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 el 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 el 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 que devuelve 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 que devuelve comprobaciones disponibles con una gravedad alta para la base de datos maestra.

Ejemplo 10: Obtener 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 el cmdlet Get-SqlAssessmentItem que devuelve todas las comprobaciones relacionadas con la copia de seguridad de todas las bases de datos en la instancia de SQL Server local predeterminada.

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 el cmdlet Invoke-SqlAssessment . En este caso, solo se ejecutarán las comprobaciones seleccionada durante el proceso de evaluación.

Ejemplo 12: Especificar las 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 sql Assessment para el SQL Server en la instancia de máquina virtual de 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 aplicables a una SQL Server determinada en la instancia de máquina virtual de Azure.

Una conexión de suscripción de Azure activa 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.

Para las etiquetas, Get-SqlAssessmentItem devuelve comprobaciones con cualquiera de esas etiquetas.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Configuration

Especifica 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 el orden especificado. El ámbito solo se limita a esta invocación de cmdlet.

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Especifica un objeto SQL Server o una ruta de acceso a dicho 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.

Type:PSObject
Aliases:Target
Position:10
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters: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 de información no se devolverán cuando -MinSeverity High.

Type:SeverityLevel
Aliases:Severity
Accepted values:Information, Low, Medium, High
Position:Named
Default value:Information
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Entradas

System.String[]

Microsoft.SqlServer.Management.Smo.SqlSmoObject[]

Salidas

Microsoft.SqlServer.Management.Assessment.ICheck