使用@@ SERVERNAME的SQL Server数据库阻止问题

时间:2017-08-08 08:40:54

标签: sql-server tsql

我们的某个数据库服务器存在锁定问题。在详细调查导致阻塞的原因后,我们发现这是我们的功能之一。真正令人惊讶的是该函数 nothing - 只返回格式化的服务器名称。

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如何导致任何阻止?

1 个答案:

答案 0 :(得分:1)

标量函数的性能很差。

尝试使用内联表值函数替换函数。

以下是一个例子:

CREATE FUNCTION [dbo].[GetReleaseName_ITVF]()
RETURNS TABLE
AS
RETURN(
    SELECT @@SERVERNAME + '_UAT_20170807' as FullServerName
)

用法:

SELECT * FROM [table] CROSS APPLY GetReleaseName_ITVF()