如何解决SQL Server中如何并行调用多个存储过程
EXEC sp_test_1 (ID)
GO
EXEC sp_test_2 (ID)
GO
EXEC sp_test_3 (ID)
GO
当我执行此操作时,每个存储过程需要 15 分钟才能完成,总共需要 45 分钟。
当我在每个会话中执行每个存储过程时。
Session 1 : EXEC sp_test_1 (ID)
Session 2 : EXEC sp_test_2 (ID)
Session 3 : EXEC sp_test_3 (ID)
它在 15 分钟内完成并提供了良好的性能提升。
我正在寻找 sql Server 中的任何选项来实现并行性和除 SSIS 之外的任何其他方向。
有人可以建议一种方法吗?
解决方法
你可以这样做:
首先你应该在每个过程中创建一个作业。
png
现在你可以像这样异步执行 proc
Declare @Job1 uniqueidentifier,@Job2 uniqueidentifier,@Job3 uniqueidentifier
-- CREATE JOB1
EXEC msdb.dbo.sp_add_job @job_name = 'JOB1',@job_id = @Job1 OUTPUT;
EXEC msdb.dbo.sp_add_jobserver @job_id = @Job1,@server_name = N'(LOCAL)'
EXEC msdb.dbo.sp_add_jobstep @job_id = @Job1,@step_name = 'execute',@command = 'EXEC sp_test_1',@database_name = 'DBNAME'
-- CREATE JOB2
EXEC msdb.dbo.sp_add_job @job_name = 'JOB2',@job_id = @Job2 OUTPUT;
EXEC msdb.dbo.sp_add_jobserver @job_id = @Job2,@server_name = N'(LOCAL)'
EXEC msdb.dbo.sp_add_jobstep @job_id = @Job2,@command = 'EXEC sp_test_2',@database_name = 'DBNAME'
-- CREATE JOB3
EXEC msdb.dbo.sp_add_job @job_name = 'JOB3',@job_id = @Job3 OUTPUT;
EXEC msdb.dbo.sp_add_jobserver @job_id = @Job3,@server_name = N'(LOCAL)'
EXEC msdb.dbo.sp_add_jobstep @job_id = @Job3,@command = 'EXEC sp_test_3',@database_name = 'DBNAME'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。