Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So erhalten Sie alle Fehler aller SSIS-Pakete in einer Lösung

Leider gibt es keine Möglichkeit, dies von Ihrer Integrationsdienstlösung (in Visual Studio) aus zu erreichen, ohne die Pakete zu öffnen oder sie möglicherweise mit DTExec Utility auszuführen . Sie können jedoch eine Problemumgehung vornehmen und get-Fehler programmgesteuert überprüfen:

Problemumgehung

  1. Ich habe mit Visual Studio (mit Vb.Net) eine Winforms-Anwendung erstellt
  2. Ich habe Microsoft.SqlServer.DTSPipelineWrap hinzugefügt und Microsoft.SQLServer.ManagedDTS als Referenzen
  3. Ich habe den folgenden Code verwendet, um Pakete in einem bestimmten Verzeichnis zu durchlaufen, zu validieren und Fehler in eine Protokolldatei zu bekommen:

    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
    

Referenzen

  • 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