SQL Server 2016 AT TIME ZONEparece no ser determinista. Sin embargo, no he podido encontrar documentación que lo declare oficialmente o que justifique el razonamiento detrás de esto.
¿Por qué es AT TIME ZONEno determinista?
Ejemplo que muestra no determinismo
Ejecutando:
CREATE TABLE Test (
    LegacyTimestamp DATETIME,
    Timestamp AS LegacyTimestamp AT TIME ZONE 'Eastern Standard Time' PERSISTED
); Devuelve el siguiente error:
Msg 4936, Level 16, State 1, Line 1
Computed column 'Timestamp' in table 'Test' cannot be persisted because the column is non-deterministic.
                    
                        sql-server
                                sql-server-2016
                                timezone
                                
                    
                    
                        Ben Gribaudo
fuente
                
                fuente

Respuestas:
AT TIME ZONEemplea cierta lógica para calcular el horario de verano. Los valores de desplazamiento de DST no son inmutables (están sujetos a cambios a través de actualizaciones de Windows ) y están contenidos externamente en el registro de Windows, por lo que laAT TIME ZONEfunción no puede ser determinista ya que depende de datos externos.Del mismo modo, esta es la razón por la cual
sys.time_zone_infoes una vista y no una tabla de referencia estática, debe calcularse en función de los valores del registro que tienen la información de zona horaria más actualizada.fuente
Agregué AT TIME ZONE a la lista no determinista en el tema Deterministic and Nondeterministic, y en el tema AT TIME ZONE, agregué: Dado que cierta información (como las reglas de zona horaria) se mantiene fuera de SQL Server y está sujeta a cambios ocasionales, la función AT TIME ZONE se clasifica como no determinista. Gracias por mencionar esto. Rick Byham, Libros en pantalla de SQL Server.
fuente