Problem OP miał podczas używania tylko rand() wynika z oceny raz na zapytanie .
Z dokumentacji :
Podejście opisane poniżej usuwa optymalizację i tłumi to zachowanie, więc rand() jest oceniany raz na wiersz :
dateadd( second
, rand(cast(newid() as varbinary)) * 43200
, cast('08:00:00' as time) )
newid()generuje unikatową wartość typuuniqueidentifier;- wartość jest konwertowana za pomocą
castdo wykorzystania jako zarodek wrand([seed])funkcja do generowania pseudolosowegofloatwartość od 0 do 1 i jako zarodek jest zawsze unikalny, zwracana wartość też jest unikalna.