Get-SqlAssessmentItem
Obtém verificações de melhores práticas da Avaliação do SQL disponíveis para um objeto de SQL Server escolhido.
Syntax
Get-SqlAssessmentItem
[-Check <String[]>]
[[-InputObject] <PSObject>]
[-Configuration <PSObject>]
[-MinSeverity <SeverityLevel>]
[-FlattenOutput]
[<CommonParameters>]
Description
O cmdlet Get-SqlAssessmentItem localiza todas as verificações de práticas recomendadas disponíveis para cada objeto de entrada. Para obter mais informações, consulte a Visão geral da API de Avaliação do SQL.
Esse cmdlet aceita os seguintes 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
- Cadeia de caracteres que contém o caminho para qualquer objeto dos tipos acima
- Coleção de objetos
Você pode obter objetos de entrada com cmdlets sqlServer como Get-SqlInstance e Get-SqlDatabase ou PowerShell básico
cmdlets como Get-Item e Get-ChildItem. Além disso, o cmdlet dá suporte ao SQL Server provedor do PowerShell, para que ele possa obter um objeto de seu caminho. O caminho pode ser passado explicitamente, caso contrário, o caminho atual será usado.
A disponibilidade de um marcar para um objeto escolhido varia de acordo com a versão, a plataforma e o tipo de objeto SQL Server. Além disso, há verificações direcionadas a bancos de dados específicos, como tempdb
ou master
. Além disso, você pode filtrar verificações por marcas, nomes e gravidade com os parâmetros -MinSeverity e -Check.
Com o cmdlet Get-SqlAssessmentItem, você pode obter uma lista de verificações aplicáveis ao objeto SQL Server fornecido. Além disso, você pode usar a saída desse cmdlet como o argumento -Check para o cmdlet Invoke-SqlAssessment .
As configurações personalizadas podem ser aplicadas com o parâmetro -Configuration. Exemplos de personalização estão disponíveis no Github.
SQL Server no suporte à VM do Azure
Com os cmdlets de Avaliação do SQL, você pode avaliar uma instância de SQL Server na VM do Azure não apenas como SQL Server local, mas também com regras específicas para SQL Server na VM do Azure (que usam informações sobre a configuração da máquina virtual). Por exemplo, a regra AzSqlVmSize verifica se a VM que hospeda uma instância de SQL Server na VM do Azure é de tamanho recomendado.
Para usar essas regras, conecte-se ao Azure com Azure PowerShell Module e verifique se o módulo Az.ResourceGraph está instalado.
Entre com Azure PowerShell antes de invocar a Avaliação do SQL em uma SQL Server na instância de VM do Azure. O exemplo 13 mostra o processo de entrada interativo e a seleção de assinatura.
Observação. É possível usar a conexão de conta do Azure persistida entre as sessões do PowerShell, ou seja, invocar Connect-AzAccount em uma sessão e omitir esse comando mais tarde. No entanto, a versão atual dos cmdlets de Avaliação do SQL precisa que o módulo Az.ResourceGraph seja importado explicitamente neste caso: Import-Module Az.ResourceGraph
Exemplos
Exemplo 1: Obter verificações de instância padrão 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
...
Este exemplo obtém todas as verificações disponíveis para a instância padrão do SQL Server em execução no computador atual.
Exemplo 2: Obter verificações com 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
...
Este exemplo obtém todas as verificações disponíveis para a instância padrão do SQL Server em execução no computador atual.
Exemplo 3: Obter verificações com o caminho para o 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
...
Este exemplo obtém todas as verificações disponíveis para a instância padrão do SQL Server em execução no computador atual.
Exemplo 4: Obter verificações com a configuração 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
...
Este exemplo obtém todas as verificações disponíveis com a configuração personalizada aplicada obtida de arquivos JSON especificados. Visite a pasta exemplos de Avaliação do SQL no Github para descobrir como fazer a personalização.
Exemplo 5: Obter verificações de todas as instâncias no 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
...
Este exemplo mostra o cmdlet Get-SqlAssessmentItem aceitando um conjunto de instâncias de SQL Server por meio de pipeline.
Exemplo 6: Obter verificações para todas as instâncias com nomes que terminam com 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
...
Este exemplo mostra o cmdlet Get-SqlAssessmentItem aceitando um conjunto de instâncias de SQL Server por meio de pipeline. Somente instâncias com o nome terminando com dígitos são processadas.
Exemplo 7: Obter verificações de um banco de dados por caminho
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
...
Este exemplo mostra o cmdlet Get-SqlAssessmentItem aceitando um caminho para um banco de dados SQL Server.
Exemplo 8: Obter verificações de alta severidade para um banco de dados
PS:> cd SQLSERVER:\SQL\localhost\default\Databases\master
PS:> Get-SqlAssessmentItem -MinSeverity High
Este exemplo mostra Get-SqlAssessmentItem retornando verificações disponíveis com alta gravidade para o banco de dados master. Ele aceita o local atual do provedor do PowerShell como o destino.
Exemplo 9: Obter verificações de alta severidade para um banco de dados
PS:> $db = Get-SqlDatabase master -ServerInstance localhost
PS:> Get-SqlAssessmentItem $db -MinSeverity High
Este exemplo mostra Get-SqlAssessmentItem retornando verificações disponíveis com alta gravidade para o banco de dados master.
Exemplo 10: Obter verificações por marca
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
Este exemplo mostra o cmdlet Get-SqlAssessmentItem retornando todas as verificações relacionadas ao backup para todos os bancos de dados na instância de SQL Server local padrão.
Exemplo 11: Executar verificações selecionadas interativamente
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.
A segunda linha deste exemplo mostra a obtenção de verificações de um $serverInstance e a seleção de algumas delas interativamente. Os itens selecionados são armazenados em uma variável de matriz, que pode ser usada como entrada para o cmdlet Invoke-SqlAssessment . Nesse caso, somente as verificações escolhidas serão executadas durante o processo de avaliação.
Exemplo 12: Especificar credenciais explicitamente
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
...
Este exemplo mostra como obter a lista de marcar de Avaliação do SQL com credenciais especificadas explicitamente.
Exemplo 13: Obter a lista de regras de Avaliação de SQL para o SQL Server na instância de VM do 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
...
Este exemplo mostra como obter uma lista de regras aplicáveis a um determinado SQL Server na instância de VM do Azure.
Uma conexão de assinatura ativa do Azure habilita verificações relacionadas ao Azure (AzSqlVmSize neste exemplo). A primeira linha se conecta a uma conta do Azure para obter dados do Azure Resource Graph. A segunda linha é opcional.
Para executar essas verificações, a Avaliação de SQL requer o módulo Az.ResourceGraph.
Parâmetros
-Check
Uma ou mais verificações, marcar IDs ou marcas.
Para cada objeto marcar, Get-SqlAssessmentItem retorna esse marcar se ele dá suporte ao objeto de entrada.
Para cada ID de marcar, Get-SqlAssessmentItem retornará o marcar correspondente se ele der suporte ao objeto de entrada.
Para marcas, Get-SqlAssessmentItem retorna verificações com qualquer uma dessas marcas.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Configuration
Especifica caminhos para arquivos que contêm a configuração personalizada. Os arquivos de personalização serão aplicados à configuração padrão na ordem especificada. O escopo é limitado apenas a essa invocação de cmdlet.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FlattenOutput
Indica que este cmdlet produz objetos simples do tipo Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNoteFlat em vez 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 um objeto SQL Server ou um caminho para esse objeto. O cmdlet retorna as verificações apropriadas para esse objeto. Quando esse parâmetro é omitido, o local atual é usado como objeto de entrada. Se o local atual não for um objeto SQL Server com suporte, o cmdlet sinalizará um erro.
Type: | PSObject |
Aliases: | Target |
Position: | 10 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-MinSeverity
Especifica o nível mínimo de severidade para verificações a serem encontradas. Por exemplo, verificações de níveis Médio, Baixo ou Informações não serão retornadas quando -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[]
Saídas
Microsoft.SqlServer.Management.Assessment.ICheck