我使用游标来删除一组表。表的数量大约是400.当计数达到105时,执行挂起。请找到以下脚本:如何在使用sqlserver中的游标删除大量表时清除死锁?
DECLARE @TblName NVARCHAR(MAX);
DECLARE TBL_Cur CURSOR
FOR (select name from sysobjects
where name like 'xxx');
OPEN TBL_Cur;
FETCH NEXT FROM TBL_Cur INTO @TblName
WHILE (@@FETCH_STATUS <> -1)
BEGIN
IF LEN(@TblName) >0
BEGIN
DECLARE @strsql nvarchar(max)
if ('Create_ts' IN (select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where table_name = @TblName))
BEGIN
SET @strsql = 'Select count(*) from' + @TblName + ' where DATEDIFF(HOUR,create_ts,getdate())>1'
Begin try
BEGIN TRAN
EXEC sp_executesql @strsql
COMMIT TRAN
End Try
Begin Catch
End catch
END
END
FETCH NEXT FROM TBL_Cur INTO @TblName
END
CLOSE TBL_Cur
DEALLOCATE TBL_Cur
在此先感谢您的帮助。
呃,什么?............... –
我不知道你的意思,你的标题提到了我看不到的UPDATE,而你的问题机构提到了DELETE,我也没有看到... –
@Mitch wheat我不清楚你在问什么? – charu