SQL Server 2005存储了proc执行

时间:2010-01-26 19:26:14

标签: sql sql-server 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...)

在StoredProcA完成执行之前,StoredProcB似乎正在执行。如何在B开始之前确保A已完成?

我现在能提出的最佳解决方案是在A结束时给B打电话。还有其他想法吗?

4 个答案:

答案 0 :(得分:2)

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

是什么让你觉得它正在发生?记录表条目?

答案 1 :(得分:1)

一个语句在上一个语句完成之前不会启动。要么使用profiler进行跟踪,以便您确认这一点或在调用周围放置print语句。您将看到SQL Server在完成上一行

之前不会继续

答案 2 :(得分:0)

也许有两个或更多个单独的进程(连接)同时执行存储过程,一个完成另一个。此代码是作为交易执行的吗?

答案 3 :(得分:0)

您究竟用什么来衡量首先执行的程序?在Log表中有一堆插入,但插入没有执行顺序的指示,因为表没有固有的顺序,order只是通过使用ORDER BY子句的查询创建的,因此你永远不能告诉表中的两个记录插入'第一'。