Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
Пытаюсь исправить ошибки проэктировщиков базы. С констрейнами просто, что делать со schema binding? Там прорва функций и view чудовишного размера. Код: sql 1. 2. 3. 4. 5. Ткните меня в FAQ если я проглядел? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 20:38 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
LepsikС констрейнами просто, что делать со schema binding?Убивать объекты, менять таблицы, создавать объекты заново. Либо альтерить объекты без schemabinding, потом обратно. Можно попробовать грязный хак (лично не пробовал): Перезапустить сервер в single user mode и соедениться через DAC - появится возможность модификации данных в системных таблицах. Информация о привязке к схеме хранится в столбце status (набор флагов) таблицы sys.sysschobjs. В единой транзакции изменить status нужных объектов, альтерить таблицы, восстанавить status. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 21:23 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
LepsikПытаюсь исправить ошибки проэктировщиков базы. С констрейнами просто, что делать со schema binding? Там прорва функций и view чудовишного размера. Код: sql 1. 2. 3. 4. 5. Ткните меня в FAQ если я проглядел? 1.Экспортируете проект в ssdt 2. Меняете тип поля 3. Генерите скрипт деплоя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 21:25 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
invmLepsikС констрейнами просто, что делать со schema binding?Убивать объекты, менять таблицы, создавать объекты заново. Либо альтерить объекты без schemabinding, потом обратно. Можно попробовать грязный хак (лично не пробовал): Перезапустить сервер в single user mode и соедениться через DAC - появится возможность модификации данных в системных таблицах. Информация о привязке к схеме хранится в столбце status (набор флагов) таблицы sys.sysschobjs. В единой транзакции изменить status нужных объектов, альтерить таблицы, восстанавить status. Ага и вьюхи имеют тип int у полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 21:27 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
msLexАга и вьюхи имеют тип int у полей.Ничего не мешает перед восстановлением статуса выполнить sp_refreshsqlmodule ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 21:41 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
invmМожно попробовать грязный хак (лично не пробовал): Перезапустить сервер в single user mode и соедениться через DAC - появится возможность модификации данных в системных таблицах. Информация о привязке к схеме хранится в столбце status (набор флагов) таблицы sys.sysschobjs. В единой транзакции изменить status нужных объектов, альтерить таблицы, восстанавить status. ИМХО быстрее пересоздать, чем такой ужас :-) Это же быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2018, 22:23 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
alexeyvgИМХО быстрее пересоздать, чем такой ужас :-) Это же быстро. если есть материализованные представления (агрегаты), может очень сильно затянуться. ps хотя в этом случае "грязный хак" в лучшем случае не сработает, а в худшем поломает базу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2018, 11:09 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
При таком раскладе может проще новую базу создать и туда все постепенно перелить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2018, 12:11 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
Какая исходная задача? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2018, 12:53 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
Общее решение такое. Код: 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2018, 19:13 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
Lepsik, У вас там сколько строк? Создавайте рядом вторую колонку. Порциями копируйте в неё данные. Потом поменяйте имя с первой. Это если 100 млн строк на высоконагруженной базе, которую вы не хотите останавливать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2018, 11:23 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
a_voroninLepsik, У вас там сколько строк? Создавайте рядом вторую колонку. Порциями копируйте в неё данные. Потом поменяйте имя с первой. Это если 100 млн строк на высоконагруженной базе, которую вы не хотите останавливать.\ а с identity что делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2018, 11:25 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
TaPaKа с identity что делать?На сиквенс заменить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2018, 12:18 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
a_voroninLepsik, У вас там сколько строк? Это если 100 млн строк на высоконагруженной базе, которую вы не хотите останавливать. Вы всегда делаете upgrade софта не останавливая серверов ? Даже на биржах для этого окна находят. А так у нас таки да - миллиарды транзакций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2018, 16:18 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
Lepsik, можно и без остановки, зависит от потребностей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2018, 16:47 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
Lepsik, авторА так у нас таки да - миллиарды транзакций. ога, все два млрд, за всю жизнь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2018, 16:48 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
LepsikВы всегда делаете upgrade софта не останавливая серверов ? Даже на биржах для этого окна находят.Это же зависит от бизнеса. Понятно, что на бирже не будут делать апгрейд без остановки сервиса, но есть бизнесы, для которых перерыв недопустим. У меня за много лет работы были разные варианты. Понятно, для задачи ТС можно найти кучу решений как с остановкой, так и без остановки, разной степени трудоёмкости и требований к ресурсам, всё таки поле в базе поменять, как говорится, "не бином ньютона" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2018, 17:02 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
TaPaKLepsik, авторА так у нас таки да - миллиарды транзакций. ога, все два млрд, за всю жизнь... Amazon, Walmart,... легко ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2018, 18:29 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
Lepsik, Смешно я занималя обратной задачей в MySQL bigint --> int чтобы урезать размер DB - на 30% кстати урезал (мог бы и больше - но не дали апрува кое где smallint поставтить) было 3 скритпа 1 Drop FK 2 Alter Table 3 Restore FK генерил сам - что обнаружилось в MySQL В Alter table надо сувать всем меняем столбцы в 1 Alter Table был случай когда 8-10 столбцов в одной таблице менялось - соотвесвтенно усокрение в раз 8 было а в SQL Server я потом искал - не нашел такого - чьтобы в 1 стейменте можно было так извратиться наверно можно Select * into from - в временную таблицу и потом назад - но тут надо думать запускалось разово - в окно - часа 2-3 точно работало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2018, 19:36 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
Lepsik, Не знаю, что там у вас за сервак, но на нашем апгрейд c datetime2(3) на (7) шёл сутки. В таблице 12 млрд. Длина записи 50 байт примерно. Это так, для референса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2018, 23:53 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
GlebanskiLepsik, Не знаю, что там у вас за сервак, но на нашем апгрейд c datetime2(3) на (7) шёл сутки. В таблице 12 млрд. Длина записи 50 байт примерно. Это так, для референса. Видимо вы себе можете позволить сутки простоя... Но для других выход есть: a_voroninСоздавайте рядом вторую колонку. Порциями копируйте в неё данные. Потом поменяйте имя с первой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2018, 19:37 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
Владимир ЗатуливетерНо для других выход есть: a_voroninСоздавайте рядом вторую колонку. Порциями копируйте в неё данные. Потом поменяйте имя с первой. MSы конечно дураки, раз все изменения проводят через временную таблицу, это ж сколько операций - SELECT INTO, DROP, sp_rename, CONSTRAINTS/INDEXES. То ли дело ALTER TABLE DROP COLUMN... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2018, 10:56 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
Руслан ДамировичMSы конечно дураки, раз все изменения проводят через временную таблицу, это ж сколько операций - SELECT INTO, DROP, sp_rename, CONSTRAINTS/INDEXES. То ли дело ALTER TABLE DROP COLUMN...А вы в курсе, что ALTER TABLE DROP COLUMN данные не затрагивает? А вы посмотрели какой скрипт генерирует студия на удаление столбца? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2018, 11:36 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
Владимир ЗатуливетерВидимо вы себе можете позволить сутки простоя... Но для других выход есть: a_voroninСоздавайте рядом вторую колонку. Порциями копируйте в неё данные. Потом поменяйте имя с первой. :) Ну вот так устроился, в выхи никто в базу не лезет. А входное барахло в очереди подождет. ТС, думаю, и так справится. Просто "for completeness" совета, надо бы тогда еще на новую колонку индекс повесить. А то, если порциями копировать, как он узнает, что уже проапдейчено и не NULL? Можно конечно и "на бумажке" записывать или даже мини-фреймворк сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2018, 11:54 |
|
||
|
Смена типа с int на bigint.
|
|||
|---|---|---|---|
|
#18+
invmА вы в курсе, что ALTER TABLE DROP COLUMN данные не затрагивает? Полезу-ка я почитаю справку, раз уж такое дело - похоже я что-то упустил. P.S. Вот прям только колонки не удалял, да и каждый ген не смотрел, но когда смотрел / формировал - всегда формировался скрипт через вторую таблицу с переименованием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2018, 16:04 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39697062&tid=1689171]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
140ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 248ms |
| total: | 518ms |

| 0 / 0 |
