You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python连接Azure SQL的master数据库?连接失败求助

解决Python连接Azure SQL master数据库失败的问题
  • 确认连接字符串配置
    必须使用完整的Azure SQL服务器FQDN(格式:your-server-name.database.windows.net),并明确指定DATABASE=master。使用服务器级管理员账号(创建Azure SQL时设置的管理员)而非普通数据库用户,示例连接字符串(pyodbc):

    conn_str = (
        "DRIVER={ODBC Driver 18 for SQL Server};"
        "SERVER=your-server-name.database.windows.net;"
        "DATABASE=master;"
        "UID=server-admin-account;"
        "PWD=admin-password;"
        "Encrypt=yes;"
        "TrustServerCertificate=no;"
        "Connection Timeout=30;"
    )
    
  • 检查防火墙与网络规则

    • 确保本地IP或应用部署的IP已添加到Azure SQL服务器的防火墙允许列表
    • 如果是Azure内部服务访问,开启“允许Azure服务和资源访问此服务器”选项
  • 验证账号权限
    只有服务器级登录账号(拥有ALTER ANY LOGIN、SERVER ROLE权限)才能登录master库执行管理操作,普通数据库用户(哪怕是db_owner角色)无此权限。

  • 更新ODBC驱动
    安装最新版ODBC Driver 18 for SQL Server,旧版本可能存在兼容性问题导致连接失败。

  • 捕获详细错误定位问题
    在代码中捕获异常并打印具体错误信息,根据错误码针对性修复:

    import pyodbc
    try:
        conn = pyodbc.connect(conn_str)
        print("连接master数据库成功")
        # 执行创建登录、分配角色等操作
        cursor = conn.cursor()
        cursor.execute("CREATE LOGIN new_login WITH PASSWORD = 'StrongPassword123!'")
        cursor.execute("ALTER SERVER ROLE sysadmin ADD MEMBER new_login")
        conn.commit()
        cursor.close()
        conn.close()
    except pyodbc.Error as e:
        print(f"连接/执行错误: {e}")
    

    常见错误码对应问题:

    • 18456:账号密码错误或无登录权限
    • 4060:数据库无法访问(master存在的情况下,大概率是权限不足)
    • 10060:网络不通或防火墙拦截

内容的提问来源于stack exchange,提问作者Mahmoud Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 16:47:11