【问题标题】:How to get SSIS environment variables using Python?如何使用 Python 获取 SSIS 环境变量?
【发布时间】:2014-08-28 16:06:42
【问题描述】:

我正在将一个 SSIS 项目转换为 Python。这是我最近遇到的一个问题,不知道如何获取SSIS的环境变量。

例如以下 SSIS 的 SQL 代码:

EXEC SSIS.proc_PackageInitalisation
 @packageExecutionInstanceGuid = ?
,@packageGuid = ?
,@packageName = ?
,@packageVersionGuid = ?
,@packageVersionMajor = ?
,@packageVersionMinor = ?
,@packageVersionBuild = ?
,@packageMachineName = ?
,@packageUserName = ?
,@packageProductVersion = ?
,@packageStartTime = ?
,@packageParentExecutionId = ?
,@executionId = ? OUTPUT

只有@packageParentExecutionId@executionId 是用户定义的变量,而其余变量在System 命名空间中。

所以当我使用pyodbc.cursor.execute()时,我无法初始化这些变量。

请帮我解决这个问题。

非常感谢。

【问题讨论】:

  • 我不懂python。但对于 SSIS,我相信这些变量不是动态的(即存储在 xml 中)。因此,如果您可以解析 XML 文件,您也许可以获取这些值。另一方面,如果值是动态的并且仅在运行时派生,那么您实际上必须运行包并将它们临时保存在 OS 环境变量中。
  • 我假设包存储在 SQL Server 中,而不是文件系统中。这是正确的吗?

标签: sql-server-2008 ssis pyodbc


【解决方案1】:

由于受制于 2008 版 SQL Server,最好使用 Python 的 subprocess 模块直接调用 dtexec。如果包存储在 SQL Server 中,则语法类似于:

import subprocess
subprocess.call(['dtexec', '/sql <package_path>'])

另一种方法是使用 xp_cmdshell 从 T-SQL 调用 dtexec,但这会带来 备注权限 部分 @987654323 中提到的常见安全警告@。 我认为不需要这种方法,因为您已经计划使用 Python 来运行包。

如果/当您升级到 SQL Server 2012 并使用 project deployment model,您可以从 T-SQL 调用 catalog.create_execution 存储过程。

【讨论】:

    猜你喜欢
    • 2014-06-04
    • 2021-11-07
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多