пожалуйста, найдите код, который выдает запрос на выборку к базе данных. Я загружаю вывод в таблицу, которая не работает. Запрос на выбор в порядке, поскольку я выполняю тот же запрос в базе данных и получаю 1 строку в качестве вывода.
$SqlQuery = "select InputFiles,OutputFiles from $mastTableNm where JobName = '$jobname'";
$sqloutqryreader = MsSqlQueryExecutor $SqlQuery $logfile 'SELECT'
Add-Content -Value "$TimeinSec Log: Reading data from sql reader" -Path $logfile
$mstrtab = new-object System.Data.DataTable
$mstrtab.Load($sqloutqryreader)
echo $mstrtab
ForEach($mstrjobrw in $mstrtab)
{
Add-Content -Value "$TimeinSec Log: Reading data from sql reader $mstrjobrw.InputFiles $mstrjobrw.OutputFiles " -Path $logfile
}
Ниже приведена функция, которая выполняет запрос и возвращает адаптер.
function Global:MsSqlQueryExecutor(
$SqlQuery,
$logfile,
$QueryType
)
{
$Global:sqloutput = $Null
try
{
# make sure that the output from the following code block does not pollute return value
$Null = @(
Add-Content -Value "$TimeinSec Log: Setting up the sql query to execute" -Path $logfile
$SQLUsername = "aa"
$SQLPassword = "aa"
$Database = "aa"
$SQLServer = "aa.aa.aa.windows.net"
# Define the connection to the SQL Database
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server=$SQLServer;Database=$Database;User ID=$SQLUsername;Password=$SQLPassword;Trusted_Connection=False;Encrypt=True;Connection Timeout=5000;"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlCmd.CommandType = [System.Data.CommandType]::Text
$SqlCmd.CommandTimeout = 0
Add-Content -Value "$TimeinSec Log: Preparation to execute query: $SqlQuery is completed" -Path $logfile
if ($SqlConnection.State -eq [System.Data.ConnectionState]'Closed')
{
$SqlConnection.Open()
}
if ($QueryType -eq 'SELECT')
{
$adp = New-Object System.Data.SqlClient.SqlDataAdapter $SqlCmd
$dtst = New-Object System.Data.DataSet
$adp.Fill($dtst)
$Global:sqloutput = $dtst.Tables[0]
Add-Content -Value "$TimeinSec Log: Execution of the $QueryType query: $SqlQuery completed successfully." -Path $logfile
}
else
{
$Global:sqloutput = $SqlCmd.ExecuteReader()
Add-Content -Value "$TimeinSec Log: Execution of the $QueryType query: $SqlQuery completed successfully." -Path $logfile
}
)
return $Global:sqloutput
}
catch
{
Add-Content -Value "$TimeinSec Error: Failed to Query: $SqlQuery" -Path $logfile
Add-Content -Value $_.Exception.Message -Path $logfile
EXIT
}
finally
{
$SqlConnection.Close()
$SqlConnection.Dispose();
Add-Content -Value "$TimeinSec Cleanup: Connection is disposed" -Path $logfile
}
}
Таблица не загружается.
Я попробовал другой обходной путь, который также не работает.
Пожалуйста, найдите ссылку на этот вопрос
Метод read () внутри sqldatareader в powershell не работает, пока l oop