|
Задачка по T-SQL
|
|||
---|---|---|---|
#18+
Комрады, need help! Стоит задача написания скрипта, который будет перемещать данные из одной таблицы (Table1) в другую (Table2), не прерывая обычный поток приложения и не блокируя таблицу Table1 на всё время процесса. Я пока написал вот такое: SELECT * INTO Table2 FROM Table1 WITH (NOLOCK) Не совсем понимаю, что имеется в виду под выражением "не прерывая обычный поток приложения" и что нужно дописать в код, чтобы оно соблюдалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2021, 00:46 |
|
Задачка по T-SQL
|
|||
---|---|---|---|
#18+
Rex12, спросите у того, кто формулировал задачу. "обычный поток приложения" - это какая-то гуманитарная отсебятина. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2021, 02:11 |
|
Задачка по T-SQL
|
|||
---|---|---|---|
#18+
>"не прерывая обычный поток приложения" скорее всего пирложение однопоточное и во время выполнения запроса нужно возвращать результат как можно скорее чтобы поток начал выполнять следующий болк кода. "Обычный" не подходящее название да и "не прерывать" не получится (где то надо ожидать результат выполнения). Самое быстрое когда можно вернуть результат - после вставки данных в Table1. При этому нужно асинхронно добавить данные в Table2. Для этого подходит Service Broker . На мой взгляд, нужно добавить асинхронный тригер с вызовом SB_AT_Fire_Trigger Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
. Пример . ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2021, 10:57 |
|
Задачка по T-SQL
|
|||
---|---|---|---|
#18+
gritmax Для этого подходит Service Broker . Ээээ... Вы завсегда гвозди микроскопом забиваете? Не надо маяться херней. >> Стоит задача написания скрипта, который будет перемещать данные из одной таблицы (Table1) в другую (Table2), не прерывая обычный поток приложения и не блокируя таблицу Table1 на всё время процесса. Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2021, 14:27 |
|
Задачка по T-SQL
|
|||
---|---|---|---|
#18+
Спасибо, aleks222! Думаю, Ваш ответ подходит. В оригинале задание звучит следующим образом: 1. You are asked to take data from Table1 to a new Table2. 2. Write a script that will move the data without interrupting the regular flow of the application and not locking Table1 for the entire process time. А как теперь это увязать с первой частью задания? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2021, 15:46 |
|
Задачка по T-SQL
|
|||
---|---|---|---|
#18+
Rex12, нет, в задании мелось в виду использование "грязных чтений". ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2021, 15:54 |
|
Задачка по T-SQL
|
|||
---|---|---|---|
#18+
Владислав Колосов Rex12, нет, в задании мелось в виду использование "грязных чтений". И как же тогда должен выглядеть запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2021, 16:00 |
|
Задачка по T-SQL
|
|||
---|---|---|---|
#18+
Владислав Колосов Rex12, нет, в задании мелось в виду использование "грязных чтений". Вы бредите. Какое "удаление" с грязными чтениями? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2021, 19:54 |
|
Задачка по T-SQL
|
|||
---|---|---|---|
#18+
[quot aleks222#22280833] Итоговый скрипт должен выглядеть как-то так? declare @rc int = 1; while @rc > 0 begin SELECT * INTO Table2 FROM Table1 WITH (NOLOCK) set @rc = @rowcount; end; ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2021, 20:08 |
|
Задачка по T-SQL
|
|||
---|---|---|---|
#18+
aleks222, Итоговый скрипт должен выглядеть как-то так? declare @rc int = 1; while @rc > 0 begin SELECT * INTO Table2 FROM Table1 WITH (NOLOCK) set @rc = @rowcount; end; ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2021, 20:09 |
|
Задачка по T-SQL
|
|||
---|---|---|---|
#18+
Rex12 aleks222, Итоговый скрипт должен выглядеть как-то так? declare @rc int = 1; while @rc > 0 begin SELECT * INTO Table2 FROM Table1 WITH (NOLOCK) set @rc = @rowcount; end; Боюсь, что ты ничего не понял. Увы. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2021, 20:25 |
|
Задачка по T-SQL
|
|||
---|---|---|---|
#18+
aleks222, Вполне возможно. Но мы здесь для того и собираемся, чтобы аксакалы объясняли всем остальным, что к чему. Если, конечно, есть желание. Алекс, можешь написать текст запроса и в двух словах объяснить, что там происходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2021, 21:04 |
|
|
start [/forum/topic.php?fid=46&msg=40045225&tid=1685083]: |
0ms |
get settings: |
13ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
145ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 19ms |
total: | 260ms |
0 / 0 |