Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server 2012 (11.x) и более поздних версий
Управляемый экземпляр Azure SQL SQL Server на виртуальных машинах Azure
SQL Server на Linux
API-интерфейс Оценки SQL предоставляет механизм для оценки конфигурации SQL Server на соответствие рекомендациям. API поставляется с набором правил, содержащим правила лучших практик, предложенные командой SQL Server. Этот набор правил усовершенствован с выпуском новых версий, но в то же время API создается для предоставления высоко настраиваемого и расширяемого решения. Пользователи могут настраивать правила по умолчанию и создавать собственные.
API Оценки SQL приходит на помощь, когда вам нужно удостоверить соответствие конфигурации SQL Server рекомендуемым лучшим методикам. После первоначальной оценки стабильность конфигурации отслеживается при помощи регулярных запланированных оценок.
API можно использовать для оценки:
SQL Server на Виртуальных машинах Microsoft Azure
Управляемый экземпляр SQL Azure
SQL Server 2012 и более поздних версий
SQL Server в системах и контейнерах под управлением Linux
API также используется расширением для оценки SQL Server в Azure Data Studio (ADS).
Примечание.
API оценок SQL проводит оценку различных аспектов, но не вникает глубоко в анализ безопасности. Чтобы с упреждением совершенствовать защиту ваших баз данных, рекомендуем воспользоваться Оценкой уязвимостей SQL.
Правила
Правила, иногда называемые проверками, определяются в файлах в формате JSON. Для формата набора правил требуется указать его имя и версию. При использовании пользовательских наборов правил можно легко узнать, какие рекомендации исходят из какого набора правил.
Предоставляемый Майкрософт набор правил доступен на GitHub. Просмотреть весь набор правил можно в репозитории примеров.
Командлеты для оценки SQL и связанные расширения
Непосредственное использование API
API Оценки SQL доступен и может использоваться в управляемом коде в составе любого из этих компонентов:
-
версии выпуска от июня 2020 г. и выше;
Управляющие объекты SQL Server (SMO)
Версия выпуска от июля 2019 г. и выше.
-
версии выпуска от июля 2019 г. и выше.
Прежде чем приступить к работе с API Оценки SQL, проверьте, установлены ли следующие компоненты:
Платформа SMO дополняется расширением для API Оценки SQL, которое предоставляет следующие методы:
GetAssessmentItems
: возвращает доступные проверки для конкретного объекта SQL (IEnumerable<...>
)GetAssessmentResults
: синхронно оценивает оценку и возвращает результаты и ошибки, если таковые имеются (IEnumerable<...>
)GetAssessmentResultsList
: асинхронно вычисляет оценку и возвращает результаты и ошибки, если таковые имеются (Task<...>
)
Использование API с помощью PowerShell
Если вы хотите вызвать API оценки SQL с помощью PowerShell, необходимо установить модуль SQL Server PowerShell. Модуль SqlServer
предоставляет два командлета, которые работают с API оценки SQL:
Get-SqlAssessmentItem
: предоставляет список доступных проверок оценки для объекта SQL ServerInvoke-SqlAssessment
: предоставляет результаты оценки
Начните использовать командлеты оценки SQL
Оценка выполняется для выбранного объекта SQL Server. В наборе правил по умолчанию проверяются только два типа объектов: Server
и Database
(помимо них API поддерживает еще два типа: Filegroup
и AvailabilityGroup
). Если вы хотите оценить экземпляр SQL Server и все его базы данных, необходимо выполнить командлеты оценки SQL для каждого объекта отдельно. Или можно передавать объекты для оценки командлетам SQL Assessment в переменной или конвейере.
SqlServer
и RegisteredServer
объекты являются взаимозаменяемыми, поэтому вы можете передать любой из командлетов оценки SQL.
Ознакомьтесь со следующими примерами, чтобы приступить к работе.
Получите список доступных проверок для локального экземпляра по умолчанию, чтобы познакомиться с проверками. В этом примере мы направляем выходные данные командлета
Get-SqlInstance
в командлетGet-SqlAssessmentItem
, чтобы передать объект экземпляра в него.Get-SqlInstance -ServerInstance 'localhost' | Get-SqlAssessmentItem
Получите список доступных проверок для всех баз данных экземпляра. Здесь мы используем командлет
Get-Item
и путь, реализованный провайдером SQL Server для Windows PowerShell, чтобы получить список баз данных, а затем передать его в командлетGet-SqlDatabase
.Get-Item SQLSERVER:\SQL\localhost\default | Get-SqlAssessmentItem
Кроме того, можно использовать
Get-SqlDatabase
командлет для выполнения этого же действия.Get-SqlDatabase -ServerInstance 'localhost' | Get-SqlAssessmentItem
Вызовите оценку для экземпляра и сохраните результаты в таблице SQL Server. В этом примере мы передаем выходные данные командлета
Get-SqlInstance
командлетуInvoke-SqlAssessment
, результаты которого затем передаются командлетуWrite-SqlTableData
. КомандлетInvoke-Assessment
выполняется с параметром-FlattenOutput
в этом примере. Этот параметр делает выходные данные подходящими для командлетаWrite-SqlTableData
. Если опустить этот параметр, то в последнем случае будет выдано сообщение об ошибке.Get-SqlInstance -ServerInstance 'localhost' | Invoke-SqlAssessment -FlattenOutput | Write-SqlTableData -ServerInstance 'localhost' -DatabaseName SQLAssessmentDemo -SchemaName Assessment -TableName Results -Force
Теперь давайте вызовем оценку всех баз данных экземпляра и добавим результаты в ту же таблицу.
Get-SqlDatabase -ServerInstance 'localhost' | Invoke-SqlAssessment -FlattenOutput | Write-SqlTableData -ServerInstance 'localhost' -DatabaseName SQLAssessmentDemo -SchemaName Assessment -TableName Results -Force
Для дальнейшего анализа рекомендаций следуйте описанию и ссылкам в таблице.
Настройте правила в соответствии со средой и требованиями организации (см. ниже).
Запланируйте задачу или задание для регулярного выполнения оценки или оценки по запросу для измерения хода выполнения.
Настройка правил
Правила спроектированы так, чтобы их можно было настроить и расширить. Набор правил Майкрософт подходит для работы в большинстве сред. Однако невозможно иметь один набор правил, который будет работать для каждой отдельной среды. Пользователи могут создавать собственные файлы JSON и настраивать существующие правила или добавлять новые. Примеры настройки и полный набор правил Майкрософт доступны в репозитории примеров. Для получения дополнительной информации о запуске командлетов оценки SQL с пользовательскими JSON-файлами используйте командлет Get-Help
.
Доступные параметры для настройки правил
Включение и отключение определенных правил или групп правил (с помощью тегов)
Вы можете замолчать определенные правила, если они не применяются к вашей среде, или пока не будет выполнена запланированная работа, чтобы устранить проблему.
Изменение параметров порогового значения
Отдельные правила имеют пороговые значения, которые сравниваются с текущим значением метрики для выявления проблем. Если пороговые значения по умолчанию не подходят, их можно изменить.
Добавление дополнительных правил, написанных вами или третьими лицами
Вы можете объединить наборы правил, добавив один или несколько JSON-файлов в качестве параметров в вызов API оценки SQL. Ваша организация может написать эти файлы самостоятельно или получить их от третьей стороны. Например, вы можете использовать файл JSON, который отключает определенные правила из набора правил Microsoft, другой файл JSON от отраслевого эксперта, который включает правила, которые полезны для вашей среды, и еще один файл JSON, который изменяет некоторые пороговые значения в этом файле.
Внимание
Мы призываем вас не использовать наборы правил, поступающие из ненадежных источников, пока вы тщательно не просмотрите их, чтобы убедиться, что они безопасны.