powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подождать 1 микросекунду
8 сообщений из 8, страница 1 из 1
Подождать 1 микросекунду
    #40132889
Шамиль Фаридович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне необходимо воткнуть в триггер задержку, в идеале 0.1 микросекунды,
чтобы 2 команды UPDATE одной и той же строки записались в историческую таблицу с разным ChangeDate (SYSUTCDATETIME())
Первое что пришло в голову, это использовать WAITFOR DELAY.
Но, у него минимальное значение 1 милисекунда, а скорее всего 3 милисекунды,
раз такая конструкция
Код: sql
1.
2.
3.
4.
5.
6.
declare @time datetime2(7) = SYSUTCDATETIME()
print @time
WAITFOR  DELAY '00:00:00.001'   
print getdate()
set @time = SYSUTCDATETIME()
print @time


выдает
Код: sql
1.
2.
3.
2022-02-09 15:12:07.5919812
...
2022-02-09 15:12:07.5919812


Есть что-то более быстрое, но гарантированно работающее?
...
Рейтинг: 0 / 0
Подождать 1 микросекунду
    #40132901
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шамиль Фаридовиччтобы 2 команды UPDATE одной и той же строки записались в историческую таблицу с разным ChangeDate (SYSUTCDATETIME())Я бы глядел в сторону rowversion
https://docs.microsoft.com/en-us/sql/t-sql/data-types/rowversion-transact-sql?view=sql-server-ver15
...
Рейтинг: 0 / 0
Подождать 1 микросекунду
    #40132905
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шамиль Фаридович
Но, у него минимальное значение 1 милисекунда, а скорее всего 3 милисекунды,
Вообще то вы задали 1 миллисекунду, а не микросекунду.
Задачу решать лучше другими способами, например, время писать для записи времени, а последовательность можно задать гарантированно работающим айдентити.
...
Рейтинг: 0 / 0
Подождать 1 микросекунду
    #40133114
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шамиль Фаридович,

Если строки неразличимы с точки зрения какого-либо атрибута, то необходимо добавить еще один атрибут, который внесёт эти различия, например, какой-либо нумератор: последовательность, последовательный GUID и так далее.
...
Рейтинг: 0 / 0
Подождать 1 микросекунду
    #40133118
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://docs.microsoft.com/ru-ru/sql/t-sql/functions/dateadd-transact-sql?view=sql-server-ver15

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
DECLARE @datetime2 datetime2 = '2007-01-01 13:10:10.1111111';  
SELECT '1 millisecond', DATEADD(millisecond,1,@datetime2)  
UNION ALL  
SELECT '2 milliseconds', DATEADD(millisecond,2,@datetime2)  
UNION ALL  
SELECT '1 microsecond', DATEADD(microsecond,1,@datetime2)  
UNION ALL  
SELECT '2 microseconds', DATEADD(microsecond,2,@datetime2)  
UNION ALL  
SELECT '49 nanoseconds', DATEADD(nanosecond,49,@datetime2)  
UNION ALL  
SELECT '50 nanoseconds', DATEADD(nanosecond,50,@datetime2)  
UNION ALL  
SELECT '150 nanoseconds', DATEADD(nanosecond,150,@datetime2);  
...
Рейтинг: 0 / 0
Подождать 1 микросекунду
    #40133229
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One,

Типы данных datetime2 и time действительно могут хранить время в наносекундном диапазоне, и над данными этих типов можно производить арифметические действия. Но где реально можно взять время с такой точностью?

Собственно, в компьютере есть три источника меток времени:

1. В биосе генерируются метки времени с частотой примерно 18,3 импульсов с секунду. Эти метки после преобразования во время показывает Windows в углу экрана.

2. Мультимедийный генератор обеспечивает в теории 1 миллисекунду, реально не менее 3 миллисекунд.

3. Счетчик тактов в процессоре (64 бита). В интеле его значение можно получить командой rdtsc (0F31h). Длительность такта зависит от частоты процессора, а она у современных процессоров непостоянна. Реально не менее 50 тактов, где-то более 100 наносекунд. И то при постоянной калибровке с использованием, например, мультимедийного генератора.

К сожалению, это не меняется со времен первых PC.
...
Рейтинг: 0 / 0
Подождать 1 микросекунду
    #40133241
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wlr-l,

