Powershell - MySQL Query, ошибка при каждом другом запуске - PullRequest
0 голосов
/ 18 мая 2019

Я работаю над сценарием powershell, который нуждается в некотором входе из базы данных mySQL.Что касается жизни, я не могу сказать, что я здесь сделал неправильно.

Каждый раз, когда я запускаю этот скрипт, я получаю сообщение об ошибке Exception calling "Open" with "0" argument(s): "Out of sync with server"[0].Итак, при первом запуске он извлекает ожидаемые данные и выводит их на экран, а затем при следующем запуске я получаю эту ошибку.И цикл просто повторяется.Вот мой полный код (сейчас это всего лишь тестовый запрос для извлечения, а затем выгрузки данных. Если это имеет значение, сервер mySQL работает на MariaDB 10.3.14 на хосте Ubuntu 18.04.

$error.Clear()

$sqlQuery = get-content -path "C:\querytext.sql" -Raw
$sqlUser = "myuser"
$sqlPass = "mypass"
$sqlHost = "myserver"
$sqlDB = "dbname"
$connectionString = "server= $sqlHost;port=3306;uid=$sqlUser;pwd=$sqlPass;database=$sqlDB"

Try{
    $connection = New-Object MySql.data.MySqlClient.MySqlConnection
    $connection.ConnectionString = $connectionString
    $connection.Open()
    $command = New-Object MySql.data.MySqlClient.MySqlCommand($sqlQuery,$connection)
    $dataAdapter = New-Object MySql.data.MySqlClient.MySqlDataAdapter($command)
    $dataSet = New-Object System.Data.DataSet
    $dataAdapter.fill($dataSet, "data") | Out-Null
    $command.Dispose()
    $sqlResults = $dataSet.tables["data"]
}
Catch {
    Write-Host "ERROR : Unable to run query : $query `n$Error[0]"
}

$connection.close()

$sqlResults | Format-Table

$sqlResults | ForEach-Object {
    write-host $_.fname
}

1 Ответ

0 голосов
/ 21 мая 2019

Могу ли я предложить использовать модуль SQL PS:

https://docs.microsoft.com/en-us/sql/powershell/download-sql-server-ps-module?view=sql-server-2017

На этой странице есть инструкции по установке и она от Microsoft.Лично, класс dotnet, который вы используете, работает, но с ним относительно сложно работать.

С этим модулем гораздо проще подключиться к БД, и вам не нужно беспокоиться о микроуправлении соединениями.

Invoke-Sqlcmd -ServerInstance $sqlHost -Query $sqlQuery -Database $sqlDB -Username $sqlUser -Password $sqlPass

Это вернет объект PS, как и любой другой командлет PS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...