• 締切済み

PowerShellからODBC接続してSQL実行

PowerShellからORACLEにODBC接続してSQL実行しています。 抜粋となりますが、以下の処理をしていますが、データの取得で エラーが発生し、どうしてもORACLEのDBから抽出できません。 [void][System.Reflection.Assembly]::LoadWithPartialName("System.Data") $connectionString="DSN=xxxxx;uid=xxxxx;pwd=xxxxx;" $conn = New-Object System.Data.Odbc.OdbcConnection($connectionString) $odbcCommand = New-Object System.Data.Odbc.OdbcCommand $odbcCommand.Connection = $conn $sql = "select sysdba from dual" $odbcCommand.CommandText = $sql $dataAdapter = New-Object System.Data.Odbc.OdbcDataAdapter $dataAdapter.SelectCommand = $odbcCommand $dataSet = New-Object System.Data.DataSet $nRecs = $dataAdapter.Fill($dataSet) "1" 個の引数を指定して "Fill" を呼び出し中に例外が発生しました: "算術演算の結果オーバーフローが発生しました。" 発生場所 行:1 文字:27 + $nRecs = $dataAdapter.Fill <<<< ($dataSet) + CategoryInfo : NotSpecified: (:) []、MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException DataSetに格納でエラーとなったので、ExecuteReaderに変えて実行。 上記、処理に $conn.Open() を追加し、 $odbcReader = $odbcCommand.ExecuteReader() "0" 個の引数を指定して "ExecuteReader" を呼び出し中に例外が発生しました: "算術演算の結果オーバーフローが発生しました。" 発生場所 行:1 文字:41 + $odbcReader = $odbcCommand.ExecuteReader <<<< () + CategoryInfo : NotSpecified: (:) []、MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException と、DataSetを使おうが、ExecuteReaderを使おうが同じエラーが発生した。 何が原因で発生しているのでしょうか。 また、対処はどのようにしたらよいのでしょうか。 お願いします。 環境 ・Windows7 64ビット ・64ビット oracle client 11gR2 ・sqlnet.ora、tnsnames.ora を作成 ・odbcデータソース作成  TNSサービス名には、tnsnames.ora にあるサービス名を指定

みんなの回答

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.1

別の手法ですが、PowerShellでSQL Plusを利用するのはどうでしょうか? http://www.oborodukiyo.info/ORACLE/11g/ORA-SqlPlusByPowerShell また、次のようなソフトがあります。 設定には開発の知識が必要な部分もありますが、ODBCやOLEと似たところもあるのでできるかなと思って紹介します。 http://www.oborodukiyo.info/Soft/DB-Explorer/DB-Explorer

abc999xyz
質問者

お礼

ありがとうございます。 別の方法を教えて頂きありがとうございます。 ですが、できれば、ODBC接続でと考えています。