Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Invoke-PolicyEvaluation — это командлет SQL Server, который сообщает, соответствует ли целевой набор объектов SQL Server условиям, указанным в одной или нескольких политиках управления на основе политик.
Использование Invoke-PolicyEvaluation
Invoke-PolicyEvaluation оценивает одну или несколько политик по набору объектов SQL Server, называемых целевым набором. Набор целевых объектов поставляется с целевого сервера. Каждая политика определяет условия, которые являются допустимыми состояниями для целевых объектов. Например, политика надежной базы данных указывает, что свойство базы данных TRUSTWORTHY должно иметь значение OFF.
Параметр -AdHocPolicyEvaluationMode указывает действия, выполняемые:
Проверьте
Сообщите о состоянии соответствия целевых объектов с помощью учетных данных текущего входа. Не перенастраивайте объекты. Это параметр по умолчанию.
CheckSqlScriptAsProxy
Сообщите о соответствии целевых объектов, используя учетные данные прокси-логина ##MS_PolicyTSQLExecutionLogin##. Не перенастраивайте никакие объекты.
Настройка
Сообщите о состоянии соответствия целевых объектов с помощью учетных данных текущего входа. Перенастройте все настраиваемые и детерминированные параметры, которые не соответствуют политикам.
Указание политики
То, как указывается политика, зависит от места её хранения. Политики можно хранить в двух форматах:
Они могут быть объектами, хранящимися в хранилище политик, например экземпляр ядра СУБД. Папку SQLSERVER:\SQLPolicy можно использовать для указания расположения политик в хранилище политик. Командлеты Windows PowerShell можно использовать для фильтрации входных полиций на основе их свойств, таких как использование Where-Object для фильтрации по категории политики или Get-Item для фильтрации по имени политики.
Их можно экспортировать как XML-файлы. Для указания расположения XML-файловых файлов можно использовать диск файловой системы, например D:. Командлеты Windows PowerShell, такие как Where-Object, можно использовать для фильтрации политик по их свойствам файла, например имени файла.
Если политики хранятся в хранилище политик, необходимо передать набор объектов PSObject, указывающих на политики для оценки. Обычно это делается путем отправки выходных данных командлета, например Get-Item в Invoke-PolicyEvaluation, и не требует указания параметра -Policy . Например, если вы импортировали политики Microsoft Best Practices в экземпляр вашего ядра СУБД, эта команда проведет оценку политики Состояния базы данных.
sl "SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies"
Get-Item "Database Status" | Invoke-PolicyEvaluation -TargetServerName "MYCOMPUTER"
В этом примере показано использование Where-Object для фильтрации нескольких политик из хранилища политик на основе их свойства PolicyCategory . Объекты из канала выходных данных Where-Object потребляются Invoke-PolicyEvaluation.
sl "SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies"
gci | Where-Object {$_.PolicyCategory -eq "Microsoft Best Practices: Maintenance"} | Invoke-PolicyEvaluation -TargetServer "MYCOMPUTER"
Если политики хранятся в виде XML-файлов, необходимо использовать параметр -Policy , чтобы указать путь и имя для каждой политики. Если не указать путь в параметре -Policy , Invoke-PolicyEvaulation использует текущий параметр пути sqlps . Например, эта команда оценивает одну из политик Microsoft Best Practice, установленных с SQL Server для базы данных по умолчанию для входа:
Invoke-PolicyEvaluation -Policy "C:\Program Files\Microsoft SQL Server\120\Tools\Policies\DatabaseEngine\1033\Database Status.xml" -TargetServerName "MYCOMPUTER"
Эта команда делает то же самое, только он использует текущий путь sqlps для установления расположения XML-файла политики:
sl "C:\Program Files\Microsoft SQL Server\120\Tools\Policies\DatabaseEngine\1033"
Invoke-PolicyEvaluation -Policy "Database Status.xml" -TargetServerName "MYCOMPUTER"
В этом примере показано использование командлета Get-ChildItem для получения нескольких XML-файлов политики и передачи объектов в Invoke-PolicyEvaluation:
sl "C:\Program Files\Microsoft SQL Server\120\Tools\Policies\DatabaseEngine\1033"
gci "Database Status.xml", "Trustworthy Database.xml" | Invoke-PolicyEvaluation -TargetServer "MYCOMPUTER"
Указание целевого набора
Используйте три параметра для указания набора целевых объектов:
-TargetServerName указывает экземпляр SQL Server, содержащий целевые объекты. Вы можете указать сведения в строке, которая использует формат, определенный для свойства SqlConnection ConnectionString класса. Вы можете использовать класс SqlConnectionStringBuilder для создания правильно форматированной строки подключения. Вы также можете создать SqlStoreConnection объект и передать его в -TargetServer. Если указать строку, которая имеет только имя сервера, Invoke-PolicyEvaluation использует проверку подлинности Windows для подключения к серверу.
-TargetObjects принимает объект или массив объектов, представляющих объекты SQL Server в целевом наборе. Например, можно создать массив объектов класса для передачи Database в -TargetObjects.
-TargetExpressions принимает строку, содержащую выражение запроса, указывающее объекты в целевом наборе. Выражение запроса находится в виде узлов, разделенных символом "/". Каждый узел находится в форме ObjectType[Filter]. Тип объекта является одним из объектов в иерархии объектов sql Server Management Object (SMO). Фильтр — это выражение, которое фильтрует объекты на этом узле. Дополнительные сведения см. в разделе "Выражения запросов" и "Универсальные имена ресурсов".
Укажите либо -TargetObjects, либо -TargetExpression, а не оба.
В этом примере используется объект Sfc.SqlStoreConnection для указания целевого сервера:
sl "C:\Program Files\Microsoft SQL Server\120\Tools\Policies\DatabaseEngine\1033"
$conn = New-Object Microsoft.SqlServer.Management.Sdk.Sfc.SqlStoreConnection("server='MYCOMPUTER';Trusted_Connection=True")
Invoke-PolicyEvaluation -Policy "Database Status.xml" -TargetServerName $conn
В этом примере используется -TargetExpression для определения конкретной базы данных для оценки:
sl "C:\Program Files\Microsoft SQL Server\120\Tools\Policies\DatabaseEngine\1033"
Invoke-PolicyEvaluation -Policy "Database Status.xml" -TargetServerName "MyComputer" -TargetExpression "Server[@Name='MYCOMPUTER']/Database[@Name='AdventureWorks2012']"
Оценка политик служб Analysis Services
Чтобы оценить политики для экземпляра служб Analysis Services, необходимо загрузить и зарегистрировать сборку в PowerShell, создать переменную с объектом подключения служб Analysis Services и передать переменную параметру -TargetObject . В этом примере показано, как оценить политику конфигурации области применения лучших практик для служб Analysis Services:
sl "C:\Program Files\Microsoft SQL Server\120\Tools\Policies\AnalysisServices\1033"
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices")
$SSASsvr = New-Object Microsoft.AnalysisServices.Server
$SSASsvr.Connect("Data Source=Localhost")
Invoke-PolicyEvaluation -Policy "Surface Area Configuration for Analysis Services Features.xml" -TargetObject $SSASsvr
Оценка политик службы отчетности
Чтобы оценить политики служб Reporting Services, необходимо загрузить и зарегистрировать сборку в PowerShell, создать переменную с объектом подключения Служб Reporting Services и передать переменную параметру -TargetObject . В этом примере показано, как оценить политику конфигурации области воздействия рекомендаций по лучшим практикам для служб SQL Reporting Services.
sl "C:\Program Files\Microsoft SQL Server\120\Tools\Policies\ReportingServices\1033"
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Dmf.Adapters")
$SSRSsvr = new-object Microsoft.SqlServer.Management.Adapters.RSContainer('MyComputer')
Invoke-PolicyEvaluation -Policy "Surface Area Configuration for Reporting Services 2008 Features.xml" -TargetObject $SSRSsvr
Форматирование выходных данных
По умолчанию выходные данные Invoke-PolicyEvaluation отображаются в окне командной строки в виде краткого отчета в формате, доступном для чтения. Параметр -OutputXML можно использовать для указания того, что командлет вместо этого создает подробный отчет в виде XML-файла. Invoke-PolicyEvaluation использует схему формата обмена языка моделирования систем (SML-IF), чтобы файл можно было считывать средствами SML-IF.
sl "SQLSERVER:\SQLPolicy\MyComputer\DEFAULT\Policies"
Invoke-PolicyEvaluation -Policy "Datbase Status" -TargetServer "MYCOMPUTER" -OutputXML > C:\MyReports\DatabaseStatusReport.xml