SQL Server 2000在这里。SQL Server编译锁?
我想成为一个临时DBA,但不太了解数据库服务器的机制,所以我有点卡住了。有一个客户端进程同时访问三个视图。这三个视图查询远程服务器以撤回数据。
它看起来像是其中一个查询可以工作,但其他两个失败(客户端进程说它超时,所以我猜测一个锁可以做到这一点)。查询过程有一个锁定,直到SQL过程重新启动(我有勇气试图杀死spid一次,但它不会放过)。在锁定挂起后对该数据库的任何查询,并指责阻止它的第一个进程。
该进程报告这些锁定...(格式化道歉,预览功能显示它完全排队)。
spid dbid ObjId IndId Type Resource Mode Status
53 17 0 0 DB S GRANT
53 17 1445580188 0 TAB Sch-S GRANT
53 17 1445580188 0 TAB [COMPILE] X GRANT
我不能分析得太好。对象1445580188是sp_bindefault,是master中的系统存储过程。什么是独家锁定?
查看代码,以保护专有...我只改变了名称(他们保持与别名和whatnot一致),并试图保持一切完全相同。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER view [dbo].[theView]
as
select
a.[column1] column_1
,b.[column2] column_2
,[column3]
,[column4]
,[column5]
,[column6]
,[column7]
,[column8]
,[column9]
,[column10]
,p.[column11]
,p.[column12]
FROM
[remoteServer].db1.dbo.[tableP] p
join [remoteServer].db2.dbo.tableA a on p.id2 = a.id
join [remoteServer].db2.dbo.tableB b on p.id = b.p_id
WHERE
isnumeric(b.code) = 1
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO
Hunh,返回sp_bindefault。编辑问题摘要以反映它。这是主数据库中的一个系统sproc,我不知道为什么它会调用它。 – Chris 2009-04-09 16:55:14