感谢您抽出宝贵时间阅读我的问题。我们使用T-SQL构建了一个处理(大量)数据的系统。当我们开始处理这些数据时,此操作通常需要大约15分钟才能完成。在此期间,由于某种原因,似乎数据库中的所有对象都存在锁定。在某种程度上,我理解我无法查询正在写入的表。但是,当我刷新表列表时,SQL Server会给我一个超时锁定消息(在对象资源管理器的Tables节点上使用F5)。
我的代码基于以下模板运作:
CREATE PROCEDURE Sample
as
SET NOCOUNT, XACT_ABORT ON
BEGIN TRY
BEGIN TRANSACTION
...
COMMIT TRANSACTION
END TRY
BEGIN CATCH
BEGIN
PRINT 'STORED PROCEDURE - Returned errors while processing'
ROLLBACK TRANSACTION
END
END CATCH
现在,当我开始这个时,我可以在任何表上执行SELECT WITH(NOLOCK)查询。但我无法查看视图,存储过程的定义或基本上在数据库中执行任何其他类型的操作。
我已经设置了READ UNCOMMITTED隔离级别设置,但这似乎没有什么区别。
感谢您对此事的任何帮助。
亲切的问候,
答案 0 :(得分:0)
TRY CATCH块中的代码执行大量数据更新。更改隔离级别不会解决锁定问题。
最适合您的是进行这些基本检查/更改:
答案 1 :(得分:0)