pymssql.OperationalError:DB-Lib错误消息20009,严重级9

时间:2013-10-13 17:42:44

标签: python mysql sql sql-server sql-server-2008

我正在尝试运行此program

conn = pymssql.connect(host='localhost',  user='notsa', password='notsayly', database='TallicaTweets')

但我收到以下错误:

Traceback (most recent call last):
  File "harvester_of_tweets.py", line 11, in <module>
    conn = pymssql.connect(host='localhost',  user='username', password='password!', database='Database')
  File "/usr/local/lib/python2.7/dist-packages/pymssql.py", line 607, in connect
    raise OperationalError, e[0]
pymssql.OperationalError: DB-Lib error message 20009, severity 9:
Unable to connect: Adaptive Server is unavailable or does not exist
Net-Lib error during Connection refused Error 111 - Connection refused

搜索Google并不是真的有用,而且那里的一些内容并不是很彻底。我应该将我的凭证添加到特定的配置文件中吗?以及如何在mssql中创建凭据? (我在psql中做过这些事情但不熟悉mssql。

我使用的是Ubuntu 13.04,我的python版本是2.7。

创建用户登录后,我收到此错误:

Traceback (most recent call last):
  File "harvester_of_tweets.py", line 11, in <module>
    conn = pymssql.connect(host='localhost',  user='tweet', password='1234', database='tweet_db')
  File "/usr/local/lib/python2.7/dist-packages/pymssql.py", line 607, in connect
    raise OperationalError, e[0]
pymssql.OperationalError: DB-Lib error message 20009, severity 9:
Unable to connect: Adaptive Server is unavailable or does not exist
Net-Lib error during Connection refused Error 111 - Connection refused

5 个答案:

答案 0 :(得分:7)

我遇到了同样的问题。事实证明,我没有为我的本地SQL服务器打开TCP / IP访问。

进行快速测试以检查是否由此引起,您可以尝试使用相同的代码连接到远程服务器。如果它有效,则表示本地服务器出现问题。

因此,只需在SQL Server配置管理器中打开对127.0.0.1:1433的访问权限。

步骤:

  1. 开始 - &gt;所有程序 - &gt; Microsoft SQL Server 20XX - &gt;配置工具 - &gt; SQL Server配置管理器
  2. SQL Server网络配置 - &gt; MSSQLSERVER的协议
  3. TCP / IP - &gt;属性 - &gt; IP地址。找到127.0.0.1并更改&#34;已启用&#34;到&#34;是&#34;。如果需要,您可以为所有IP执行此操作。

答案 1 :(得分:2)

我通过使用不同的库来解决我的问题。我使用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

答案 2 :(得分:2)

  1. 检查已安装的python版本(32位或64位)。

  2. 根据您的操作系统架构从下面下载freetds https://github.com/ramiro/freetds/releases

  3. 将其解压缩到C:\驱动器(如c:\freetds

  4. 将Bin(从c:\freetds\bin目录)添加到环境变量(两者)。

  5. 确保在SQL配置中打开端口1433并启用TCP / IP。

  6. 重新启动电脑,一切都会好起来的。

答案 3 :(得分:0)

我有类似的问题。 pymssql.OperationalError:DB-Lib错误消息20009,....

请尝试以下步骤。

  1. 不要同时启动MSSQLSERVER和SQLEXPRESS。停止你不需要的那个。
  2. 确保启动了正确的SQL Server服务
  3. 确保已启动ritht SQL Server代理。
  4. 使用服务器上的Microsoft SQL Server Management Studio检查用户名和密码是否正确。
  5. 希望有所帮助

答案 4 :(得分:-1)

您应该在MS SQL中创建login,并将其与相关数据库中的特定user相关联。

请点击此处查看用户和登录信息:http://blogs.msdn.com/b/lcris/archive/2007/03/23/basic-sql-server-security-concepts-logins-users-and-principals.aspx