摘要:Powershell 5使用DB2的64位ODBC驅動程序。 SQL查詢選擇「計數(*)」的作品。查詢實際數據「選擇字段」返回錯誤。 32位ODBC驅動程序根本無法工作。這裏的一個答案指向了用於轉換的ODBC設置(轉換二進制數據...),但沒有解決問題。Powershell iSeries DB2 ODBC返回「算術運算導致溢出。」
代碼:
$SqlQuery = @"
SELECT MMITNO,
MMITDS
FROM MITMAS
WHERE MMCONO = 3
AND MMITNO = '2658591351'
"@
$Db2Connection = new-object system.data.odbc.odbcconnection
$Db2Connection.connectionstring = "DSN=DB2_MR0P_64;Userid=USSRF_ADM;Password=########"
$Db2Connection.open()
# Set up to run the query
$SqlCmd = New-Object system.Data.Odbc.OdbcCommand($SqlQuery,$Db2Connection)
$DataAdapter = New-Object system.Data.Odbc.OdbcDataAdapter($SqlCmd)
$DataTable = New-Object system.Data.datatable
$RowCount = $DataAdapter.fill($DataTable)
$Db2Connection.close()
# Process the returned datatable
$DataTable.Table[0] | ForEach-object {
write-host "Total rows in MITMAS is $("{0:N0}" -f $_)."
}
返回: 異常調用 「填充」 和 「1」 的說法(S): 「算術運算導致溢出。」 在C:\ PowerShellScripts \ TestDB2.ps1:19 char:1 + $ RowCount = $ DataAdapter.fill($ DataTable) + ~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:發生OverflowException
坦率地說,我的知識我使用的是非常有限的,我通過複製和粘貼各位專家的帖子獲得了成功。所以,我很抱歉,如果答案很簡單,我只是沒有看到它。我唯一可以控制的機器是iSeries機器上沒有管理權限的本地PC。
看起來你正在關閉連接,然後試圖從中讀取數據。我會嘗試在閱讀數據之後關閉連接。 –
如果我將$ Db2Connection.close()移到Write-host語句之後,結果相同。錯誤發生在執行close()之前。它發生在填充($ DataTable)的執行過程中。 – RickInGarland
聽起來像某人更熟悉iSeries或該數據庫需要回答的東西。您也可以從另一個應用程序(例如Excel)創建一個ODBC連接,並查看您是否得到不同的結果。 –