Azure Python函数部署后连接本地SQL Server报Kerberos凭证错误
解决Azure Function连接SQL Server的Kerberos凭证错误
问题原因
部署在Linux环境的Azure无服务器函数中,pyodbc默认尝试使用SSPI(Kerberos)认证方式连接SQL Server,但无服务器环境没有可配置的Kerberos凭证缓存,导致认证失败。本地运行时因环境差异(如Windows系统自带SSPI支持或默认走SQL身份验证),所以功能正常。
解决方案
强制指定SQL Server身份验证方式,跳过Kerberos认证。修改你的SQLAlchemy连接URL,添加authentication=SqlPassword参数:
修改后的代码
user = "my_user" password = "my_pass" db_name = "my_db" port = "default_port" host = "fully_qualified_host" driver = "ODBC Driver 17 for SQL Server" sql_statement = "TRUNCATE TABLE adp.stg_hr_workers" connection_url = URL.create( "mssql+pyodbc", query={ "username": user, "password": password, "host": host, "port": port, "database": db_name, "driver": driver, "authentication": "SqlPassword" # 强制使用SQL Server身份验证 }, ) engine = create_engine(connection_url, echo=False) Session = sessionmaker(bind=engine) with Session.begin() as session: session.execute(text(sql_statement))
额外注意事项
- 若你的SQL Server使用自签名证书,需在query中追加
"TrustServerCertificate": "yes",避免证书验证错误。 - 已确认子网连通性,此部分无需额外操作。
内容的提问来源于stack exchange,提问作者ZahlenZ
相关产品推荐
相关产品推荐

