Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como obter todos os erros de todos os pacotes SSIS em uma solução


Infelizmente, não há como fazer isso com sua solução de serviços de integração (no visual studio) sem abrir os pacotes ou talvez executá-los usando o DTExec Utility . Mas você pode fazer alguma solução alternativa e verificar os erros de forma programática:

Solução
  1. Criei um aplicativo winforms usando o visual studio (usando Vb.Net)
  2. Adicionei Microsoft.SqlServer.DTSPipelineWrap e Microsoft.SQLServer.ManagedDTS como referências

  3. Eu usei o seguinte código para fazer um loop sobre pacotes em um diretório específico, validar e obter erros em um arquivo de log:
    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
    

Referências
  • 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