无法访问SQL Server数据库中的某个表

时间:2015-01-09 15:27:13

标签: sql sql-server sql-server-2008

我有一个有200个表的生产数据库。自上周以来,我无法访问其中一个表。当我只选择前100行时,它会继续运行。

如何找出无法访问该表的原因?如何找到桌子上是否有锁?所有其他表都运行良好

2 个答案:

答案 0 :(得分:2)

根据我的理解,您在查询时无法获得任何结果。

可能有很多原因。

1)可以锁定。     要执行脏读,请尝试使用NOLOCK提示进行查询。

SELECT Column1 FROM TableName WITH (NOLOCK)

要检查表格上是否有锁,请使用以下脚本:

declare @a table (
spid int,
[dbid] int,
objid int,
indid int,
[type] varchar(10),
resource varchar(100),
mode varchar(2),
[status] varchar(20)
);

insert into @a
exec sp_lock

select object_name(objid) tablename, * from @a where object_name(objid) = 'TableName'

2)统计信息过期时查询可能会很慢。尝试更新它们。

UPDATE STATISTICS dbo.TableName;

3) TOP运算符本身。 top运算符基本上接受整个数据集并对其进行排序,并为您提供前100个数据。您可以添加查询提示以在进行排序之前获取一些数据

SELECT TOP 10 Column1 FROM TableName (OPTION FAST(1))
--Have avoided doing a `SELECT * FROM....`

SELECT 1 FROM TableName (OPTION FAST(1))
--Without `TOP`

答案 1 :(得分:0)

检查表格上的权限。右键单击表并选择属性。单击权限选项卡,确保您可以访问该表。