Powershell-MySQL查询,每隔运行一次就会出错

时间:2019-05-18 20:32:50

标签: mysql powershell

我正在研究一个Powershell脚本,该脚本需要来自mySQL数据库的一些输入。对于我的一生,我无法在这里说出我做错了什么。

每隔一次我运行此脚本,都会收到错误Exception calling "Open" with "0" argument(s): "Out of sync with server"[0]。因此,在第一次运行时,它将提取预期的数据并将其转储到我的屏幕上,然后在下一次运行中,我得到该错误。而且循环只是重复。这是我的完整代码(现在它只是一个测试查询,用于提取然后转储数据。如果重要,则mySQL服务器在Ubuntu 18.04主机上运行MariaDB 10.3.14。

$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 :(得分:0)

我建议使用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 cmdlet一样返回PS对象。