连接到本地SQL Server实例

我试图连接到在我的机器上运行的SQL Server的本地实例。 我能够从我们的服务器上用这个代码连接到一个本地实例,但是在我的本地机器上失败了。

我已经启用了命名pipe道和SQL Serverconfiguration中的所有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') 

我已经阅读了大量的答案,其中大部分似乎表明这是FreeTDS的问题,但是我在Windows 8.1上,所以我没有FreeTDS。

我已经尝试使用主机\实例名称与sqlcmd连接,并且工作正常。 它也适用于SSMS。

我已经尝试将.\SQLEXPRESS2014传递给pymssql.connect()hostserver参数,并且它们都失败,出现上述相同的错误。

我简单地尝试了使用adodbapi ,但我得到完全相同的错误消息。

Solutions Collecting From Web of "连接到本地SQL Server实例"

是的,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) 

尝试连接到默认的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。

我有一个类似的问题,出现以下错误:

 _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驱动程序,你必须点击添加。 它调出一个列表,从该列表中选择MySQL驱动程序。

对我来说,这是ODBC Driver 13 for SQL server 。 点击完成。 一旦你这样做,那么你必须改变你的代码中的连接线到刚刚填写的相应的驱动程序。

来源: pyodbc + MySQL + Windows:找不到数据源名称,也没有指定默认驱动程序