非确定性函数的替代 SqlDependency?

Alternative SqlDependency for non-deterministic functions?

我需要在 SqlDependency 上使用 getdate() 函数,但那是其 limitations 的一部分。 (非确定性函数)

我有什么选择?

一个函数将是确定性的,如果它returns始终具有相同的值 - 只要您使用相同的参数针对相同的数据调用它.很明显,GETDATE()NEWID() 等函数无法满足此要求。

我所知道的唯一可能性是将非确定性值作为参数传递。看看这个:

--This will return the current date, but is non-determinisitic
CREATE FUNCTION dbo.TestFunc()
RETURNS DATETIME
WITH SCHEMABINDING
BEGIN
    RETURN GETDATE();
END
GO
--returns 0
SELECT OBJECTPROPERTY(OBJECT_ID('[dbo].TestFunc'), 'IsDeterministic');
GO

--This is deterministic, as it returns nothing else, than the parameter
CREATE FUNCTION dbo.TestFunc2(@CurrentDate DATETIME)
RETURNS DATETIME
WITH SCHEMABINDING
AS
BEGIN
    RETURN @CurrentDate;
END
GO
--returns 1
SELECT OBJECTPROPERTY(OBJECT_ID('[dbo].TestFunc2'), 'IsDeterministic');
GO

--Both return the current date and time
SELECT dbo.TestFunc() AS NonDeterministic
      ,dbo.TestFunc2(GETDATE()) AS Deterministic; 
GO

--Cleaning
DROP FUNCTION dbo.TestFunc;
DROP FUNCTION dbo.TestFunc2;