首页 > 解决方案 > PYODBC--未找到数据源名称。如何获取有效的连接字符串

问题描述

我正在使用带有 Docker 的 SQL Server。我正在尝试将 pyodbc 连接到我的服务器,但后来我得到了:

pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

使用 DBeaver 我得到了一些细节:

SELECT
    @@servername AS 'Server Name',  
    @@servicename AS 'Instance Name', 
    DB_NAME() AS 'Database Name',
    HOST_NAME() AS 'Host Name'

这个 SQL 返回:

193aeb2132e4, MSSQLSERVER, model, HDZKNV2

我的连接字符串应该如何导致这个不起作用(我猜这个有任何变化)?

'DRIVER={Microsoft Access Text Driver};
 SERVER=193aeb2132e4\MSSQLSERVER;
 DATABASE=model;
 Trusted_Connection=yes;
 User=admin;
 Password=passowrd'

标签: pythonpyodbc

解决方案


几个问题:

  • MSSQLSERVER默认的、未命名的 SQL Server 实例的内部实例名称 - 要连接到它,只需使用服务器名称(或 IP 地址)而不添加MSSQLSERVER作为实例名称

  • 您不应该Trusted_Connection=yes(使用当前登录的用户的凭据)与明确的用户名/密码一起使用 - 使用一个或另一个,但不能同时使用。

  • 根据有关 PyODBC 的 Microsoft 官方文档- 您应该使用DRIVER={ODBC Driver 17 for SQL Server}and UID/PWD(not User)

所以试试这些设置:

DRIVER={ODBC Driver 17 for SQL Server};
SERVER=193aeb2132e4;
DATABASE=model;
UID=admin;
PWD=passowrd

推荐阅读