sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo obtener todos los errores de todos los paquetes SSIS en una solución

Desafortunadamente, no hay forma de lograr esto desde su solución de servicios de integración (en Visual Studio) sin abrir los paquetes o tal vez ejecutarlos usando DTExec Utility . Pero puede solucionarlo y verificar los errores mediante programación:

Solución alternativa

  1. Creé una aplicación winforms usando Visual Studio (usando Vb.Net)
  2. Agregué Microsoft.SqlServer.DTSPipelineWrap y Microsoft.SQLServer.ManagedDTS como referencias
  3. Usé el siguiente código para recorrer paquetes en un directorio específico, validar y obtener errores en un archivo de registro:

    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
    

Referencias

  • 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