带连字符的Azure SQL数据库Python连接问题排查
解决Azure SQL带连字符数据库的Python连接问题
你的问题不是权限问题,核心是连接字符串中数据库名的转义方式错误:
- 第一个错误原因:数据库名包含连字符(属于SQL标识符特殊字符),直接写
database-name时,ODBC驱动会将连字符解析为语法符号,触发SQL语法错误。 - 第二个错误原因:用
[database-name]作为Database参数值时,驱动会把带方括号的字符串当成实际数据库名称去查找,但你的真实数据库名是database-name,所以提示找不到数据库——和权限无关,毕竟SSMS能正常登录已经证明权限没问题。
正确的解决方法是在ODBC连接字符串中,用双引号包裹带特殊字符的数据库名,同时适配Python字符串的转义规则:
示例连接字符串(二选一即可)
- 用双引号包裹整个字符串,内部数据库名用转义双引号:
conn_str = "Driver={ODBC Driver 18 for SQL Server};Server=serveraddress;Database=\"database-name\";UID=username;PWD=password;"
- 用单引号包裹整个字符串,内部数据库名直接用双引号:
conn_str = 'Driver={ODBC Driver 18 for SQL Server};Server=serveraddress;Database="database-name";UID=username;PWD=password;'
这样驱动就能正确识别数据库名database-name,不会再出现语法错误或找不到数据库的问题。
内容的提问来源于stack exchange,提问作者veysel
相关产品推荐
相关产品推荐

