Поделиться через


Get-SqlAssessmentItem

Возвращает рекомендации по оценке SQL, доступные для выбранного объекта SQL Server.

Синтаксис

Default (по умолчанию)

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

Описание

Командлет Get-SqlAssessmentItem находит все доступные проверки рекомендаций для каждого входного объекта. Дополнительные сведения см. в обзоре API оценки SQL.

Этот командлет принимает следующие типы входных данных:

  • 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.RegisteredServers.RegisteredServer
  • Строка, содержащая путь к любому объекту из указанных выше типов
  • Коллекция объектов

Объекты ввода можно получить с помощью командлетов SqlServer, таких как Get-SqlInstance и Get-SqlDatabase или базовые командлеты PowerShell, такие как Get-Item и Get-ChildItem. Кроме того, командлет поддерживает поставщик SQL Server PowerShell, чтобы он смог получить объект из своего пути. Путь можно передать явно, в противном случае будет использоваться текущий путь.

Доступность проверки выбранного объекта зависит от версии, платформы и типа объектов SQL Server. Кроме того, существуют проверки, предназначенные для конкретных баз данных, например tempdb или master. Кроме того, можно фильтровать проверки по тегам, именам и серьезности с помощью параметров -MinSeverity и -Check.

С помощью командлета Get-SqlAssessmentItem можно получить список проверок, применимых к заданному объекту SQL Server. Кроме того, вы можете использовать выходные данные этого командлета в качестве -Check аргумента для командлета Invoke-SqlAssessment .

Пользовательские конфигурации можно применить с параметром -Configuration. Примеры настройки доступны на сайте Github.

Поддержка SQL Server на виртуальной машине Azure

С помощью командлетов оценки SQL можно оценить экземпляр SQL Server на виртуальной машине Azure не только как локальный SQL Server, но и правила, относящиеся к SQL Server на виртуальной машине Azure (которые используют сведения о конфигурации виртуальной машины). Например, правило AzSqlVmSize проверяет, что виртуальная машина, на котором размещен экземпляр SQL Server на виртуальной машине Azure, имеет рекомендуемый размер.

Чтобы использовать такие правила, подключитесь к Azure с помощью модуля Azure PowerShell и убедитесь, что модуль Az.ResourceGraph установлен.

Войдите с помощью Azure PowerShell перед вызовом оценки SQL Server на экземпляре виртуальной машины Azure. В примере 13 показан интерактивный процесс входа и выбор подписки.

ЗАМЕТКА. Можно использовать подключение учетной записи Azure, сохраняемое между сеансами PowerShell, т. е. вызывать Connect-AzAccount в одном сеансе и пропускать эту команду позже. Однако текущая версия командлетов оценки SQL требует, чтобы модуль Az.ResourceGraph импортировался явно в этом случае: Import-Module Az.ResourceGraph

Примеры

Пример 1. Получение проверок для локального экземпляра по умолчанию

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
...

Этот пример получает все проверки, доступные для экземпляра SQL Server по умолчанию, работающего на текущем компьютере.

Пример 2. Получение проверок с помощью командлета Get-Item

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
...

Этот пример получает все проверки, доступные для экземпляра SQL Server по умолчанию, работающего на текущем компьютере.

Пример 3. Получение проверок пути к целевому объекту

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
...

Этот пример получает все проверки, доступные для экземпляра SQL Server по умолчанию, работающего на текущем компьютере.

Пример 4. Получение проверок с примененной пользовательской конфигурацией

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
...

Этот пример получает все доступные проверки с примененной пользовательской конфигурацией, полученной из указанных JSON-файлов. Перейдите в папку примеров оценки SQL на Github, чтобы узнать, как выполнить настройку.

Пример 5. Получение проверок для всех экземпляров в 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
...

В этом примере показан командлет Get-SqlAssessmentItem , принимаюющий набор экземпляров SQL Server через конвейер.

Пример 6. Получение проверок для всех экземпляров с именами, заканчивающимися числами

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
...

В этом примере показан командлет Get-SqlAssessmentItem , принимаюющий набор экземпляров SQL Server через конвейер. Обрабатываются только экземпляры, заканчивающиеся цифрами.

Пример 7. Получение проверок базы данных по пути

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
...

В этом примере показан командлет Get-SqlAssessmentItem , принимаюющий путь к базе данных SQL Server.

Пример 8. Получение проверок высокого уровня серьезности для базы данных

PS:> cd SQLSERVER:\SQL\localhost\default\Databases\master
PS:> Get-SqlAssessmentItem -MinSeverity High

В этом примере показано , как get-SqlAssessmentItem возвращает доступные проверки с высоким уровнем серьезности для базы данных master. Он принимает текущее расположение поставщика PowerShell в качестве целевого объекта.

Пример 9. Получение проверок высокого уровня серьезности для базы данных

PS:> $db = Get-SqlDatabase master -ServerInstance localhost
PS:> Get-SqlAssessmentItem $db -MinSeverity High

В этом примере показано , как get-SqlAssessmentItem возвращает доступные проверки с высоким уровнем серьезности для базы данных master.

Пример 10. Получение проверок по тегу

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

В этом примере показан командлет Get-SqlAssessmentItem , возвращающий все проверки, связанные с резервным копированием, для всех баз данных на локальном экземпляре SQL Server по умолчанию.

Пример 11. Выполнение интерактивных проверок

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.

Вторая строка этого примера показывает получение проверок $serverInstance и выбор некоторых из них в интерактивном режиме. Выбранные элементы хранятся в переменной массива, которая затем может использоваться в качестве входных данных для командлета Invoke-SqlAssessment . В этом случае в процессе оценки будут выполняться только выбранные проверки.

Пример 12. Явное указание учетных данных

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
...

В этом примере показано, как получить список проверок оценки SQL с явно указанными учетными данными.

Пример 13. Получение списка правил оценки SQL для SQL Server на экземпляре виртуальной машины 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
...

В этом примере показано, как получить список правил, применимых к конкретному экземпляру SQL Server на виртуальной машине Azure.

Активное подключение к подписке Azure включает проверки, связанные с Azure (AzSqlVmSize в этом примере). Первая строка подключается к учетной записи Azure для получения данных из Azure Resource Graph. Вторая строка является необязательной.

Для выполнения этих проверок для оценки SQL требуется модуль Az.ResourceGraph.

Параметры

-Check

Одна или несколько проверок, проверка идентификаторов или тегов.

Для каждого проверяемого объекта Get-SqlAssessmentItem возвращает значение, которое проверяет, поддерживает ли он входной объект.

Для каждого идентификатора проверки Get-SqlAssessmentItem возвращает соответствующий флажок, поддерживает ли он входной объект.

Для тегов Get-SqlAssessmentItem возвращает проверки с любым из этих тегов.

Свойства параметра

Тип:

String[]

Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Configuration

Задает пути к файлам, содержащим настраиваемую конфигурацию. Файлы настройки будут применяться к конфигурации по умолчанию в указанном порядке. Область ограничена только вызовом этого командлета.

Свойства параметра

Тип:PSObject
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-FlattenOutput

Указывает, что этот командлет создает простые объекты типа Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNoteFlat вместо Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNote.

Свойства параметра

Тип:SwitchParameter
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-InputObject

Указывает объект SQL Server или путь к такому объекту. Командлет возвращает соответствующие проверки для этого объекта. Если этот параметр опущен, текущее расположение используется в качестве входного объекта. Если текущее расположение не является поддерживаемым объектом SQL Server, командлет сигнализирует об ошибке.

Свойства параметра

Тип:PSObject
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:Цель

Наборы параметров

(All)
Position:10
Обязательно:False
Значение из конвейера:True
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-MinSeverity

Указывает минимальный уровень серьезности для найденных проверок. Например, проверки средних, низких или информационных уровней не будут возвращены при -MinSeverity high.

Свойства параметра

Тип:SeverityLevel
Default value:Information
Допустимые значения:Information, Low, Medium, High
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:Степень серьезности

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

CommonParameters

Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.

Входные данные

System.String

Microsoft.SqlServer.Management.Smo.SqlSmoObject

Выходные данные

Microsoft.SqlServer.Management.Assessment.ICheck