我正在将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()
时,我无法初始化这些变量。
请帮我解决这个问题。
非常感谢。
答案 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存储过程。