28000', "[28000] [Microsoft][适用于 SQL Server 的 ODBC 驱动程序 18][SQL Server]用户登录失败

问题描述 投票:0回答:1

目前我的代码将一些数据保存到在虚拟机中的 Docker 容器中运行的某些 SQL 数据库中。但是,现在我需要将数据从 Azure 持久保存到某个 SQL DB。在 Azure 上,我有一个服务器,下面有 7 个数据库,其中 6 个由我的代码使用,第 7 个由 Airflow 使用。部署后,我注意到我成功连接到气流之一(没有创建表,也没有数据,部署后创建了这些),但对于我得到的其他人(必须说用户/服务器/密码对他们来说都是一样的:

('28000', "[28000] [Microsoft][ODBC Driver 18 for SQL Server][SQL Server]Login failed for user 'X'. (18456) (SQLDriverConnect)")

我登录到虚拟机并检查容器并检查环境,看看 pw/服务器/用户是否从管道库正确传递。在我的密码中,我有一些特殊字符(;$),我尝试在连接字符串中的大括号之间传递密码,但仍然不起作用。但这仍然没有意义,因为我可以连接到气流。我已经没有主意了。我还在部署之前删除了所有图像/卷/容器。

这是 Airflow 使用的连接字符串:

AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: mssql+pyodbc://${AIRFLOW_DB_USER}:${AIRFLOW_DB_PASSWORD}@${AIRFLOW_DB_SERVER}/${AIRFLOW_DB_NAME}?driver=ODBC+Driver+18+for+SQL+Server&TrustServerCertificate=yes

这是其余代码使用的连接字符串:

connect_str = 'Driver={{ODBC Driver 18 for SQL Server}};Server={server};Database={database};ENCRYPT=yes;UID={username};PWD={password};TrustServerCertificate=yes'             
engine = create_engine(f"mssql+pyodbc:///?odbc_connect={connect_str}")
sql-server authentication connection odbc
1个回答
0
投票

解决方案:更改密码。我的旧密码具有特殊字符,例如 ( ; $,我刚刚删除了它们并保留了仅包含数字和字母字符的普通密码,以便测试密码是否有问题。我将密码存储在管道库中,并且我是从那里拿来的。

© www.soinside.com 2019 - 2024. All rights reserved.