Tsql 针对信息的查询\u架构超时
我正在使用SQLServer2008ManagementStudio连接到SQLServer2000Tsql 针对信息的查询\u架构超时,tsql,timeout,sql-server-2000,information-schema,Tsql,Timeout,Sql Server 2000,Information Schema,我正在使用SQLServer2008ManagementStudio连接到SQLServer2000 use [MyPrettyDb] select top 19 * from information_schema.tables 它工作起来又好又甜又快。但这是: select top 20 * from information_schema.tables 超时停止 超时的原因是什么 请注意,从信息模式中选择计数(*)。表格快速返回;数据库中有334个表。您可能被事务中运行的DDL语句阻止。运
use [MyPrettyDb]
select top 19 * from information_schema.tables
它工作起来又好又甜又快。但这是:
select top 20 * from information_schema.tables
超时停止
超时的原因是什么
请注意,从信息模式中选择计数(*)。表格快速返回;数据库中有334个表。您可能被事务中运行的DDL语句阻止。运行
DBCC OPENTRAN
或sp_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
我自己解决了这个问题。 这个问题只在Windows 2008中出现。和32/64份确认书 Windows 2008中有两个odbc驱动程序: 32:在System32文件夹(或系统)中 64:在系统WOW64中 正如我所理解的,默认情况下它使用64版本。但它与远程计算机上的32版本不兼容。这就是为什么我有奇怪的行为
运行odbc wizzard friom 32文件夹,它就会神奇地正常工作。您是否比较了这两种情况的执行计划?为什么要从目录视图中随机选择19或20行?也许你可以考虑通过< <代码>添加一个<代码>命令来给你的查询提供一些意义。这是不可能的。通过timeoutOK查询计划。从information_schema.tables中选择top 19*(按表排序)_name-效果很好。但是,从信息中选择前20个*按表排序按表名称-按时间输出我可以添加的内容:硬件没有问题。大量的磁盘空间和54%的内存使用率。