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