2008-08-22 23 views

Répondre

4

J'ai écrit un script pour le faire un peu de temps en arrière. Le script (Compare-QueryResults.ps1) est disponible here et vous aurez également besoin de mon script Run-SQLQuery (disponible here) ou vous pouvez le remplacer par un script ou une fonction de votre choix. Fondamentalement, ce que fait le script est de prendre les résultats de chacune de vos requêtes et de séparer les datarows afin que chaque champ soit son propre objet. Il utilise ensuite Compare-Object pour vérifier les différences entre les données de ces lignes. Il renvoie un objet de comparaison qui vous montre toutes les différences entre les données renvoyées. Les résultats sont un objet, vous pouvez donc les enregistrer dans une variable et utiliser les cmdlets Sort-Object ou Format- * avec eux.

Bonne chance. Si vous avez des problèmes avec les scripts, faites le moi savoir, je serais heureux de vous guider à travers eux. Je les ai utilisés pour tester des applications, voir quelles lignes sont modifiées par différentes actions dans un programme.

0

Avez-vous besoin de deux tableaux de DataRows? l'objet DataRow a une propriété RowState qui vous donnera ce dont vous avez besoin. Voir les documents MSDN: http://msdn.microsoft.com/

1

Pour comparer simplement deux System.Data.DataRow, vous pouvez faire quelque chose comme ceci:

foreach ($property in ($row1 | Get-Member -MemberType Property)) { 
    $pName = $property.Name 

    if ($row1.$pName -ne $row2.$pName) { 
     Write-Host "== $pName ==" 
     $row1.$pName 
     $row2.$pName 
    } 
}