我们有一个第三方客户端,我们使用AAD认证从SQL中提取数据。下面是我们使用Python在本地系统中运行的方法。
server = 'XXX.database.windows.net'
database = 'xxx-production'
username ='xxx'
Authentication='ActiveDirectoryPassword'
password = 'xxx'
driver= '{ODBC Driver 17 for SQL Server}'
conn = pyodbc.connect('DRIVER='+driver+
';SERVER='+server+
';PORT=1433;DATABASE='+database+
';UID='+username+
';PWD='+ password+
';AUTHENTICATION='+Authentication
)
df=pd.read_sql(''' select xxxx from tablename.. ''',conn)
但是我们现在必须在Jenkins安排这个,看起来AAD正在制造一个问题。我们有什么办法可以在Jenkins安排吗?
1条答案
按热度按时间lyfkaqu11#
我已经通过启用Azure AD登录部署了Azure SQL数据库,并为数据库设置了一个管理员。
我能够在本地使用Azure AD对SQL Server进行身份验证,并使用以下代码获得所需表的输出:
输出:
现在,我已经在Azure上的Linux VM中安装了Jenkins,并尝试在Jenkins中运行此脚本。
我已经将上面的代码上传到了我的Git-hub仓库中,这样Jenkins服务器就可以连接到我们的Git-hub仓库并运行上面的代码。
上面的文件被添加到我的git-hub repo中,如下所示:-
现在,让我们转到Jenkins服务器,创建一个自由样式项目来手动运行Python脚本,并使用CRON表达式对其进行调度:-
手动运行Python脚本:-
我使用我的存储库名称
创建了一个新项目
添加了基本描述:-
添加了我的Git仓库URL和我的凭据,并将分支设置为python(我们的项目所在的位置):-
由于我的Jenkins在Azure中的Linux VM上运行,因此我将"生成"设置保留为"执行Shell"。如果你的Jenkins在Windows计算机上运行,则可以选择"执行Windows批处理
现在,我应用这些设置保存并运行构建,我成功地获得了Azure SQL DB表输出,如下所示:
要解决错误:-
1.由于我们的SQL身份验证需要ODBC驱动程序,
每1分钟运行此作业的说明
选择BuildPeriodically(定期生成**)并编写CRON表达式以调度脚本。
我已经安排脚本每1分钟运行一次,您可以更改CRON表达式以将Build设置为所需的时间。
生成每分钟成功运行一次:
另一个示例-每15分钟自动生成一次:
您可以根据自己的要求更改CRON表达式并计划生成。
除了使用自由样式项目,还可以使用Pipeline构建此脚本。