PowerShell модуль для SQL / PowerShell module for SQL

Ответить
Аватара пользователя
Дмитрий И.А.
Сообщения: 2
Зарегистрирован: 10 ноя 2017 02:46
Контактная информация:

PowerShell модуль для SQL / PowerShell module for SQL

Сообщение Дмитрий И.А. » 10 ноя 2017 03:18

Добрый день

В этой записи я хочу представить модуль для PowerShell для работы с СУБД MS SQL

Требования:
framework не ниже 3.5

Принцип установки прост:
Скопируйте и сохраните код в текстовый файл, например SQLDataTools, с расширением psm1
далее подгрузив его в консоль PowerShell или строкой в скрипте Import-Module (" [путь к файлу] \SQLDataTools.psm1")
получите возможность манипуляции с SQL базами.

Код модуля:
function Get-DatabaseData {
[CmdletBinding()]
param (
[string]$connectionString,
[string]$query,
[switch]$isSQLServer
)
if ($isSQLServer) {
Write-Verbose 'in SQL Server mode'
$connection = New-Object System.Data.SqlClient.SqlConnection
} else {
Write-Verbose 'in OleDB mode'
$connection = New-Object System.Data.OleDb.OleDbConnection
}
$connection.ConnectionString = $connectionString
$command = $connection.CreateCommand()
$command.CommandText = $query
if ($isSQLServer) {
$adapter = New-Object System.Data.SqlClient.SqlDataAdapter $command
} else {
$adapter = New-Object System.Data.OleDb.OleDbDataAdapter $command
}
$dataset = New-Object System.Data.DataSet
$adapter.Fill($dataset)
$dataset.Tables[0]
}
function Invoke-DatabaseQuery {
[CmdletBinding()]
param (
[string]$connectionString,
[string]$query,
[switch]$isSQLServer
)
if ($isSQLServer) {
Write-Verbose 'in SQL Server mode'
$connection = New-Object System.Data.SqlClient.SqlConnection
} else {
Write-Verbose 'in OleDB mode'
$connection = New-Object System.Data.OleDb.OleDbConnection
}
$connection.ConnectionString = $connectionString
$command = $connection.CreateCommand()
$command.CommandText = $query
$connection.Open()
$command.ExecuteNonQuery()
$connection.close()
}

Ниже пример пары готовых функции "на все случаи жизни"

$SQl_Server = 'prm-test-sql'
$SQLDateBase = 'audit_adm'

#функция выполнения запроса на SQL сервере
function SET_Query {Invoke-DatabaseQuery -verbose -connectionString ('Server=' + $SQl_Server + ';Database=' + $SQLDateBase + ';Trusted_Connection=True;') -isSQLServer -query $args[0]}
#Функция получения данных от SQL сервера
function GET_Query {Get-DatabaseData -connectionString ('Server=' + $SQl_Server + ';Database=' + $SQLDateBase + ';Trusted_Connection=True;') -isSQLServer -Query $Args[0]}

После ввода функций, с помощью их можно легко получать данные или выполнять различные запросы, например:

GET_Query 'select TOP 10 * From Audit_adm.dbo.Audit_fs'

SET_Query 'delete From Audit_adm.dbo.Audit_fs where DateEvent <= cast (dateadd (day, -180, GETDATE()) as DATE)'

Как вы могли заметить в модуле присутствует и возможность работы с OleDB, в данном посте функционал драйвера не будет рассмотрен

Ответить

Вернуться в «Powershell»