Подключение к базе данных из скрипта PowerShell и выполнение запроса к базе можно сделать несколькими способами. Приведу 2 из них, которые на мой взгляд самые простые.
1-й способ. Подключение к базе данных MS SQL Server с помощью класса SqlConnection
Класс SqlConnection из библиотеки классов .NET Framework позволяет выполнять операции подключения и запросов очень легко. А учитывая, что .NET Framework идет по-умолчанию в Windows начиная с 7-й версии, можно считать, что его можно использовать практически везде.
Подключение к MS SQL Server с учетными данными пользователя, вошедшего в Windows, т.е. так называемая Windows-авторизация, выполняется так:
$SqlServer = "адрес_сервера"; $SqlCatalog = "база_данных"; $SqlConnection = New-Object System.Data.SqlClient.SqlConnection $SqlConnection.ConnectionString = "Server=$SqlServer; Database=$SqlCatalog; Integrated Security=True" $SqlConnection.Open()
Подключение к MS SQL Server со стандартной авторизацией, т.е. по логину и паролю в базе данных:
$SqlServer = "адрес_сервера"; $SqlCatalog = "база_данных"; $SqlLogin = "пользователь"; $SqlPassw = "пароль" $SqlConnection = New-Object System.Data.SqlClient.SqlConnection $SqlConnection.ConnectionString = "Server=$SqlServer; Database=$SqlCatalog; User ID=$SqlLogin; Password=$SqlPassw;" $SqlConnection.Open()
Выполнить sql-запрос и обработать результаты теперь можно, например, таким способом:
$SqlCmd = $SqlConnection.CreateCommand() $SqlCmd.CommandText = "текст_sql-запроса" $objReader = $SqlCmd.ExecuteReader() while ($objReader.read()) { echo $objReader.GetValue(0) } $objReader.close()
Выполнить sql-запрос на изменение/добавление/удаление данных можно следующим образом:
$SqlCmd = $SqlConnection.CreateCommand() $SqlCmd.CommandText = "delete from version" $SqlCmd.ExecuteNonQuery() | Out-Null
В последней строке "Out-Null" используется для подавления вывода результатов выполнения запроса. Дело в том, что для запросов типа INSERT, UPDATE, DELETE команда ExecuteNonQuery возвращает количество обработанных записей, а в остальных случаях возвращает "-1". Поэтому, если происходит массовое изменение данных, то вывод лучше подавить.
Закрыть подключение к базе можно командой:
$SqlConnection.close()
Как видите, всё довольно просто.
2-й способ. Подключение к базе данных MS SQL Server с помощью библиотеки ADO
Библиотека ADO (Microsoft ActiveX Data Object) позволяет выполнять подключение не только к базам MS SQL Server, но и ко множеству других видов баз данных. Она очень удобна в использовании и универсальна. Написав программу для работы с одним типом базы данных, вам не придется переделывать всю программу для другой базы, а всего-лишь сделать другую строку подключения к базе. Приведу несколько примеров работы с базой данных MS SQL Server в PowerShell.
Подключение к базе данных:
$Server = "имя_сервера_или_ip_адрес" $BaseName = "название_базы_данных" $BaseLogin = "пользователь_для_подключения_к_БД" $BasePassw = "пароль_для_подключения_к_БД" $connection = New-Object -com "ADODB.Connection" $ConnectionString = "Provider=SQLOLEDB.1; Data Source=$Server; Initial Catalog=$BaseName; User ID=$BaseLogin; Password=$BasePassw;" $connection.Open($ConnectionString)
Выполнение sql-запроса и обработка результатов:
$recordSet = $connection.Execute("текст_sql-запроса") While (-not $recordSet.EOF) { echo $recordSet.Fields.Item("FieldName").Value $recordSet.MoveNext() } $connection.Close()
Выполнение sql-запроса на изменение/добавление данных:
$connection.Execute("текст_sql-запроса")
Думаю, приведенных 2-х способов вполне достаточно, чтобы начать работать с БД SQL Server из скриптов PowerShell, читать данные, менять их и добавлять. В следующей статье будет рассмотрено подключение к базе данных Access.
Комментарии к статье:
Добавить комментарий: