我有一个性能问题
,我需要从 .Net 1.1 运行存储过程。这个存储过程调用了 8 个存储过程。它们中的每一个都处理信息以在旧信息和新信息之间进行比较,并影响数据库中的物理表。
问题来了,因为我尝试直接从 SSMS 运行它。服务器开始崩溃,变得如此缓慢,几乎无法工作。我认为基础设施人员必须直接在服务器上重新启动服务。
我在开发环境中工作,所以没有太大问题,但我无法将其上传到生产环境中。
我一直在考虑使用程序仅用于比较目的,从不影响物理数据。在主体过程的临时表中从它们中检索信息,然后打开我的 try-catch 和 begin-end 事务块并影响存储在临时表中的信息的主体中的数据库。
我的主要存储如下所示:这是我能做到这一点的最佳方式吗?
create proc spTest
as
/*Some processes here, temporary tables, etc...*/
begin try
begin distributed transaction
sp_nested1
sp_nested2
sp_nested3
sp_nested4
sp_nested5
sp_nested6
sp_nested7
sp_nested8
/*more processes here, updates, deletes, extra inserts, etc...*/
commit transaction
end try
begin catch
rollback transaction
DECLARE @ERROR VARCHAR(3000)
SELECT @ERROR = CONVERT(VARCHAR(3000),ERROR_MESSAGE())
RAISERROR(@ERROR,16,32)
RETURN
end catch
每个嵌套存储过程的基本结构相似,但不调用任何其他过程,只有每个都有自己的 try 和 catch 块。
任何帮助将不胜感激......我使用的版本是 SQL Server 2005
谢谢大家....