【问题标题】:Create and dynamically modify .dtsx file via MS Access VBA通过 MS Access VBA 创建和动态修改 .dtsx 文件
【发布时间】:2020-07-03 15:44:46
【问题描述】:

我正在尝试通过 MS Access VBA 使用具有动态执行文件名的单个 .dtsx 文件。我正在尝试将其作为已经在工作中创建的 Access 工具的一部分。而我

我已经能够解决将 .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 包。

【问题讨论】:

  • 如果您导航到 C:\Windows\Microsoft.NET\Framework,您是否会在其中一个文件夹中看到 csc.exe(即 v2.0.50727、v4.0.30319)?
  • 另外,您上面的代码是否真的工作或者代表您希望用 vbscript/vba 完成什么?
  • 我没有 csc.exe 文件。
  • 我假设代码有效,但我无法在我的设备上对其进行测试。但是,它涉及到对 SSIS 包的修改,我希望从中创建类似的东西。

标签: vba ms-access ssis


【解决方案1】:

所以我的快速搜索证实了我认为正确的事实 - VBA/VBScript 不适用于您尝试使用 Imports Microsoft.SqlServer.Dts.Runtime 引入的对象模型

您可以在 DTS 程序集之间编写一个桥梁,以便您可以在 VBA 中使用它,但考虑到您尝试使用 Access 的 VBA,因为您无法访问适当的工具,那么,有一个循环引用。

替代方案。

SQL Server Data Tools、SSDT 是免费的。它是用于创作 SSIS 包的工具。它有一个使用 .NET 的脚本任务,并且已经设置了对托管对象模型的引用,因此请编写一个修改另一个包的包。

表达式 - SSIS 包中的大多数对象都支持表达式,因此只要有足够的精力,您就可以启动并运行一些非常动态的包。

Biml - 商业智能标记语言是 Visual Studio 的免费插件,它采用不同的方法来制作包。

常见的数据处理模式是截断和重新加载数据。许多 SSIS 新手想要一个可以接受任何源并将其与目标匹配的单个包,他们希望它是动态的 - 指定一个新的源/目标,然后奇迹就会发生。引擎不支持。 Biml 让您做的是定义模式 - 截断表 -> 带有平面文件源的数据流到 OLE DB 目标。现在您已经有了自己的模式,然后您可以使用元数据(这些文件转到这些目标表)并构建 N 个包。你会得到大量的包,但你并不关心,因为困难的部分是定义模式和收集元数据。这些包几乎是一次性工件,因为它们将成为您开发的整个生态系统的标准。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    相关资源
    最近更新 更多