=====Изменения PowerShell и новые командлеты для SQL Server 2016=====
{{:powershell:sql-server:pasted:20211127-122145.png }} Данный материал является переводом оригинальной стать: [[https://www.mssqltips.com/sqlservertip/4513/powershell-changes-and-new-cmdlets-for-sql-server-2016/|Rajendra Gupta "PowerShell changes and new cmdlets for SQL Server 2016"]]
**PowerShell** - это важная оболочка Windows, которая может взаимодействовать с **SQL Server**, помогая автоматизировать и выполнять несколько задач администратора баз данных. Windows PowerShell поддерживает более сложную логику, чем сценарии T-SQL, что дает администраторам SQL Server возможность создавать надежные сценарии администрирования. В **SQL Server 2016** есть некоторые существенные изменения, а также новые командлеты, и в этом совете мы рассмотрим некоторые из этих новых командлетов PowerShell.
\\
==== PS-модуль SQLSERVER ====
Microsoft изменила модуль SQL PowerShell с ''SQLPS'' на ''SQLSERVER''.
Чтобы увидеть командлеты в модуле SQLSERVER, выполните следующую команду.
get-command -module SQLSERVER
\\
==== Командлет Get-SqlErrorLog ====
PowerShell командлет **Get-SqlErrorLog** используется для получения сведений из журналов SQL Server. Мы можем фильтровать журналы ошибок по тексту, датам и т.д.
Мы можем получить свойство и определение **Get-sqlErrorLog** следующим образом:
Get-Command | Where-Object {$_.Name -eq"Get-SqlErrorLog"} | Format-List *
Получить общее количество событий в журналах ошибок:
Get-SqlErrorLog -ServerInstance localhost\sql2016 | measure
Отфильтровать журналы ошибок
Вот пример, в котором мы ищем слово «login».
Get-SqlErrorLog | Where-Object { $_.text -like "*Login*"} | Out-Grid View
Точно так же, если мы хотим отфильтровать с помощью ключевого слова ''SQL Server'', выполните следующую команду.
Get-SqlErrorLog | Where-Object { $_.text -like "*SQL Server*"} | Out-GridView
Чтобы отфильтровать журналы между двумя датами, мы можем использовать параметр -Before и -After.
Get-SqlErrorLog -After "2021/09/25" -Before "2021/10/01" `
| Where-Object { $_.text -like "*SQL Server*"} | Out-GridView
Чтобы просмотреть журналы ошибок после определенной даты, мы можем запустить следующую команду.
Get-SqlErrorLog `
| Where-Object {$_.Text -like '*SQL Server*' -and $_.Date -gt '10/01/2016'} `
| Out-GridView
\\
==== Командлет Set-SqlErrorLog ====
Мы можем получить свойство и определение Set-sqlErrorLog следующим образом:
Get-Command | Where-Object {$_.Name -eq "Set-SqlErrorLog"} | Format-List *
Мы можем настроить количество журналов ошибок с помощью этой команды. Самые старые файлы удаляются при создании нового файла журнала.
Чтобы ограничить количество файлов с помощью PowerShell, напишите следующее:
Set-SqlErrorLog -MaxLogCount 10
Если мы хотим сгенерировать сценарий T-SQL, чтобы установить максимальное количество файлов журнала ошибок равным 12, выполните следующую команду.
Set-SqlErrorLog -MaxLogCount 12 -Script
----
{{:user:pokunev.png?50&nolink |}} Автор первичной редакции:\\ [[user:pokunev|Пётр Окунев]] \\ Время публикации: 27.11.2021 11:22
{{tag>PowerShell "SQL Server" "SQL Server 2016" T-SQL}}
~~DISCUSSION~~