问候, 我一直在分析删除存储过程的问题。该过程只是执行某个实体的级联删除。作为SP执行时,SQL挂起,但是SQL正如SQL
当我在查询编辑器中将SP分解成SQL时, 7秒,但是,当通过EXEC SP执行SP时,需要1分钟才能执行。
我都试过,没有运气以下:
- 掉落的SP,然后重新创建它使用WITH RECOMPILE
读取未提交新增SET事务隔离级别
的SQL运行在编辑器与许多并发连接没有问题。
- 的EXEC过程有或无并发连接
挂过程类似于:
ALTER PROCEDURE [dbo].[DELETE_Something]
(
@SomethingID INT,
@Result INT OUT,
@ResultMessage NVARCHAR(1000) OUT
)--WITH RECOMPILE--!!!DEBUGGING
AS
--SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED--!!!DEBUGGING
SET @Result=1
BEGIN TRANSACTION
BEGIN TRY
DELETE FROM XXXXX --APPROX. 34 Records
DELETE FROM XXXX --APPROX. 227 Records
DELETE FROM XXX --APPROX. 58 Records
DELETE FROM XX --APPROX. 24 Records
DELETE FROM X --APPROX. 14 Records
DELETE FROM A -- 1 Record
DELETE FROM B -- 1 Record
DELETE FROM C -- 1 Record
DELETE FROM D --APROX. 3400 Records !!!HANGS FOR OVER ONE MINUTE TRACING THROUGH SP BUT NOT SQL
GOTO COMMIT_TRANS
END TRY
BEGIN CATCH
GOTO ROLLBACK_TRANS
END CATCH
COMMIT_TRANS:
SET @Result=1
COMMIT TRANSACTION
RETURN
ROLLBACK_TRANS:
SET @Result=0
SET @ResultMessage=CAST(ERROR_MESSAGE() AS NVARCHAR(1000))
ROLLBACK TRANSACTION
RETURN
感谢您的回复。我用sp的优化选项对一个有很多索引的表中的语句,问题就解决了!那么什么解决了这个问题?与重建,优化或其组合。不幸的是,我在使用OPTIMIZE选项的同时重新编译。 当我退回到原始SP时,问题已消失。 – 2011-04-06 00:54:50