Grazie ai link forniti da GBn, credo che questo risponda alla mia domanda:
In comune con rand() Viene valutato una volta per colonna ma una volta valutato rimane lo stesso per tutte le righe....guarda le proprietà dell'operatore ComputeScalar nel piano di esecuzione effettivo vedrai che GetDate() viene valutato due volte.
Ho controllato e sembra che ciò avvenga ancora allo stesso modo in SQL Server 2008:GetUtcDate()
viene valutato due volte nel piano di esecuzione. Non produrrà risultati diversi per riga, ma è possibile che possa produrre un risultato diverso per colonna se la tempistica fosse corretta.
Modifica
Posso davvero provare questo comportamento! Prova questo:
select GETUTCDATE(), RAND(), RAND(), ...[~3000 RAND()s]..., RAND(), GETUTCDATE()
from [TableOfYourChoice]
Nel mio esperimento, ho finito con 2011-05-17 20:47:34.247
nella prima colonna e 2011-05-17 20:47:34.250
nell'ultima colonna, che mostra una differenza di tre millisecondi come risultato della valutazione di tutti i RAND()
s tra la prima e la seconda chiamata a GETUTCDATE().