Compartilhar via


Get-SqlAssessmentItem

Obtém verificações de prática recomendada da Avaliação de SQL disponíveis para um objeto do SQL Server escolhido.

Sintaxe

Default (Padrão)

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

Description

O cmdlet Get-SqlAssessmentItem localiza todas as verificações de prática recomendada 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 cmdlets básicos do PowerShell, como Get-Item e Get-ChildItem. Além disso, o cmdlet dá suporte ao provedor do SQL Server 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 uma verificação de um objeto escolhido varia na versão, plataforma e tipo de objeto do 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 do SQL Server fornecido. Além disso, você pode usar a saída desse cmdlet como -Check argumento para 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.

Suporte ao SQL Server na VM do Azure

Com os cmdlets de Avaliação do SQL, você pode avaliar uma instância do SQL Server na VM do Azure não apenas como SQL Server local, mas também com regras específicas do 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 do SQL Server na VM do Azure tem o tamanho recomendado.

Para usar essas regras, conecte-se ao Azure com o Módulo do Azure PowerShell e verifique se o módulo Az.ResourceGraph está instalado.

Entre com o Azure PowerShell antes de invocar a Avaliação do SQL em uma instância do SQL Server na VM do Azure. O exemplo 13 mostra o processo de entrada interativo e a seleção de assinatura.

NOTA. É 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 para a 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 de exemplos de Avaliação do SQL no Github para descobrir como fazer a personalização.

Exemplo 5: Obter verificações para 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 do 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 do SQL Server por meio de pipeline. Somente as instâncias que têm 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 do SQL Server.

Exemplo 8: Obter verificações de alta gravidade 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 severidade para o banco de dados mestre. Ele aceita o local atual do provedor do PowerShell como o destino.

Exemplo 9: Obter verificações de alta gravidade 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 severidade para o banco de dados mestre.

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 a backup para todos os bancos de dados na instância padrão do SQL Server local.

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 uma $serverInstance e a seleção interativa de algumas delas. Os itens selecionados são armazenados em uma variável de matriz, que pode ser usada como entrada para 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 verificação de Avaliação do SQL com credenciais especificadas explicitamente.

Exemplo 13: Obter a lista de regras de Avaliação do 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 SQL Server específico na instância de VM do Azure.

Uma conexão de assinatura ativa do Azure permite 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, verificar IDs ou marcas.

Para cada objeto de verificação, Get-SqlAssessmentItem retorna essa verificação se ele dá suporte ao objeto de entrada.

Para cada ID de verificação, Get-SqlAssessmentItem retorna a verificação correspondente se ele dá suporte ao objeto de entrada.

Para marcas, Get-SqlAssessmentItem retorna verificações com qualquer uma dessas marcas.

Propriedades do parâmetro

Tipo:

String[]

Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes: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.

Propriedades do parâmetro

Tipo:PSObject
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-FlattenOutput

Indica que esse cmdlet produz objetos simples do tipo Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNoteFlat em vez de Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNote.

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-InputObject

Especifica um objeto do SQL Server ou um caminho para esse objeto. O cmdlet retorna as verificações apropriadas para este objeto. Quando esse parâmetro é omitido, o local atual é usado como objeto de entrada. Se o local atual não for um objeto do SQL Server com suporte, o cmdlet sinalizará um erro.

Propriedades do parâmetro

Tipo:PSObject
Valor padrão:None
Dá suporte a curingas:False
DontShow:False
Aliases:Meta

Conjuntos de parâmetros

(All)
Cargo:10
Obrigatório:False
Valor do pipeline:True
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes: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 de informações não serão retornadas quando -MinSeverity Alta.

Propriedades do parâmetro

Tipo:SeverityLevel
Valor padrão:Information
Valores aceitos:Information, Low, Medium, High
Dá suporte a curingas:False
DontShow:False
Aliases:Severidade

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

CommonParameters

Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.

Entradas

System.String

Microsoft.SqlServer.Management.Smo.SqlSmoObject

Saídas

Microsoft.SqlServer.Management.Assessment.ICheck