это всё верно, я просто ТС идею подкинуть хотел, что он может сформировать дату самостоятельно в батче, для каждой строки
...
Рейтинг: 0 / 0
Подождать 1 микросекунду
    #40133332
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
Шамиль Фаридович
Но, у него минимальное значение 1 милисекунда, а скорее всего 3 милисекунды,
Вообще то вы задали 1 миллисекунду, а не микросекунду.
Задачу решать лучше другими способами, например, время писать для записи времени, а последовательность можно задать гарантированно работающим айдентити.

+
RowId bigint identity (1,1)
,RowTime datetime dafauit getdate()

--- Мне просто более точно НЕ требовалось, и там есть ещё нюансы.
Очень малые задержки не сильн интересны, потому что: 1) если выставляется таймер, то на его установку и активацию требуется дофига времени , 2) если есть параллельные вставки, то... (где она, гарантиявсего-на-свете?)

Зато есть вот такое:

авторCREATE TABLE #t(T DATETIME2(7));
GO

DECLARE @i INT ;
SET @i=1;

WHILE @i<10000 BEGIN ;
INSERT #t VALUES(SYSDATETIME()) ;
SET @i=@i+1;
END ;

SELECT DISTINCT t
FROM #t
ORDER BY t ;


2013-01-28 12:34:28.2514394
2013-01-28 12:34:28.2670399
2013-01-28 12:34:28.2826404
2013-01-28 12:34:28.2982409
2013-01-28 12:34:28.3138414
2013-01-28 12:34:28.3294419
2013-01-28 12:34:28.3450424
2013-01-28 12:34:28.3606429
2013-01-28 12:34:28.3762434
2013-01-28 12:34:28.3918439
2013-01-28 12:34:28.4074444
2013-01-28 12:34:28.4230449
2013-01-28 12:34:28.4386454
2013-01-28 12:34:28.4542459
2013-01-28 12:34:28.4698464


