Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
добрый день. надо заменить таблицу на вид с точно таким же названием. теоретически, это элементарно: Код: sql 1. 2. 3. 4. но возникла проблема боевом сервере: непрерывные запросы к таблице не дают её переименовать. запросы типа "select * from table1 where id = 123" идут с IIS клинта напрямую, а остановить работу ISS нельзя. перевести БД в single_user тоже нельзя. сервер обязан работать 24/7. ~600 соединений, ~150 запросов в секунду. убивать соединения можно. пробовал убивать соединения блокирующие таблицу, но пока 600 раз выполняется команда kill, успевают создасться новые соединения. MS SQL 2016 SP2 как переименовать? спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 12:34 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
begin tran select top(0) * from table1 with(tablockx, holdlock) exec sp_rename 'table1', 'table1_old' exec sp_rename 'view1', 'table1' commit ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 13:16 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
valv, Можете попробовать подставить свои выражения, рано или поздно изменение проскочит: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. : ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 13:19 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
valvно возникла проблема боевом сервере: непрерывные запросы к таблице не дают её переименовать. запросы типа "select * from table1 where id = 123" идут с IIS клинта напрямую, а остановить работу ISS нельзя. перевести БД в single_user тоже нельзя. сервер обязан работать 24/7. ~600 соединений, ~150 запросов в секунду.Такие вопросы всегда решаются административно. В нужное время назначается технологический интервал и об этом сообщается всемзаинтересованым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 13:32 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
Gator, а ещё мне жаль ваш сервер. Без профилактики, бедняга. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 13:33 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
valvкак переименовать?Запустить и ждать пока не выполнится. Сервер не дурак - новые соединения, желающие доступа к таблице, будут ждать завершения транзакции с sp_rename. Если желаете ускорить, то можете уже после запуска sp_rename отстреливать сессии, удерживающие несовместимые блокировки на нужную таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 14:00 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
aleks222begin tran select top(0) * from table1 with(tablockx, holdlock) exec sp_rename 'table1', 'table1_old' exec sp_rename 'view1', 'table1' commit к сожалению, нет. запросы с уровнем "грязное чтение" (hint "nolock") так не блокируются. они накладывают SCH-S лок, который мешает переименованию. invmvalvкак переименовать?Запустить и ждать пока не выполнится. Сервер не дурак - новые соединения, желающие доступа к таблице, будут ждать завершения транзакции с sp_rename. Если желаете ускорить, то можете уже после запуска sp_rename отстреливать сессии, удерживающие несовместимые блокировки на нужную таблицу. отстреливать сессии - это перспективный путь, но слишком их много. не успеваю, IIS сервера создают их быстрее чем ms sql server их убивает. как бы замедлить создание новых сессий? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 14:19 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
valvотстреливать сессии - это перспективный путь, но слишком их много. не успеваюВы внимательно прочитали, что я написал? Особенно второе предложение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 14:27 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
invmvalvотстреливать сессии - это перспективный путь, но слишком их много. не успеваюВы внимательно прочитали, что я написал? Особенно второе предложение? Вы о invmЗапустить и ждать пока не выполнится. Сервер не дурак - новые соединения, желающие доступа к таблице, будут ждать завершения транзакции с sp_rename. ? это неверно. запросы с уровнем "грязное чтение" (hint "nolock") не ждут завершения транзакции, а свободно читают из таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 14:35 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
valvinvmпропущено... Вы внимательно прочитали, что я написал? Особенно второе предложение? Вы о invmЗапустить и ждать пока не выполнится. Сервер не дурак - новые соединения, желающие доступа к таблице, будут ждать завершения транзакции с sp_rename. ? это неверно. запросы с уровнем "грязное чтение" (hint "nolock") не ждут завершения транзакции, а свободно читают из таблицы. и как же они умудряются получить свой SCH-S ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 14:44 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
TaPaKvalvэто неверно. запросы с уровнем "грязное чтение" (hint "nolock") не ждут завершения транзакции, а свободно читают из таблицы. и как же они умудряются получить свой SCH-S ? см. таблицу совместимости локов. sch-s совместим со всеми, за исключением sch-m. а его то и нужно получить для переименования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 15:08 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
valvTaPaKпропущено... и как же они умудряются получить свой SCH-S ? см. таблицу совместимости локов. sch-s совместим со всеми, за исключением sch-m. а его то и нужно получить для переименования. чукча не читатель? авторновые соединения, желающие доступа к таблице, будут ждать завершения транзакции с sp_rename. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 15:18 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
TaPaKvalvпропущено... см. таблицу совместимости локов. sch-s совместим со всеми, за исключением sch-m. а его то и нужно получить для переименования. чукча не читатель? авторновые соединения, желающие доступа к таблице, будут ждать завершения транзакции с sp_rename. чувачок не догоняет? запросы которые читают с (nolock) не будут ждать. проверено. MS SQL 2016. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 15:24 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
valvTaPaKпропущено... чукча не читатель? пропущено... чувачок не догоняет? запросы которые читают с (nolock) не будут ждать. проверено. MS SQL 2016. неа не догоняет Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 15:30 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
valvзапросы которые читают с (nolock) не будут ждать. проверено. MS SQL 2016.Плохо проверяли. 1.Создаем таблицу Код: sql 1. 2. 3. 4. 5. 2. В первой сессии запускаем чтение Код: sql 1. 2. 3. 4. 5. 6. 3. Во второй сессии запускаем переименование Код: sql 1. 2. 3. 4. 5. 6. 4. В третьей сессии запускаем "грязное" чтение Код: sql 1. 2. 3. 4. 5. 6. Впрочем, уговаривать не буду - продолжайте страдать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 15:34 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
valv, дело не в этом, рано или поздно снимется последняя блокировка стабильности и будет наложена блокировка изменения, которая до этого стояла в очереди. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 15:34 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
Владислав Колосовvalv, дело не в этом, рано или поздно снимется последняя блокировка стабильности и будет наложена блокировка изменения, которая до этого стояла в очереди. тс думает что сервер смотрит, О! стоит сессия с запросом sch-m и прилетает новая с sch-s, и сервер: та пусть ещё подождёт, этому же только спросить.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 15:37 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
TaPaKvalvпропущено... чувачок не догоняет? запросы которые читают с (nolock) не будут ждать. проверено. MS SQL 2016. неа не догоняет Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. в данном примере таблица будет переименована в момент между итерациями Код: sql 1. в нашей ситуации, несколько сотен запросов параллельно обращаются к таблице. не существует момента времени когда таблица не блокируются. собственно, в этом и вопрос. как создать миг, когда можно наложить sch-m и переименовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 15:41 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
о, действительно так и думает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 15:50 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
Владислав Колосовvalv, дело не в этом, рано или поздно снимется последняя блокировка стабильности и будет наложена блокировка изменения, которая до этого стояла в очереди. Владислав, возможно существует решение без "рано или поздно", и кто нибудь знает и посоветует? транзакция с sp_rename - она же не безобидный select, она препятствует нормальной работе. должен же быть способ освободить одну единственную таблицы на миллисекунду без того чтобы останавливать всю БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 15:53 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
valvубивать соединения можно. пробовал убивать соединения блокирующие таблицу, но пока 600 раз выполняется команда kill, успевают создасться новые соединения. ну попробуйте ломом: блокировка логина, отстрел коннектов, переименовка, разблокировка логина ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 16:02 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
komradvalvубивать соединения можно. пробовал убивать соединения блокирующие таблицу, но пока 600 раз выполняется команда kill, успевают создасться новые соединения. ну попробуйте ломом: блокировка логина, отстрел коннектов, переименовка, разблокировка логина на буржуинском форуме тоже самое посоветовали... фактически, это то же самое как single_user restriction или остановка IIS. БД какое-то время не будет работать. беда... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 16:14 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
valvkomradпропущено... ну попробуйте ломом: блокировка логина, отстрел коннектов, переименовка, разблокировка логина на буржуинском форуме тоже самое посоветовали... фактически, это то же самое как single_user restriction или остановка IIS. БД какое-то время не будет работать. беда... потому что не бывает изменения схемы в онлайне. Люди планируют окна за полгода вперёд и тд и тп ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 16:25 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
valv, ну можно попробовать право на селект отобрать вместо блокировки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 16:28 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
komradvalv, ну можно попробовать право на селект отобрать вместо блокировки гениально!!! komrad, спасибо большое. уже тестирую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 17:00 |
|
||
|
переименовать таблицу
|
|||
|---|---|---|---|
|
#18+
valvkomradvalv, ну можно попробовать право на селект отобрать вместо блокировки гениально!!! komrad, спасибо большое. уже тестирую. На выходе: 1. Шквал ошибок на клиентах 2. Простой ровно как и с блокировкой 3. Неясный результат по бизес логики такого отсреливания самый эффектные грабли раскладываются с большой любовью ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2019, 17:06 |
|
||
|
|

start [/forum/topic.php?all=1&fid=46&tid=1687380]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 357ms |

| 0 / 0 |
