2012-07-16 19 views
2

我使用SQL Server 2008管理Studio連接到SQL Server 2000查詢出

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

它可以很好的和甜的和快速的。但是這個:

select top 20 * from information_schema.tables 

超時停止。

超時的原因是什麼?

P.S. select count(*) from information_schema.tables快速返回;數據庫中有334個表。

+1

您是否比較了兩種情況的執行計劃? – mwigdahl 2012-07-16 21:10:38

+0

爲什麼要從目錄視圖中選擇19或20 *隨機*行?也許你可以考慮添加一個'ORDER BY'來給你的查詢一些意義。 – 2012-07-16 21:26:16

+0

這是不可能的。查詢計劃超時 – alerya 2012-07-16 21:28:21

回答

0

我已經解決了我自己的這個問題。 該問題僅在Windows 2008中。並且32/64已完成。

有兩個ODBC驅動程序在Windows 2008: 32:在System32文件夾(或系統) 64:在sys SystemWOW64

我瞭解默認使用64版本的。但它與遠程機器上的32版本不兼容。那爲什麼我有奇怪的行爲。

運行odbc wizzard friom 32文件夾,它神奇地變得正常工作。

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