У меня вот так:
t
2022-02-10 22:18:14.1028055
2022-02-10 22:18:14.1038056
2022-02-10 22:18:14.1048057
2022-02-10 22:18:14.1058058
2022-02-10 22:18:14.1068059
2022-02-10 22:18:14.1078060
2022-02-10 22:18:14.1088061
2022-02-10 22:18:14.1098062
2022-02-10 22:18:14.1108063
2022-02-10 22:18:14.1118064
2022-02-10 22:18:14.1128065
2022-02-10 22:18:14.1138066
2022-02-10 22:18:14.1148067
2022-02-10 22:18:14.1158068
2022-02-10 22:18:14.1168069
2022-02-10 22:18:14.1178070
2022-02-10 22:18:14.1188071
2022-02-10 22:18:14.1198072
2022-02-10 22:18:14.1208073
2022-02-10 22:18:14.1218074
2022-02-10 22:18:14.1228075
2022-02-10 22:18:14.1238076
2022-02-10 22:18:14.1248077
2022-02-10 22:18:14.1258078
2022-02-10 22:18:14.1268079
2022-02-10 22:18:14.1278080
2022-02-10 22:18:14.1288081
2022-02-10 22:18:14.1298082
2022-02-10 22:18:14.1308083
2022-02-10 22:18:14.1318084
2022-02-10 22:18:14.1328085
2022-02-10 22:18:14.1338086
2022-02-10 22:18:14.1348087
2022-02-10 22:18:14.1358088
2022-02-10 22:18:14.1368089
2022-02-10 22:18:14.1378090
2022-02-10 22:18:14.1388091
2022-02-10 22:18:14.1398092
2022-02-10 22:18:14.1408093
2022-02-10 22:18:14.1418094
2022-02-10 22:18:14.1428095
2022-02-10 22:18:14.1438096
2022-02-10 22:18:14.1448097
2022-02-10 22:18:14.1458098
2022-02-10 22:18:14.1468099
2022-02-10 22:18:14.1478100
2022-02-10 22:18:14.1488101
2022-02-10 22:18:14.1498102
2022-02-10 22:18:14.1508103
2022-02-10 22:18:14.1518104
2022-02-10 22:18:14.1528105
2022-02-10 22:18:14.1538106
2022-02-10 22:18:14.1548107
2022-02-10 22:18:14.1558108
2022-02-10 22:18:14.1568109
2022-02-10 22:18:14.1578110
2022-02-10 22:18:14.1588111
2022-02-10 22:18:14.1598112
2022-02-10 22:18:14.1608113
2022-02-10 22:18:14.1618114
2022-02-10 22:18:14.1628115
2022-02-10 22:18:14.1638116
2022-02-10 22:18:14.1648117
2022-02-10 22:18:14.1658118
2022-02-10 22:18:14.1668119
2022-02-10 22:18:14.1678120
2022-02-10 22:18:14.1688121
2022-02-10 22:18:14.1698122
2022-02-10 22:18:14.1708123
2022-02-10 22:18:14.1718124
2022-02-10 22:18:14.1728125
2022-02-10 22:18:14.1738126
2022-02-10 22:18:14.1748127
2022-02-10 22:18:14.1758128
2022-02-10 22:18:14.1768129
2022-02-10 22:18:14.1778130
2022-02-10 22:18:14.1788131
2022-02-10 22:18:14.1798132
2022-02-10 22:18:14.1808133
2022-02-10 22:18:14.1818134
2022-02-10 22:18:14.1828135
2022-02-10 22:18:14.1838136
2022-02-10 22:18:14.1848137
2022-02-10 22:18:14.1858138
2022-02-10 22:18:14.1868139
2022-02-10 22:18:14.1878140
2022-02-10 22:18:14.1888141
2022-02-10 22:18:14.1898142
2022-02-10 22:18:14.1908143
2022-02-10 22:18:14.1918144
2022-02-10 22:18:14.1928145
2022-02-10 22:18:14.1938146
2022-02-10 22:18:14.1948147
2022-02-10 22:18:14.1958148
2022-02-10 22:18:14.1968149
2022-02-10 22:18:14.1978150
2022-02-10 22:18:14.1988151
2022-02-10 22:18:14.1998152
2022-02-10 22:18:14.2008153
2022-02-10 22:18:14.2018154
2022-02-10 22:18:14.2028155
2022-02-10 22:18:14.2038156
2022-02-10 22:18:14.2048157
2022-02-10 22:18:14.2058158
2022-02-10 22:18:14.2068159
2022-02-10 22:18:14.2078160
2022-02-10 22:18:14.2088161
2022-02-10 22:18:14.2098162
2022-02-10 22:18:14.2108163
2022-02-10 22:18:14.2118164
2022-02-10 22:18:14.2128165
2022-02-10 22:18:14.2138166
2022-02-10 22:18:14.2148167
2022-02-10 22:18:14.2158168
2022-02-10 22:18:14.2168169
2022-02-10 22:18:14.2178170
2022-02-10 22:18:14.2188171
2022-02-10 22:18:14.2198172
2022-02-10 22:18:14.2208173
2022-02-10 22:18:14.2218174
2022-02-10 22:18:14.2228175
2022-02-10 22:18:14.2238176
2022-02-10 22:18:14.2248177
2022-02-10 22:18:14.2258178
2022-02-10 22:18:14.2328185
2022-02-10 22:18:14.2338186
2022-02-10 22:18:14.2348187
2022-02-10 22:18:14.2358188
2022-02-10 22:18:14.2368189
2022-02-10 22:18:14.2378190
2022-02-10 22:18:14.2388191
2022-02-10 22:18:14.2398192
2022-02-10 22:18:14.3238276
2022-02-10 22:18:14.3248277
2022-02-10 22:18:14.3258278
2022-02-10 22:18:14.3288281
2022-02-10 22:18:14.3298282
2022-02-10 22:18:14.3308283
2022-02-10 22:18:14.3318284
2022-02-10 22:18:14.3328285
2022-02-10 22:18:14.3338286
2022-02-10 22:18:14.3348287
2022-02-10 22:18:14.3358288
2022-02-10 22:18:14.3368289
2022-02-10 22:18:14.3378290
2022-02-10 22:18:14.3388291
2022-02-10 22:18:14.3398292
2022-02-10 22:18:14.3408293
2022-02-10 22:18:14.3418294
2022-02-10 22:18:14.3428295
2022-02-10 22:18:14.3438296
2022-02-10 22:18:14.3448297
2022-02-10 22:18:14.3458298
2022-02-10 22:18:14.3468299
2022-02-10 22:18:14.3478300
2022-02-10 22:18:14.3488301
2022-02-10 22:18:14.3498302
2022-02-10 22:18:14.3508303
2022-02-10 22:18:14.3518304
2022-02-10 22:18:14.3528305
2022-02-10 22:18:14.3538306
2022-02-10 22:18:14.3548307
2022-02-10 22:18:14.3558308
2022-02-10 22:18:14.3568309
2022-02-10 22:18:14.3578310
2022-02-10 22:18:14.3588311
2022-02-10 22:18:14.3598312
2022-02-10 22:18:14.3608313
2022-02-10 22:18:14.3618314
2022-02-10 22:18:14.3628315
2022-02-10 22:18:14.3638316
2022-02-10 22:18:14.6248577
2022-02-10 22:18:14.6258578
2022-02-10 22:18:14.6268579
2022-02-10 22:18:14.6278580
2022-02-10 22:18:14.6288581
2022-02-10 22:18:14.6298582
2022-02-10 22:18:14.6308583
2022-02-10 22:18:14.6318584
2022-02-10 22:18:14.6328585
2022-02-10 22:18:14.6338586
2022-02-10 22:18:14.6348587
2022-02-10 22:18:14.6358588
2022-02-10 22:18:14.6368589
2022-02-10 22:18:14.6378590
2022-02-10 22:18:14.6388591
2022-02-10 22:18:14.6398592
2022-02-10 22:18:14.6408593
2022-02-10 22:18:14.6418594
2022-02-10 22:18:14.6428595
2022-02-10 22:18:14.6438596
2022-02-10 22:18:14.6448597
2022-02-10 22:18:14.6458598
2022-02-10 22:18:14.6468599
2022-02-10 22:18:14.6478600
2022-02-10 22:18:14.6488601
2022-02-10 22:18:14.6558608
2022-02-10 22:18:14.6568609
2022-02-10 22:18:14.6578610
2022-02-10 22:18:14.6588611
2022-02-10 22:18:14.6598612
2022-02-10 22:18:14.6608613
2022-02-10 22:18:14.6618614
2022-02-10 22:18:14.6628615
2022-02-10 22:18:14.6638616
2022-02-10 22:18:14.6648617
2022-02-10 22:18:14.6658618
2022-02-10 22:18:14.6668619
2022-02-10 22:18:14.6678620
2022-02-10 22:18:14.6688621
2022-02-10 22:18:14.6698622
2022-02-10 22:18:14.6708623
2022-02-10 22:18:14.6718624
2022-02-10 22:18:14.6728625
2022-02-10 22:18:14.6738626
2022-02-10 22:18:14.6748627
2022-02-10 22:18:14.6758628
2022-02-10 22:18:14.6768629
2022-02-10 22:18:14.6778630
2022-02-10 22:18:14.6788631
2022-02-10 22:18:14.6798632
2022-02-10 22:18:14.6808633
2022-02-10 22:18:14.6818634
2022-02-10 22:18:14.6828635
2022-02-10 22:18:14.6838636
2022-02-10 22:18:14.6848637
2022-02-10 22:18:14.6858638
2022-02-10 22:18:14.6868639
2022-02-10 22:18:14.6878640
2022-02-10 22:18:14.6888641
2022-02-10 22:18:14.6898642
2022-02-10 22:18:14.6908643
2022-02-10 22:18:14.6918644
2022-02-10 22:18:14.6928645
2022-02-10 22:18:14.6938646
2022-02-10 22:18:14.6948647
2022-02-10 22:18:14.6958648
2022-02-10 22:18:14.6968649
2022-02-10 22:18:14.6978650
2022-02-10 22:18:14.6988651
2022-02-10 22:18:14.6998652
2022-02-10 22:18:14.7008653
2022-02-10 22:18:14.7018654
2022-02-10 22:18:14.7028655
2022-02-10 22:18:14.7038656
2022-02-10 22:18:14.7048657
2022-02-10 22:18:14.7058658
2022-02-10 22:18:14.7068659
2022-02-10 22:18:14.7078660
2022-02-10 22:18:14.7088661
2022-02-10 22:18:14.7098662
2022-02-10 22:18:14.7108663
2022-02-10 22:18:14.7118664

Тема отсюдова
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подождать 1 микросекунду
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]