0

2 つのパラメーターがfromありto dateます。PowerShell から SQLストアド プロシージャに渡す必要があります。「YYYY-MM-DD」の形式でパラメーターを入力するための GUI を作成しました。ただし、これは文字列であり、SQL で正しく結果が得られるように、'YYYY-MM-DD, 00:00:000' の形式で sqldatetime に変換する必要があります。

以下を試しましたが、うまくいきません。私は何を間違えましたか?

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=localhost;Database=AMSDataWarehouse     test;Integrated Security=SSPI"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.Connection = $SqlConnection
$SqlCmd.CommandText = "YQBreport1"
SqlParameter param1 = new SqlParameter("@from",System.Data.SqlDbType.DateTime);
param1.Value = $from;
SqlParameter param2 = new SqlParameter("@to",System.Data.SqlDbType.DateTime);
param2.Value = $to;
$SqlConnection.Open()
$sqlcmd.ExecuteNonQuery()
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$SqlConnection.Close()
$SQLResult =$DataSet.Tables[0]
$commands = $SQLResult | foreach-object -process { $_.output }> output.ps1
.\output.ps1
4

1 に答える 1

2

あなたの構文は有効な PowerShell ではありません:

SqlParameter param1 = new SqlParameter("@from",System.Data.SqlDbType.DateTime);
param1.Value = $from;

これを試して:

$param1 = $SqlCmd.Parameters.Add("@from", [System.Data.SqlDbType]::DateTime)
$param1.Value = Get-Date $from
$param2 = $SqlCmd.Parameters.Add("@to", [System.Data.SqlDbType]::DateTime)
$param2.Value = Get-Date $to
于 2013-03-11T10:41:59.440 に答える