如何使用Python获取SSIS环境变量?

时间:2014-08-28 16:06:42

标签: sql-server-2008 ssis pyodbc

我正在将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()时,我无法初始化这些变量。

请帮我解决这个问题。

非常感谢。

1 个答案:

答案 0 :(得分:1)

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

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

另一种方法是使用xp_cmdshell从T-SQL调用dtexec,但这附带了备注权限部分中提到的常见安全警告here我认为没有必要使用此方法,因为您已经计划使用Python来运行该程序包。

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