【发布时间】:2017-10-07 14:17:58
【问题描述】:
如何使用 Windows 身份验证通过 Airflow Web UI 或修改现有的 SQLAlchemy/pymssql Python 模块连接 MS SQL Server?
我的 SQL Server SSIS 包无法使用此选项 https://joethebusinessintelligenceguy.wordpress.com/2013/08/14/ssis-2012-using-sql-authentication-with-dont-save-sensitive-successfully/),因此我正在尝试使用 Windows 身份验证来启动 SSIS 步骤。
我发现以下链接显示确实存在支持,但我不知道如何在 Airflow 安装(要修改哪个文件或在哪里创建新的 conn_id)实现相同的支持。
【问题讨论】:
-
这些文章假设您在 windows 上运行 python 代码,其中连接字符串的“受信任的身份验证”部分将获取运行脚本的用户的 windows 登录,或者如果您通过服务运行它,那么该服务帐户名称将用作 Windows 身份验证用户。在 Airflow 的情况下,您在 Linux 上运行,所以它不是直截了当的。你需要 Kerberos 和相当多的设置 easysoft.com/products/data_access/odbc-sql-server-driver/…
-
对此的更新:我没有解决 Windows 身份验证问题,也没有尝试在我的 Linux 机器上设置 Kerberos 身份验证。相反,我通过将我的 SSIS 包分成新的 SQL Server 作业并通过实现以下代码来启动它们来解决这个问题:
s1 = MsSqlOperator( task_id='staging___st_crm_control', sql='EXEC msdb.dbo.sp_start_job ''airflow_crm_ssis'' ;', mssql_conn_id='db2', dag=dag) -
很高兴你把它整理出来。听起来 mssql_conn_id 指向 SQL 身份验证的配置,而不是 Windows 身份验证,这是你在做什么?我本来会建议的,但你的问题听起来你没有那个选项。
-
是的,mssql_conn_id 指向 SQL 身份验证。使用 SQL 身份验证不是理想的解决方案,因为我不知道我的 SSIS 包将运行多长时间。 Airflow 只会报告开始工作需要多长时间。所以在某种程度上你说我没有那个选项是正确的。
标签: python sql-server authentication airflow apache-airflow