SQL Serverの単純なストアドプロシージャからデータを取得するのが困難です。私は変数を3つの列から入力する必要があるPowershellスクリプトを持っています(このプロシージャは1行を返します)Powershellを使用してSQL Server 2008からデータを取得する
これは私が動作していないものです。何とか私は列の値を正しく参照していません。私はさまざまな方法を試みましたが、通常、 "null配列にインデックスできません"というエラーが表示されます。私は結果セットを反復処理する必要はありません、私は直接、1行からいくつかの値を設定したいが、私はあまりにも、可能な場合は、列名を使用したい変数
$conn = new-object Microsoft.SqlServer.Management.Common.ServerConnection
$conn.ConnectionString = `
"Server=ServerName;Database=ShopDB;Integrated Security=True"
$sqlQuery = new-object System.Collections.Specialized.StringCollection
$sqlQuery.Add("JobSettingsGet")
$Resultset = $conn.ExecuteWithResults($sqlQuery)
# $UserName = $table.Rows(0).Columns(0)
# error - Method invocation failed because [System.Data.DataTable] doesn't
# contain a method named 'Rows'.
# $UserName = $table.Rows[0].Columns[0]
# error - cannot index null array
# $UserName = $table.Row(0).Column(0)
# error - Cannot index into a null array, also Method invocation failed
# because [System.Data.DataTable] doesn't contain a method named 'Row'.
# $UserName = $table.Rows[0].Columns[1].Value
# error - cannot index null array
に戻りました。
任意のポインタ?
おかげで、 シルビア
おかげでゼロ次のResultSet、ゼロ次表、ゼロ次の行アイテムをピッキングすることによって得られます。私は、データベースに接続し、foreachイテレータを使用して動作することができます。しかし、私がしたいことは、(私は3列の行が1つしかないことを知っているので)実際のデータを反復せずに変数に取り込むことです。以下のような何か(エラーを与える "ができるNULLを配列にないインデックス"): $ユーザー名= $ table.rows [0] .columns [0] [0]はSystem.Dataあるべき – Sylvia
$ table.rows。 Columnsメンバーを持たないDataRow。 item()メソッドを使ってみてください:$ table.Rows [0] .item( "Login")。 – vonPryz
ありがとうございます、今すぐ動作します。他のデータアクセスメソッド(ExecuteWithResultsなど)の代わりにsqldataadapterを使用するのが最善の場合のコメント – Sylvia