SSIS — программное выполнение задачи пакета с помощью VB

Я пытаюсь программно создать «Выполнение задачи пакета» в SSIS с помощью Visual Basic. Однако я не могу заставить его работать с UseProjectReference = True. Пакет не выходит из строя, но ничего не происходит. Я пропустил какое-то другое свойство? Вот код

Public Sub Main()
    Dim ExecResult As DTSExecResult = DTSExecResult.Failure
    Dim p As Package = New Package       
    Dim exec As Executable = p.Executables.Add("STOCK:ExecutePackageTask")
    Dim th As TaskHost = CType(exec, TaskHost)
    th.Properties("Name").SetValue(th, "Execute Package")
    th.Properties("Description").SetValue(th, "Execute Package")
    th.Properties("UseProjectReference").SetValue(th, "True")
    th.Properties("PackageName").SetValue(th, "Test.dtsx")
    th.Properties("ExecuteOutOfProcess").SetValue(th, "False")    
    ExecResult = p.Execute()
    p.Dispose() 
    Dts.TaskResult = ScriptResults.Success
End Sub

Приведенный ниже код успешно работает, вызывая пакет из файловой системы, однако, как я уже упоминал, мне нужен пакет, вызываемый из проекта.

Public Sub Main()
    Dim ExecResult As DTSExecResult = DTSExecResult.Failure
    Dim SIFISO_app As Application = New Application
    Dim p As Package = New Package
    Dim cm_DES As ConnectionManager = p.Connections.Add("FILE")
    cm_DES.Name = "local_pkg"
    cm_DES.ConnectionString = String.Format("C:\Test.dtsx")
    Dim exec As Executable = p.Executables.Add("STOCK:ExecutePackageTask")
    Dim th As TaskHost = CType(exec, TaskHost)
    th.Properties("Name").SetValue(th, "Execute selectSIFISO Package")
    th.Properties("Description").SetValue(th, "Execute selectSIFISO Package")
    th.Properties("Connection").SetValue(th, "local_pkg")
    th.Properties("ExecuteOutOfProcess").SetValue(th, "False")
    ExecResult = p.Execute()
    p.Dispose()
    Dts.TaskResult = ScriptResults.Success
End Sub

person DC07    schedule 11.09.2018    source источник


Ответы (1)


В качестве обходного пути я сохраняю пакет на диск со ссылкой на проект, установленной как истинная, а затем загружаю пакет в SSISDB с помощью приведенного ниже кода. Не совсем то, что я хотел, но работает так, как я хотел.

        ' Before deploying packages, make sure the destination project exists in SSISDB.  
    Dim connectionString As String = "Data Source=localhost;Integrated Security=True;MultipleActiveResultSets=false"
    Dim catalogName As String = "SSISDB"
    Dim folderName As String = "Test"
    Dim projectName As String = "Test"
    ' Get the folder instance.  
    Dim sc As SqlConnection = New SqlConnection(connectionString)
    Dim store As New Microsoft.SqlServer.Management.IntegrationServices.IntegrationServices(sc)
    Dim folder As CatalogFolder = store.Catalogs(catalogName).Folders(folderName)
    ' Key is package name without extension and value is package binaries.  
    Dim packageDict As New Dictionary(Of String, String)()

    Dim packageData As String
    packageData = My.Computer.FileSystem.ReadAllText("C:\Package7.dtsx")
    packageDict.Add("Package7", packageData)

    ' Deploy package to the destination project.  
    folder.DeployPackages(projectName, packageDict)
person DC07    schedule 20.09.2018