Вы не можете легко сделать это, потому что каждый раз, когда вы запускаете свой запрос (если он выполняется вручную), он сбрасывает все ваши переменные. Я могу придумать 3 варианта:
1) Аналогично коду Гордона, но вы должны вручную сохранять значение при каждом его запуске
declare @saved_count int = 0; -- THIS MUST BE MANUALLY UPDATED EACH TIME YOU RUN IT
-- Get the different since the last run
select count(*)-@saved_count
from MyTable;
-- Get the current value => manually copy to @saved_count above
select count(*)
from MyTable;
2) Сохраните значение в более постоянном хранилище в соответствии с ответом Лукаша (вы можете использовать глобальную временную таблицу, которая будет работать после разрыва соединения, что не повлияет на производительность).
3) Вы можете выполнить автоматический запрос следующим образом, который отслеживает текущее значение и регулярно распечатывает некоторые детали для вас.
declare @CurrentCount int = 0, @LastCount int = 0;
while 1 = 1 begin
select @CurrentCount = count(*)
from MyTable;
select getdate(), @CurrentCount - @LastCount;
raiserror('Force a buffer flush',0,1) with nowait;
set @LastCount = @CurrentCount;
waitfor delay '00:00:10'; -- Wait 10s
end