Лучший отвечающий
Сбор информации о MS SQL с помощью Powershell

Вопрос
-
Здравствуйте! Подскажите пожалуйста из своего опыта скрипт под Powershell для сбора следующих данных о MS SQL:
- список всех баз и файлов логов
- размер баз и логов
- расположение баз и логов
- тип восстановления баз и логов
- установленное ограничение на размер ОЗУ
- Используется ли протокол Shared Memory и какой он в списке
29 октября 2015 г. 13:09
Ответы
-
4 - добавить пункт для вывода свойства $db.RecoveryModel
6 - https://gallery.technet.microsoft.com/scriptcenter/Get-Set-SQL-Max-Memory-19147057
- Помечено в качестве ответа KirillV 29 октября 2015 г. 20:26
29 октября 2015 г. 13:50Отвечающий -
Все данные вопросы больше подходят для секции о SQL Server, нежели Windows Powershell.
В Powershell v 3, существует командлет Invoke-Sqlcmd, который достаточно гибкий.
Пример использования на локальном компьютере(с Windows аутентификацией, под пользователем, имющим административные привилегии:
Invoke-Sqlcmd -Query "select getdate()" -Verbose
В Powershell v 2, специального командлета нет, но можно воспользоваться поддержкой .NET:
$dataSource="localhost" $database ="master" #$connectionString="Server=$dataSource;uid=$user; pwd=$pwd;Database=$database;Integrated Security=False;" #если используется SQL Server авторизация $connectionString="Server=$dataSource;Database=$database;Integrated Security=True;" $connection=New-Object System.Data.SqlClient.SqlConnection $connection.ConnectionString=$connectionString $connection.Open() $query = @" SELECT @@VERSION as Version "@ $command = $connection.CreateCommand() $command.CommandText = $query $result = $command.ExecuteReader() $table = new-object “System.Data.DataTable” $table.Load($result) $table | Format-Table -AutoSize -Wrap
Касательно всех затребованных данных в списке - все они есть в административных представления SQL Server, рекомендую обратиться в SQL Server секцию или SQL Books Online.
Например:
Invoke-SQLServer -Query 'SELECT Name [Database], Physical_Name [Physical file], size*8 [Size_KB] FROM sys.master_files ' | ft * -Wrap -AutoSize
- Изменено KirillPashkov 29 октября 2015 г. 13:54
- Помечено в качестве ответа KirillV 29 октября 2015 г. 15:02
29 октября 2015 г. 13:52
Все ответы
-
4 - добавить пункт для вывода свойства $db.RecoveryModel
6 - https://gallery.technet.microsoft.com/scriptcenter/Get-Set-SQL-Max-Memory-19147057
- Помечено в качестве ответа KirillV 29 октября 2015 г. 20:26
29 октября 2015 г. 13:50Отвечающий -
Все данные вопросы больше подходят для секции о SQL Server, нежели Windows Powershell.
В Powershell v 3, существует командлет Invoke-Sqlcmd, который достаточно гибкий.
Пример использования на локальном компьютере(с Windows аутентификацией, под пользователем, имющим административные привилегии:
Invoke-Sqlcmd -Query "select getdate()" -Verbose
В Powershell v 2, специального командлета нет, но можно воспользоваться поддержкой .NET:
$dataSource="localhost" $database ="master" #$connectionString="Server=$dataSource;uid=$user; pwd=$pwd;Database=$database;Integrated Security=False;" #если используется SQL Server авторизация $connectionString="Server=$dataSource;Database=$database;Integrated Security=True;" $connection=New-Object System.Data.SqlClient.SqlConnection $connection.ConnectionString=$connectionString $connection.Open() $query = @" SELECT @@VERSION as Version "@ $command = $connection.CreateCommand() $command.CommandText = $query $result = $command.ExecuteReader() $table = new-object “System.Data.DataTable” $table.Load($result) $table | Format-Table -AutoSize -Wrap
Касательно всех затребованных данных в списке - все они есть в административных представления SQL Server, рекомендую обратиться в SQL Server секцию или SQL Books Online.
Например:
Invoke-SQLServer -Query 'SELECT Name [Database], Physical_Name [Physical file], size*8 [Size_KB] FROM sys.master_files ' | ft * -Wrap -AutoSize
- Изменено KirillPashkov 29 октября 2015 г. 13:54
- Помечено в качестве ответа KirillV 29 октября 2015 г. 15:02
29 октября 2015 г. 13:52