Запрос Powershell SQL Server создает повторяющиеся записи - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть скрипт ps1, созданный для запуска запроса к базе данных SQL Server.После этого я запускаю строки в цикле for, однако набор данных дублирует записи.Если я запускаю запрос непосредственно в MS SQL без сценария, он не дублирует строки.

$SQLServer = "bla";
$SQLDBName = "bla";
$uid ="bla";
$pwd = "HIdden_Password";

$App="com.android.app";

$SqlQuery = "SELECT value
FROM obj_user u
 JOIN obj_user_device d ON d.id_user = u.id_user
 JOIN obj_device od ON od.id_device = d.id_device
 JOIN def_device_hardware dh ON dh.id_device_hardware = od.id_device_hardware
 JOIN def_device_os do ON do.id_device_os = od.id_device_os
 JOIN obj_user_device_app_state das ON das.id_user_device = d.id_user_device
 LEFT JOIN obj_device_setting ods ON ods.id_device = od.id_device
 LEFT JOIN obj_user_setting ous ON ous.id_user = d.id_user
 AND das.bundle_id = '$App'";

Write("Number of results from query:") 

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = True; User ID = $uid; Password = $pwd;"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$rowCount = $SqlAdapter.Fill($DataSet)

$DataSet.Tables[0]

foreach ($row in $Dataset.tables[0].rows)
{
   Write ("entry $row.value")
}

Вы можете видеть, что $rowcCount показывает значение 2, но когда я его печатаю, оно показывает 4 записи, когда оно должно быть 2.

Количество результатов запроса: 2

value                
-----                
**3a5b220714243811**
105986685869347611614
3a5b220714243811
**105986685869347611614**

Forloop также печатает 4 записи

 Write ("entry $row.value")

entry 3a5b220714243811
**entry 105986685869347611614**
**entry 3a5b220714243811**
entry 105986685869347611614

То же самое с out-file из набора данных $.ПРИМЕЧАНИЕ: заголовки для столбцов SQL не дублируются, а только результаты

$DataSet.Tables[0] | out-file "File.txt";

1 Ответ

0 голосов
/ 06 февраля 2019

Нашел проблему.эти два вызывают удаление дупса, один работает нормально

$SqlAdapter.Fill($DataSet)
$rowCount = $SqlAdapter.Fill($DataSet)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...