Подключение к базе данных из скрипта PowerShell и выполнение запроса к базе можно сделать несколькими способами. Приведу 2 из них, которые на мой взгляд самые простые.
1-й способ. Подключение к базе данных MS SQL Server с помощью класса SqlConnection
Класс SqlConnection из библиотеки классов .NET Framework позволяет выполнять операции подключения и запросов очень легко. А учитывая, что .NET Framework идет по-умолчанию в Windows начиная с 7-й версии, можно считать, что его можно использовать практически везде.
Подключение к MS SQL Server с учетными данными пользователя, вошедшего в Windows, т.е. так называемая Windows-авторизация, выполняется так:
1 2 3 4 5 | $SqlServer = "адрес_сервера" ; $SqlCatalog = "база_данных" ; $SqlConnection = New-Object System.Data.SqlClient.SqlConnection $SqlConnection .ConnectionString = "Server=$SqlServer; Database=$SqlCatalog; Integrated Security=True" $SqlConnection .Open() |
Подключение к MS SQL Server со стандартной авторизацией, т.е. по логину и паролю в базе данных:
1 2 3 4 5 6 7 | $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-запрос и обработать результаты теперь можно, например, таким способом:
1 2 3 4 5 6 7 | $SqlCmd = $SqlConnection .CreateCommand() $SqlCmd .CommandText = "текст_sql-запроса" $objReader = $SqlCmd .ExecuteReader() while ( $objReader .read()) { echo $objReader .GetValue(0) } $objReader .close() |
Выполнить sql-запрос на изменение/добавление/удаление данных можно следующим образом:
1 2 3 | $SqlCmd = $SqlConnection .CreateCommand() $SqlCmd .CommandText = "delete from version" $SqlCmd .ExecuteNonQuery() | Out-Null |
В последней строке "Out-Null" используется для подавления вывода результатов выполнения запроса. Дело в том, что для запросов типа INSERT, UPDATE, DELETE команда ExecuteNonQuery возвращает количество обработанных записей, а в остальных случаях возвращает "-1". Поэтому, если происходит массовое изменение данных, то вывод лучше подавить.
Закрыть подключение к базе можно командой:
1 | $SqlConnection .close() |
Как видите, всё довольно просто.
2-й способ. Подключение к базе данных MS SQL Server с помощью библиотеки ADO
Библиотека ADO (Microsoft ActiveX Data Object) позволяет выполнять подключение не только к базам MS SQL Server, но и ко множеству других видов баз данных. Она очень удобна в использовании и универсальна. Написав программу для работы с одним типом базы данных, вам не придется переделывать всю программу для другой базы, а всего-лишь сделать другую строку подключения к базе. Приведу несколько примеров работы с базой данных MS SQL Server в PowerShell.
Подключение к базе данных:
1 2 3 4 5 6 7 8 9 10 11 | $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-запроса и обработка результатов:
1 2 3 4 5 6 | $recordSet = $connection .Execute( "текст_sql-запроса" ) While ( -not $recordSet .EOF) { echo $recordSet .Fields.Item( "FieldName" ).Value $recordSet .MoveNext() } $connection .Close() |
Выполнение sql-запроса на изменение/добавление данных:
1 | $connection .Execute( "текст_sql-запроса" ) |
Думаю, приведенных 2-х способов вполне достаточно, чтобы начать работать с БД SQL Server из скриптов PowerShell, читать данные, менять их и добавлять. В следующей статье будет рассмотрено подключение к базе данных Access.
Комментарии к статье:
Добавить комментарий: