Get-SqlAssessmentItem
Возвращает рекомендации по оценке SQL, доступные для выбранного объекта SQL Server.
Синтаксис
Get-SqlAssessmentItem
[-Check <String[]>]
[[-InputObject] <PSObject>]
[-Configuration <PSObject>]
[-MinSeverity <SeverityLevel>]
[-FlattenOutput]
[-ProgressAction <ActionPreference>]
[<CommonParameters>]
Описание
Командлет Get-SqlAssessmentItem находит все доступные проверки для каждого входного объекта. Дополнительные сведения см. в
Этот командлет принимает следующие типы входных данных:
- 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 или basic 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 перед вызовом оценки 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
Пример 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
Пример 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[] |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Configuration
Задает пути к файлам, содержащим настраиваемую конфигурацию. Файлы настройки будут применяться к конфигурации по умолчанию в указанном порядке. Область ограничена только вызовом этого командлета.
Тип: | PSObject |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-FlattenOutput
Указывает, что этот командлет создает простые объекты типа Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNoteFlat вместо Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNote.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-InputObject
Указывает объект SQL Server или путь к такому объекту. Командлет возвращает соответствующие проверки для этого объекта. Если этот параметр опущен, текущее расположение используется в качестве входного объекта. Если текущее расположение не является поддерживаемым объектом SQL Server, командлет сигнализирует об ошибке.
Тип: | PSObject |
Aliases: | Target |
Position: | 10 |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-MinSeverity
Указывает минимальный уровень серьезности для найденных проверок. Например, проверки средних, низких или информационных уровней не будут возвращены при -MinSeverity high.
Тип: | SeverityLevel |
Aliases: | Severity |
Допустимые значения: | Information, Low, Medium, High |
Position: | Named |
Default value: | Information |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-ProgressAction
Определяет, как PowerShell реагирует на обновления хода выполнения, созданные скриптом, командлетом или поставщиком, например индикаторами хода выполнения, созданными командлетом Write-Progress. Командлет Write-Progress создает индикаторы хода выполнения, показывающие состояние команды.
Тип: | ActionPreference |
Aliases: | proga |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
System.String[]
Microsoft.SqlServer.Management.Smo.SqlSmoObject[]
Выходные данные
Microsoft.SqlServer.Management.Assessment.ICheck