sql >> データベース >  >> RDS >> Sqlserver

ソリューション内のすべてのSSISパッケージのすべてのエラーを取得する方法

    残念ながら、パッケージを開くか、DTExec Utilityを使用してパッケージを実行しない限り、統合サービスソリューション(Visual Studio内)からこれを実現する方法はありません。 。ただし、いくつかの回避策を実行して、プログラムでエラーを取得することを確認できます。

    回避策

    1. Visual Studioを使用して(Vb.Netを使用して)winformsアプリケーションを作成しました
    2. Microsoft.SqlServer.DTSPipelineWrapを追加しました およびMicrosoft.SQLServer.ManagedDTS 参考として
    3. 次のコードを使用して、特定のディレクトリ内のパッケージをループし、検証して、エラーをログファイルに記録しました。

      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
      

    参考資料

    • 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



    1. SQLPARTITIONBY句をいつどのように使用するか

    2. PAUGデータベースデザイナカンファレンスに参加してください

    3. Lion(Mac OS 10.7)でPostgreSQLサーバーがシャットダウンしない

    4. postgresのテーブルに対するクエリ許可