gpt4 book ai didi

sql-server - 如果在存储过程运行时更改它会发生什么?

转载 作者:行者123 更新时间:2023-12-02 02:44:46 25 4
gpt4 key购买 nike

我对一个存储过程进行了一行微小的更改(修复字符串中的拼写错误),我希望尽快将其部署到我们的生产 SQL Server 2005 服务器上。

我担心的是,如果在确切的时间运行alter语句来更新我的存储过程,碰巧有东西同时调用该存储过程,会发生什么?

它是否与存储过程的先前副本一起运行,或者是否会导致某些损坏或错误?

考虑到 SQL Server 的 ACID 性质,我希望它是安全的。它同时运行的机会非常低,特别是因为 SP 非常小,但我只是想确定一下,而且我也对答案感兴趣,只是为了教育目的。

可以说,ServerFault 是一个更好的地方,如果发布错误,抱歉。

谢谢。

最佳答案

我刚刚在 SQL Server 2008 R2 中对此进行了测试

我开始于:

CREATE PROCEDURE dbo.Stupid
AS
WAITFOR DELAY '0:00:10'
SELECT TOP 5 * FROM dbo.UniqueId
GO

然后我做了以下事情SQL Server 查询窗口 1:

EXEC dbo.Stupid

SQL Server 查询窗口 2,查询窗口 1 中的查询正在运行:

ALTER PROCEDURE dbo.Stupid
AS
WAITFOR DELAY '0:00:05'
SELECT TOP 5 * FROM dbo.UniqueId
WHERE ID > 5
GO

EXEC dbo.Stupid

SQL Server 查询窗口 3,查询窗口 1 和查询窗口 2 中的查询正在运行:

EXEC dbo.Stupid

结果:

  • 查询窗口 1 在 10 秒内运行(因此在窗口 2 和 3 之后完成),并返回 ID 1 - 5
  • 查询窗口 2 更改并在 5 秒内运行该过程,并返回 id 6 - 10
  • 查询窗口 3 在 5 秒内运行并返回 ID 6 - 10

发生了什么:

  • 已经执行的代码将像启动时一样在过程上完成运行
  • 代码更改后开始运行的任何内容都将运行新代码

关于sql-server - 如果在存储过程运行时更改它会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15001062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com