2016-09-06 2 views
1

PS 스크립트 내에서 datetime 필드를 반환하는 SQL 명령이 있습니다. SQL Studio는 SQL Studio Manager 내에서 실행될 경우 예상대로 작동하지만 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에서와 같이 datetime 형식을 얻는 대신 PowerShell에서 "1"을 얻습니다. 원래 T-SQL은 "* 선택"경우 유사한 동작을 볼 수

는 대신 실제 경기를 나열하는 대신의 레코드 수를 출력합니다.

아이디어가 있으십니까?

답변

1

$ DataSet 개체에서 데이터를 찾습니다. 나는 보통

foreach ($row in $DataSet.Tables[0].rows) { $row.execution_queued_timestamp }
같은 것을 사용하지만 당신은 당신이 항상 행의 수를 반환해야합니다 사용하고 같은이 (안된)
$DataSet.Tables[0].Rows[0].execution_queued_timestamp
$ SQL 같은과 함께 1 개 반환 요소로 직접 이동 할 수 있어야한다. 이 줄을
$SqlAdapter.Fill($DataSet) |out-null

+0

으로 변경하여 반환되는 행 수를 신경 쓰지 않는다면 무시해도됩니다. $ DataSet.Tables [0] .Rows [0] .execution_queued_timestamp – JDGEEK

관련 문제