Kha*_*uez 19 sql-server stored-procedures acid sql-server-2005
我有一个小的,一行更改(修改字符串中的拼写错误),我想尽快部署到我们的生产SQL Server 2005服务器的存储过程.
我担心的是如果在确切的时间运行alter语句来更新我的存储过程会发生什么事情,它会发生同时调用该存储过程的事情?
它是使用存储过程的先前副本运行的,还是会导致某些损坏或错误?
考虑到SQL Server的ACID性质,我希望它是安全的.它在同一时间运行的可能性,特别是因为SP非常小,非常低,但我更愿意确定,而且我也对答案感兴趣,仅用于教育目的.
可以说,ServerFault会是一个更好的地方,对不起,如果错误的话.
谢谢.
小智 17
我刚刚在SQL Server 2008 R2中对此进行了测试
我开始时:
CREATE PROCEDURE dbo.Stupid
AS
WAITFOR DELAY '0:00:10'
SELECT TOP 5 * FROM dbo.UniqueId
GO
Run Code Online (Sandbox Code Playgroud)
然后我做了以下 SQL Server查询窗口1:
EXEC dbo.Stupid
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
SQL Server查询窗口3,而查询窗口1和查询窗口2中的查询正在运行:
EXEC dbo.Stupid
Run Code Online (Sandbox Code Playgroud)
结果:
怎么了: