Создание и динамическое изменение файла .dtsx через MS Access VBA. - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь использовать один файл .dtsx с динамическим именем исполняемого файла через MS Access VBA. Я пытаюсь сделать это как часть инструмента доступа, уже созданного на работе. Пока я

, мне удалось обойти проблему связывания .dtsx с несколькими файлами в одной папке, переименовав каждый файл в уникальное уникальное имя, запустив .dtsx, а затем изменив имяобратно. Однако каталог папок не обязательно гарантирован, так как многие другие пользователи могут использовать этот инструмент.

Imports Microsoft.SqlServer.Dts.Runtime  

Module ApplicationTests  

  Sub Main()  

    ' The variable pkg points to the location of the  
    ' ExecuteProcess package sample that was installed with  
    ' the SSIS samples.  
    Dim pkg As String = _  
      "C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" & _  
      "\Package Samples\ExecuteProcess Sample\ExecuteProcess\UsingExecuteProcess.dtsx"  

    Dim app As Application = New Application()  
    Dim p As Package = app.LoadPackage(pkg, Nothing)  

    ' Now that the package is loaded, we can query on  
    ' its properties.  
    Dim n As Integer = p.Configurations.Count  
    Dim p2 As DtsProperty = p.Properties("VersionGUID")  
    Dim pl As DTSProtectionLevel = p.ProtectionLevel  

    Console.WriteLine("Number of configurations = " & n.ToString())  
    Console.WriteLine("VersionGUID = " & CType(p2.GetValue(p), String))  
    Console.WriteLine("ProtectionLevel = " & pl.ToString())  
    Console.Read()  

  End Sub  

End Module  

Это код, который я нашел на https://docs.microsoft.com/en-us/sql/integration-services/building-packages-programmatically/creating-a-package-programmatically?view=sql-server-ver15,, но он работает только для VB.Net, к которому у меня нет доступа. Я надеюсь подражать этой идее, но в Access VBA - создайте / измените пакет служб SSIS.

1 Ответ

0 голосов
/ 29 октября 2019

Таким образом, мой быстрый поиск подтвердил то, что я считал правдой - VBA / VBScript не будет работать с объектной моделью, которую вы пытаетесь использовать с помощью Imports Microsoft.SqlServer.Dts.Runtime

Вы можете написатьмост между сборками DTS, чтобы вы могли использовать его в VBA, но, учитывая, что вы пытаетесь использовать VBA Access, потому что у вас нет доступа к надлежащему инструменту, ну, есть круговая ссылка.

Альтернативы.

Инструменты данных SQL Server, SSDT, бесплатны. Это инструмент для создания пакетов служб SSIS. У него есть задача «Сценарий», которая использует .NET и уже установлены ссылки на модель управляемого объекта, поэтому напишите пакет, который изменяет другой пакет.

Выражения - большинство каждого объекта в пакете служб SSIS поддерживают выражения, поэтому с достаточным коленомСмазка, вы можете получить некоторые очень динамичные пакеты.

Biml - язык разметки Business Intelligence - это бесплатное дополнение для Visual Studio, которое использует другой подход к созданию пакетов.

Распространенным шаблоном обработки данных является усечение и перезагрузка данных. Многие новички в SSIS хотят один пакет, который берет любой источник и сопоставляет его с пунктом назначения, и они хотят, чтобы он был динамическим - укажите новый источник / пункт назначения, и произойдет волшебство. Двигатель этого не поддерживает. Что Biml позволяет вам сделать, это определить шаблон - Усечь таблицу -> Поток данных с плоским источником файла в пункт назначения OLE DB. Теперь, когда у вас есть шаблон, вы используете метаданные (эти файлы попадают в эти целевые таблицы) и создаете N пакетов. Вы получаете взрыв пакетов, но вам все равно, потому что сложная часть заключалась в определении шаблона и сборе метаданных. Пакеты являются почти одноразовыми артефактами, так как они будут стандартными для всей разрабатываемой вами экосистемы.

...