我让VBS调用存储过程启动但未完成并将查询超时消息返回给应用程序。
我们使用的是SQL Server 2008 SP2第1版,Windows Server 2008 R2 Standard。
这不是生产中的问题,但在开发中我们有与DrillThrough数据库关联的VBS脚本:
VBS< 105,4>用于SQL Server的Microsoft OLE DB提供程序:查询超时已过期。
这些脚本在应用程序服务器端自动完成。存储过程查询在SSMS中运行正常但确实需要40秒。
所有脚本都设置为不超时:
conn.ConnectionTimeout = 0
conn.CommandTimeout = 0
OLEDB登录是dbo。唯一失败的脚本位于DrillThrough数据库中。失败的脚本在DrillThrough数据库中使用多个数据库和函数来收集临时表中的数据以更新实际的钻取表。
在DrillThrough数据库上有一个夜间进程正在完成,其中存储过程在大约2秒内运行。它不使用任何函数,但会在将差异写入表之前比较来自两个其他数据库的两个记录中的数据。
我比较了脚本,除了他们调用的存储过程外,它们的设置相同。
为了以防万一,我更新了表格的统计数据。查询仍在应用程序端超时,实际上需要更长时间才能在SSMS中运行。
SQL Server远程连接设置为0表示没有超时。
它肯定会进入该过程,因为它截断表,批量加载保持表并根据保存表数据从实际钻取表中删除并创建第一个临时表但它没有完成并且正在以某种方式丢弃。
同样,存储过程在SSMS中一直运行良好。
每个人都返回SQL Server设置以及ConnectionTimeout
和CommandTimeout
。似乎没有人遇到存储过程开始但未完成的情况。
我试过的其他事情也有同样的结果: