2

我正在使用 SQL Server 2008 Management Studio 连接到 SQL Server 2000。

use [MyPrettyDb]
select top 19 * from information_schema.tables

它工作得很好,又甜又快。但是这个:

select top 20 * from information_schema.tables

超时停止。

超时的原因是什么?

PSselect count(*) from information_schema.tables快速返回;数据库中有 334 个表。

4

2 回答 2

2

您可能被事务中运行的 DDL 语句阻塞。运行DBCC OPENTRANsp_lock确定哪个会话对此负责。

您可以通过运行以下脚本来重现这一点。

USE TEMPDB
GO

BEGIN TRAN
CREATE tABLE ttt(id int)

在另一个会话中,运行

SELECT TOP 5 * FROM INFORMATION_SCHEMA.TABLES --will work

SELECT  * FROM INFORMATION_SCHEMA.TABLES --will not work
于 2012-07-23T23:55:02.190 回答
0

我已经自己解决了这个问题。该问题仅存在于 Windows 2008 中。并且 32/64 冲突。

Windows 2008 中有两个 odbc 驱动程序: 32:在 System32 文件夹(或系统)中 64:在 sys SystemWOW64

据我了解,默认情况下它使用 64 版本。但它与远程机器上的 32 版本不兼容。这就是为什么我有奇怪的行为。

运行 odbc wizzard friom 32 文件夹,它神奇地变得正常工作。

于 2012-07-25T12:01:48.390 回答