none
Сбор информации о MS SQL с помощью Powershell RRS feed

  • Вопрос

  • Здравствуйте! Подскажите пожалуйста из своего опыта скрипт под Powershell для сбора следующих данных о MS SQL:

    1. список всех баз и файлов логов
    2. размер баз и логов
    3. расположение баз и логов
    4. тип восстановления баз и логов
    5. установленное ограничение на размер ОЗУ
    6. Используется ли протокол Shared Memory и какой он в списке

    29 октября 2015 г. 13:09

Ответы

    • Помечено в качестве ответа 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

Все ответы

    • Помечено в качестве ответа 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