2016-09-06 76 views
1

我有一個PS命令從一個PS腳本返回一個日期時間字段。如果在SQL Studio Manager中運行,SQL腳本將按預期工作,但如果我在Powershell內運行,它只是「計數」記錄數,在本例中爲「1」。Powershell v2.0 - SQL查詢不返回日期

$SqlCmd.CommandText = 
"SELECT q.execution_queued_timestamp 
FROM [database].[dbo].[Execution_Queue] AS q 
LEFT JOIN [database].[dbo].[Execution_Queue_Lock] AS l 
ON l.lock_id = q.lock_id 
WHERE execution_status_code = 'q'" 
$SqlCmd.Connection = $SqlConnection 
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter 
$SqlAdapter.SelectCommand = $SqlCmd 
$DataSet = New-Object System.Data.DataSet 
$SqlConnection.Close() 
$DataSet.Tables[0] 
$SqlAdapter.Fill($DataSet) 
$SQL = $SqlAdapter.Fill($DataSet) 

因此,不像我在SQL SM中那樣獲取日期時間格式,我在Powershell中獲得「1」。

如果原始T-SQL是「Select *」,則會看到類似的行爲,它會輸出記錄數而不是列出實際匹配。

任何想法?

回答

1

在$ DataSet對象中查找您的數據。我通常使用類似於

foreach ($row in $DataSet.Tables[0].rows) { $row.execution_queued_timestamp }
的東西,但是您應該可以直接轉到返回的元素1(類似這樣)(未經測試)
$DataSet.Tables[0].Rows[0].execution_queued_timestamp
$ SQL當您使用它時,將始終具有返回的行數。你可以忽略,如果你不關心返回的行數通過更改該行到
$SqlAdapter.Fill($DataSet) |out-null

+0

這一個幫助我謝謝!$ DataSet.Tables [0] .Rows [0] .execution_queued_timestamp – JDGEEK