我有以下交易:
BEGIN TRANSACTION ReadSalesFactsTransation;
BEGIN TRY
DELETE FROM [dbo].[YSalesFacts];
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
INSERT [YSalesFacts] EXECUTE [ReadSalesFacts];
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
END CATCH;
IF @@TRANCOUNT > 0
COMMIT TRANSACTION;
GO
我已将此命令添加到SQL Server代理中,并且我将其作为TSQL脚本执行,但它无效。它执行了几个小时,我有一个时间。但是,如果我在管理中运行相同的查询(复制和粘贴以及执行命令的f5),它的效果会很好。
在我的程序中有一些临时表和许多CTE,但它在Management Studio中工作得很好,而不是与Agent一起工作。
有什么想法吗?
答案 0 :(得分:0)
您是否在SQL mgmt studio中有一个阻止SQL代理完成的开放事务?
在另一个窗口中运行sp_who2并查看您的SQL代理连接是否被另一个连接阻止。