0
我们的某个数据库服务器存在锁定问题。在详细调查了造成阻塞的原因之后,我们发现这是我们的功能之一。真正令人惊讶的是该函数并没有什么都没有 - 只是返回格式化的服务器名称。@@ SERVERNAME导致SQL Server数据库阻塞问题
CREATE FUNCTION [dbo].[GetReleaseName]()
RETURNS NVARCHAR(50)
AS
BEGIN
DECLARE @serverName NVARCHAR(20)
DECLARE @ReleaseVersion NVARCHAR(20)
SET @ReleaseVersion = '20170807'
RETURN @@SERVERNAME + '_UAT_' + @ReleaseVersion
END
怎么可能是@@SERVERNAME
导致任何阻塞?
你能分享你如何确定这造成阻塞 – TheGameiswar
你的意思是什么在“堵”?如果你的意思是你的代码执行速度比没有你的函数慢,那么答案是不要使用标量函数(它们在每次函数调用时每行执行一行,并且花费你的开销) – sepupic
使用dmv: select * from sys.dm_exec_requests WHERE blocking_session_id <> 0 – eye