Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment obtenir toutes les erreurs de tous les packages SSIS dans une solution

Malheureusement, il n'y a aucun moyen d'y parvenir à partir de votre solution de services d'intégration (dans Visual Studio) sans ouvrir les packages ou peut-être les exécuter à l'aide de DTExec Utility . Mais vous pouvez contourner le problème et vérifier les erreurs générées par programmation :

Solution

  1. J'ai créé une application winforms en utilisant visual studio (en utilisant Vb.Net)
  2. J'ai ajouté Microsoft.SqlServer.DTSPipelineWrap et Microsoft.SQLServer.ManagedDTS comme références
  3. J'ai utilisé le code suivant pour boucler sur des packages dans un répertoire spécifique, valider et obtenir des erreurs dans un fichier journal :

    Dim strPackagesDirectory As String = "C:\Users\Admin\Desktop\New folder"
    Dim strOutputLogFile As String = "D:\1.txt"
    
    For Each strFile As String In IO.Directory.GetFiles(strPackagesDirectory, "*.dtsx", IO.SearchOption.TopDirectoryOnly)
    
        Dim pckg As New Microsoft.SqlServer.Dts.Runtime.Package
        Dim app As New Microsoft.SqlServer.Dts.Runtime.Application
    
        pckg = app.LoadPackage(strFile, Nothing)
        Dim obj = pckg.Validate(Nothing, Nothing, Nothing, Nothing)
    
        If pckg.Errors.Count > 0 Then
    
            Using sr As New IO.StreamWriter(strOutputLogFile, True)
                sr.WriteLine("")
                sr.WriteLine(strFile)
                sr.WriteLine("--------------")
                For Each err As Object In pckg.Errors
    
    
                    sr.WriteLine(err.Description)
    
                Next
    
                sr.WriteLine("==========")
                sr.Close()
            End Using
    
        End If
    Next
    

Références

  • https://msdn.microsoft.com/en-us/library/ms136090.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1
  • https://msdn.microsoft.com/en-us/library/microsoft.sqlserver.dts.runtime.package.aspx
  • https://msdn.microsoft.com/en-us/library/microsoft.sqlserver.dts.runtime.dtscontainer.validate.aspx