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