连接到本地 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()
中的 host
和 server
参数,但它们都因上述相同错误而失败。
我曾短暂地尝试过使用 adodbapi
,但我收到的错误消息完全相同。
尝试连接到默认的 SQL 服务器端口,即 1433,而不是 5000。
并检查您是否可以使用 SQL mgmt studio.
连接到正确的实例
最终的解决方案是综合考虑。
- 我需要禁用除 127.0.0.1 之外的所有 IP。
我需要使用以下文本创建 C:\freetds.conf:
[global]
port = 1433
tds version = 7.0
我需要更改我的 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
我正在尝试连接到我机器上 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()
中的 host
和 server
参数,但它们都因上述相同错误而失败。
我曾短暂地尝试过使用 adodbapi
,但我收到的错误消息完全相同。
尝试连接到默认的 SQL 服务器端口,即 1433,而不是 5000。 并检查您是否可以使用 SQL mgmt studio.
连接到正确的实例最终的解决方案是综合考虑。
- 我需要禁用除 127.0.0.1 之外的所有 IP。
我需要使用以下文本创建 C:\freetds.conf:
[global] port = 1433 tds version = 7.0
我需要更改我的 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