Попробуйте использовать подход, основанный на множестве.Обычно это намного быстрее:
WITH N AS --generate 500 rows (1..500)
(
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 1)) N
FROM (VALUES (1),(2),(3),(4),(5)) A(A)
CROSS JOIN (VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10)) B(B)
CROSS JOIN (VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10)) C(C)
)
INSERT INTO table1 SELECT DATEADD(SECOND, (N-1)*5, SYSDATETIME()) FROM N
Если вам действительно нужен цикл (не рекомендуется), вы можете использовать следующее:
DECLARE @i int = 0;
DECLARE @d DAteTimeOffset = SYSDATETIME();
WHILE @i<500
BEGIN
INSERT table1 VALUES (@d);
SET @d = DATEADD(second, 5, @d);
SET @i += 1;
END