SqlClient 连接超时

1 投票
3 回答
2227 浏览
提问于 2025-04-17 09:17

我正在写一些Python代码,想和我能访问的MSSQL服务器进行交互。目前我遇到的问题是,我的一个事务语句在默认的超时时间(30秒)内没有执行完。

我尝试在连接字符串中把命令超时设置为0,这样就不会有这个问题了,但我被告知命令超时这个关键词不被支持。

这是我的连接字符串:

conn_string='data source=localhost;initial_catalog=research;trusted_connection=True;Connection Timeout=0;Command Timeout=0'

这是我使用这个连接字符串时控制台显示的消息:

Value Error: Keyword not supported: 'command timeout'

我尝试过在命令超时中加空格、去空格,以及大小写不同的组合,都是根据我在解决这个问题时看到的支持讨论。

有没有人知道,当在连接字符串中更改命令超时时间似乎不起作用时,如何把超时时间设置得超过30秒呢?

3 个回答

1

这个网站列出了在连接字符串中可以设置的所有选项,不过命令超时似乎不在其中。

如果你在Windows上使用Python,并且使用的是ADO,你可以在连接对象上设置命令超时:

conn = Dispatch('ADODB.Connection')
conn.ConnectionString = "Provider=SQLOLEDB.1;Data Source=localhost;" + \
  "uid=my_user_name;pwd=my_password;database=my_database_name"
conn.Open()
conn.CommandTimeout = 60
2

另外,你可以这样做:

import adodbapi 
adodbapi.connect(connectionString, 100)

第二个参数是超时时间。

1

你需要在连接对象或命令对象上设置命令超时时间,而不是在连接的字符串中设置。想了解更多关于ADO连接对象的信息,可以查看这个资源

撰写回答