连接到本地 SQL 服务器实例

Connecting to local SQL Server instance

我正在尝试连接到我机器上 SQL 服务器 运行 的本地实例。我能够从我们的服务器使用此代码连接到本地实例,但它在我的本地机器上失败了。

我在 SQL 服务器配置中启用了命名管道和所有 ips。

我使用的代码如下:

from pymssql import connect
server = r'.\SQLEXPRESS2014' # I've also tried MORGANT-PC\SQLEXPRESS and SQLEXPRESS2014
username = 'MyUserName'
password = 'MyPassword'
master_database_name = 'SuperSecretDatabase'
port = 5000
server_args = {'host': server, 'user': username, 'password': password,
               'database': master_database_name, 'port': port} # I've tried having the first key be both host and server, because pymssql's docs are unclear on the difference.
master_database = connect(**server_args)

如果我使用实例名称,我会收到此错误:

pymssql.InterfaceError: Connection to the database failed for an unknown reason.

我将端口设置为 5000,这样我就可以尝试使用

连接到它
server = 127.0.0.1
port = 5000

失败并显示略有不同的错误消息:

pymssql.OperationalError: (20009, b'DB-Lib error message 20009, severity 9:\nUnable to connect: Adaptive Server is unavailable or does not exist\nNet-Lib error during Unknown error (10035)\n')

我在这里阅读了很多关于 SO 的答案,其中大多数似乎表明这是 FreeTDS 的问题,但我使用的是 Windows 8.1,所以我没有 FreeTDS。

我试过使用 host\instance 名称连接 sqlcmd 并且工作正常。它也适用于 SSMS。

我尝试将 .\SQLEXPRESS2014 传递给 pymssql.connect() 中的 hostserver 参数,但它们都因上述相同错误而失败。

我曾短暂地尝试过使用 adodbapi,但我收到的错误消息完全相同。

尝试连接到默认的 SQL 服务器端口,即 1433,而不是 5000。 并检查您是否可以使用 SQL mgmt studio.

连接到正确的实例

最终的解决方案是综合考虑。

  1. 我需要禁用除 127.0.0.1 之外的所有 IP。
  2. 我需要使用以下文本创建 C:\freetds.conf:

    [global] port = 1433 tds version = 7.0

  3. 我需要更改我的 SQL 实例登录到 LocalSystem 的帐户。

是的,默认值为 1433 秒。

这对我来说很好用:

library(RODBC)
dbconnection <- odbcDriverConnect("Driver=ODBC Driver 11 for SQL Server;Server=server_name; Database=db_name;Uid=; Pwd=; trusted_connection=yes")
initdata <- sqlQuery(dbconnection,paste("select * from MyTable;"))
odbcClose(channel)

我遇到了类似的问题,错误如下:

_mssql.MSSQLDatabaseException: (18456, b"Login failed for user
'script_svc'.DB-Lib error message 20018, severity 14:\nGeneral SQL Server
error: Check messages from the SQL Server\nDB-Lib error message 20002,
severity 9:\nAdaptive Server connection failed\n")

我建立的用户是机器上的本地用户。

我的解决方案是在用户名前面加上“.\”,然后它会将其识别为本地用户并允许查询工作。

您的结果可能会有所不同..但我想我会提到它。

您尝试过使用 pyodbc 吗?

import pyodbc
cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER=SERVERNAME;DATABASE=testdb;UID=me;PWD=pass')
cursor = cnxn.cursor()
cursor.execute("select user_id, user_name from users")
rows = cursor.fetchall()
for row in rows:
    print row.user_id, row.user_name

不要忘记将 ODBC 驱动程序添加到您的 Windows。转到:控制面板 > 系统和安全 > 管理工具 > ODBC 数据源

32 位或 64 位版本取决于您的计算机。

然后你点击系统DNS文件。如果您没有看到任何 MySQL 驱动程序,则必须单击添加。它会显示一个列表,从该列表 select MySQL 驱动程序。

对我来说,是 ODBC Driver 13 for SQL Server。单击完成。完成后,您必须将代码中的连接线更改为您刚刚填写的相应驱动程序。

来源:pyodbc + MySQL + Windows: Data source name not found and no default driver specified