2010-08-20 40 views
0

我试图从一个挂架(基于paster)的web服务器上向数据库运行一些查询,并且每次我尝试导入我正在使用的pymssql库(它的this one由方式)我不断收到此错误:在网络服务器上通过python使用Microsoft SQL

tds_init_winsock: WSAEnumProtocols failed with 10055(WSAENOBUFS: No buffer space 
available.) 

上的导入。我还尝试使用sqlalchemy,并在尝试创建sqlalchemy引擎时得到完全相同的错误。有什么我可以做得到这个工作。我没有附加到Web服务器或pymssql库,所以其他人都没问题。

环境信息:我使用

机是a32bit的win7桌面上的 服务器在蟒蛇的virtualenv环境中运行,但pymssql库在虚拟环境中完美的作品只是没有在服务器上

更新:

更多的背景信息(和解释): 我不认为这是一种MSSQL问题,甚至是python问题。原因有两个:A)Me和其他人仍然可以在发生此问题时连接到MSSQL数据库,并且B)如果pymssql没有从服务器导入,则工作得很好。但我认为这可能与python和_mssql处理套接字和/或服务器处理套接字的方式有关......希望对此有所帮助。

在此先感谢

回答

1

确定。我终于完成了这个工作。 pymssql似乎有一些问题,如果插座后进口的蟒蛇,插座之前导入它在Web服务器上是有点可笑,所以我最终只是切换到pyodbc这是惊人的相似pymssql语法。这绝对是一个很好的妥协......

2

错误代码WSAENOBUFS,而翻译成“没有可用的缓冲空间”,实际上是指(引述MSDN网页我只是指出):

An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.

,并在实践中(如解释如here)通常是指(报价我只是指出了文章):

in most cases the problem occurs when total count of opened sockets reaches some magical number. MS writes that this limit is 3976 simultaneously opened sockets but it seems that on Win9x systems the real limit is much lower.

由于每个插座保持“忙”于魁在它关闭后(240秒,文章说),在中等繁忙的服务器上看到这个数字(不管它在Windows 7中可能是什么)并不奇怪,特别是因为桌面系统很可能是使用比实际服务器系统更少的套接字资源来配置。

该条点,为解决这个问题,但他们正在约会的几种可能性。但关键是,这似乎与Python,Pylons,Paster或Pymssql无关 - 这严格是Windows系统配置和控制的问题。因此,您可能在serverfault.com上有更好的运气问题,而服务器精通的系统管理员会在此处挂出!

+0

感谢您的提示。似乎没有问题,但目前只有大约40个连接打开。我会去询问serverfault。 – Joshkunz 2010-08-20 05:04:01

0

它看起来像有人张贴了pymssql,在http://code.google.com/p/pymssql/issues/detail?id=2修复此问题的安装程序。请确保在运行此安装程序之前先卸载pymssql,否则最终可能会从破损版本导入。

如果你安装了鸡蛋,你应该能够通过删除pymssql *从LIB \ site-packages目录你的Python下安装目录来卸载它(例如C:\ Python26)。

相关问题