===== Однострочные решения PowerShell для общих задач SQL Server DBA. Пример 3: Более сложные примеры PowerShell для SQL Server =====
{{:powershell:sql-server:pasted:20211127-122145.png }} В этой заметке рассмотрены примеры создания однострочных сценариев **PowerShell**, работающих с объектами баз данных **SQL Server**
\\
В первую очередь нужно импортировать PowerShell-модуль SQLPS:
Import-Module SQLPS -DisableNameChecking;
Найти членство пользователя в ролях БД:
dir sqlserver:\sql\SERVERNAME\INSTANCENAME\databases\DBNAME\users `
| % -Begin {$a=@()} `
-process {$a += New-Object PSObject -property @{User=$_; Role=$_.EnumRoles()}} `
-end {$a} `
| select User, Role | ft -AutoSize -Wrap;
Найти статус последнего исполнения Заданий SQL Server Agent на экземпляре SQL Server:
dir sqlserver:\sql\SERVERNAME\default\jobserver\jobs `
| % {$_.enumhistory()} | group jobname | % {$_.group[0]} `
| select Server, JobName, RunDate, Message;
Найти текущие сбойные задания SQL Server Agent:
dir sqlserver:\sql\SERVERNAME\default\jobserver\jobs `
| % {$_.enumhistory()} | group jobname | % {$_.group[0]} `
| ? {$_.RunStatus -eq 0} | select Server, JobName, Rundate, Message;
Найти причину последней остановки/перезагрузки сервера (Примечание: локальный язык должен быть English — US, иначе, [Message] не отобразится. Это известный баг):
'Server1', 'Server2', 'Server3' `
| % {Get-WinEvent -ComputerName $_ `
-filterhashtable @{logname='System'; id=1074; level=4} -MaxEvents 1 } `
| select Message, TimeCreated | format-list;
Проверить, когда в последний раз была перезагрузка множества машин:
gwmi -class win32_OperatingSystem -Computer 'Server1', 'Server2', 'Server3' `
| select @{label='Server'; e={$_.PSComputerName}}, `
@{label='LastBootupTime'; e={$_.converttodatetime($_.lastBootupTime)}};
----
Проверено на следующих конфигурациях:
^ Версия ОС ^ Версия PowerShell ^ Версия SQL Server ^
| Windows Server 2008R2 | 3.0+ | SQL Server 2012 |
----
{{:user:pokunev.png?50&nolink |}} Автор первичной редакции:\\ [[user:pokunev|Пётр Окунев]] \\ Время публикации: 29.11.2021 15:32
{{tag>PowerShell "SQL Server" "T-SQL"}}
~~DISCUSSION~~