2010-01-26 194 views
0

使用SQL Server 2005:SQL Server 2005存储过程执行

我有一个存储过程调用其他几个人。例如,一个代码段如下所示:

INSERT INTO Log (...) VALUES (A...) 
EXECUTE StoredProcA params... 
INSERT INTO Log (...) VALUES (A...) 

INSERT INTO Log (...) VALUES (B...) 
EXECUTE StoredProcB params... 
INSERT INTO Log (...) VALUES (B...) 

看来StoredProcB在StoredProcA完成执行之前正在执行。如何确保A在B开始前完成?

我现在可以提出的最佳解决方案是在A末尾给B打电话。还有其他想法吗?

+0

你看到什么让你觉得这是发生?它是否在ssms中输出到结果面板中?此输出通常会延迟到整批完成。 – Ray 2010-01-26 19:31:22

回答

2

不会发生。 SQL通过代码同步。

是什么让你觉得它发生了?日志表条目?

1

一个语句将不会启动,直到前一个完成..要么使用分析器来跟踪,以便您确认这一点或围绕调用打印语句。您将看到SQL Server将不会继续,直到它完成前一行为止

0

也许有两个或多个单独的进程(连接)在同一时间执行存储的进程,一个在另一个之前完成。这段代码是作为一个事务执行的吗?

0

你究竟用什么来衡量哪个程序首先执行? Log表中有一堆插入,但插入并不表示执行顺序,因为表没有固有顺序,顺序仅由使用ORDER BY子句的查询创建,因此您永远无法从表中的两条记录这是插入'第一'。