===== Однострочные решения PowerShell для общих задач SQL Server DBA. Пример 2: Сбор информации в SQL Server =====
{{:powershell:sql-server:pasted:20211127-122145.png }} В этой заметке рассмотрены примеры создания однострочных сценариев **PowerShell**, работающих с объектами баз данных **SQL Server**
\\
В первую очередь нужно импортировать PowerShell-модуль SQLPS:
Import-Module SQLPS -DisableNameChecking;
Найти 10 самых больших таблиц (в строках) в БД:
dir sqlserver:\sql\SERVERNAME\INSTANCENAME\databases\DBNAME\tables `
| sort rowcount -desc | select name, rowcount -first 10;
Найти логины с правами ''sysadmin'' на множестве серверов (предполагаем только экземпляр sql сервера по умолчанию):
'Server1', 'Server2', 'Server3' | % { dir "sqlserver:\sql\$_\default\logins" } `
| ? {$_.ismember('sysadmin')} | select Parent, Name | ft -AutoSize;
Найти размеры пользовательских БД на множестве серверов (предполагаем только экземпляры sql сервера по умолчанию):
'Server1', 'Server2', 'Server3' | % { dir sqlserver:\sql\$_\default\databases } `
| select parent, name, size | ogv -Title "Database Size(MB)";
Проверяем наличие логина с указанным именем на каких-либо серверах (предполагаем только экземпляры sql сервера по умолчанию):
'Server1', 'Server2', 'Server3' | % { dir sqlserver:\sql\$_\default\logins } `
| ? {$_.name -like '*ThisLogin*'} | select Parent, Name;
Проверяем, есть ли какая-либо БД с моделью восстановления НЕ simple, которая не имеет бэкапа лога транзакций за последний 1 час:
'Server1', 'Server2', 'Server3' | % {dir sqlserver:\sql\$_\default\databases} `
| ? {($_.RecoveryModel -ne 'Simple') `
-and ($_.lastlogbackupdate -lt (get-date).addhours(-1))} `
| select Parent, Name, LastLogbackupdate;
----
Проверено на следующих конфигурациях:
^ Версия ОС ^ Версия PowerShell ^ Версия SQL Server ^
| Windows Server 2008R2 | 3.0+ | SQL Server 2012 |
----
{{:user:pokunev.png?50&nolink |}} Автор первичной редакции:\\ [[user:pokunev|Пётр Окунев]] \\ Время публикации: 29.11.2021 15:19
{{tag>PowerShell "SQL Server" "T-SQL"}}
~~DISCUSSION~~