Wednesday, March 7, 2012

Metadata application

Hi all of you,

I'm focused on writing a SSIS metadata application. I'm trying to get all the metadata for all the DTSX packages from a concrete server.

I'm loading successfully tasks as Execute Sql Task, ForEach task and so on but how could I do the same for

Data Flow Task and its components. ???

For a Data Flow I don't know how to begin...

If TypeOf tmpTaskHost.InnerObject Is ? Then

My central code is the following:

sServer = "TEST1"

pkgIn = app.GetPackageInfos(carpetaraiz, sServer, Nothing, Nothing)

'''''''''''''''Para cada carpeta creada a partir de \MSDB

For Each pkgCarpeta In pkgIn

If pkgIn.Item(y).PackageDataSize <= 0 Then

pkgCarpetaSSIS = app.GetPackageInfos(pkgCarpeta.Name, sServer, Nothing, Nothing)

Else

pkgCarpetaSSIS = app.GetPackageInfos(carpetaraiz, sServer, Nothing, Nothing)

End If

If pkgCarpetaSSIS.Count >= 1 Then

While i < pkgCarpetaSSIS.Count

'cargar en memoria el SSIS en el objeto PAQUETE

pkg = app.LoadFromSqlServer(pkgCarpetaSSIS.Item(i).Folder & "\" & pkgCarpetaSSIS.Item(i).Name, _

sServer, Nothing, Nothing, Nothing)

Dim task As Microsoft.SqlServer.Dts.Tasks.ExecuteSQLTask.ExecuteSQLTask

Dim task2 As Microsoft.SqlServer.Dts.Runtime.ForEachLoop

Dim exe As Executable

Dim tmpTaskLoop As ForEachLoop = CType(exe, ForEachLoop)

Dim tmpTaskHost As TaskHost = CType(exe, TaskHost)

For Each exe In pkg.Executables

Select Case exe.ToString

Case "Microsoft.SqlServer.Dts.Runtime.ForEachLoop"

tmpTaskLoop = CType(exe, ForEachLoop)

Case "Microsoft.SqlServer.Dts.Runtime.TaskHost"

tmpTaskHost = CType(exe, TaskHost)

End Select

issue raises here.

If TypeOf tmpTaskHost.InnerObject Is ExecuteSQLTask.ExecuteSQLTask Then

n1 = tmpTaskHost.Properties.Item(33).GetValue(tmpTaskHost)

For y = 0 To 42

Console.WriteLine(tmpTaskHost.Properties.Item(y).Name)

Next

End If

Next

'contador de paquetes

i += 1

End While

y += 1

End If

Next

..

..

..

..

..

Thanks a lot for ideas and thoughts!!!!

Hi enric

see http://www.developer.com/db/print.php/3567941

There is application called ExploreIS which the author of the website wrote ,which might be a good starting point.You can download the application source code from the above .Maybe use that as a starting point

Regards

Cedric

|||The inner object for the Data Flow is MainPipe.|||Thanks man. I'll check it.

No comments:

Post a Comment