Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Exchange partition
|
|||
|---|---|---|---|
|
#18+
Таблица фактов с партиционированием: Код: sql 1. Поле партиционирования KEY_DATE_START, int, непустое - Создаю таблицу (create as select ) - TMP_F_table - И вторую, чтобы таджикская СУБД поверила, что партиция пустая, на которую потом переключу заполненную партицию - TMPP_F_table - заполняю таблицу TMP_F_table - проверяю Код: sql 1. Одна партиция, значения 20180101 20180131 - переключаю на пустую существующую партицию (TMPP_F_table) - проверяю результат - Одна партиция, значения 20180101 20180131 - создаю констрейнт WITH CHECK на таблице TMP_F_table - переключаю на партиционированную: MSSQL 4982 ALTER TABLE SWITCH allows values that are not allowed by check constraints or partition function Индексы поубивал, диапазоны констрейнту как только не задавал, начал с Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2018, 17:34 |
|
||
|
Exchange partition
|
|||
|---|---|---|---|
|
#18+
Gollum, давайте реальный пример на 5 строчках данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2018, 20:57 |
|
||
|
Exchange partition
|
|||
|---|---|---|---|
|
#18+
Gollum, [KEY_DATE_START]<(20180132) ?? 32 января? Integer? Не понятен описанных порядок ваших действий. Сначала перенесли данные в пустую секцию, а только потом создаете ограничение? автор- создаю констрейнт WITH CHECK на таблице TMP_F_table Какой-то бред. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2018, 21:26 |
|
||
|
Exchange partition
|
|||
|---|---|---|---|
|
#18+
Gollum- создаю констрейнт WITH CHECK на таблице TMP_F_table - переключаю на партиционированную: MSSQL 4982 ALTER TABLE SWITCH allows values that are not allowed by check constraints or partition function Индексы поубивал, диапазоны констрейнту как только не задавал, начал с Код: sql 1. Надо, что бы констрейн точно соответствовал условиям функции. У вас же в функции нету 20180132, наверное, следующее значение 20180201? Значит, надо ([KEY_DATE_START]>=(20180101) AND [KEY_DATE_START]<(20180201)) Ещё, в функции у вас границы задаются как строки (почему, интересно, для типа int???) Тогда нужно и в чек-кронстрейне задавать как строки, как я понимаю. Очень оно чувствительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2018, 22:19 |
|
||
|
Exchange partition
|
|||
|---|---|---|---|
|
#18+
nvvавтор- создаю констрейнт WITH CHECK на таблице TMP_F_table Какой-то бред.Ээээ, разве можно по другому? Как именно, подскажите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2018, 22:19 |
|
||
|
Exchange partition
|
|||
|---|---|---|---|
|
#18+
alexeyvgНадо, что бы констрейн точно соответствовал условиям функции. У вас же в функции нету 20180132, наверное, следующее значение 20180201? Вот на песочнице было все равно, лишь бы влезало в границы. А на боевой - почему-то отказывается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2018, 11:46 |
|
||
|
Exchange partition
|
|||
|---|---|---|---|
|
#18+
по полю какого типа секционирование? сперва кажется, что по дате, и что даты заданы стринговыми литералами. зетем констрэйнт вдруд по int-ам, которые, если перевести на даты, вообще другие границы задают. или поле вообще char? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2018, 11:59 |
|
||
|
Exchange partition
|
|||
|---|---|---|---|
|
#18+
Gollum... MSSQL 4982 ALTER TABLE SWITCH allows values that are not allowed by check constraints or partition function ... У вас все констрейнты (даже если их нет :-) ) - стали недоверенными. Сделайте на таблице, которую вы собираетесь переключить в партицию: Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2018, 12:08 |
|
||
|
Exchange partition
|
|||
|---|---|---|---|
|
#18+
uaggsterALTER TABLE TMP_F_table WITH CHECK CHECK CONSTRAINT all Нет, не помогло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 11:49 |
|
||
|
Exchange partition
|
|||
|---|---|---|---|
|
#18+
про тип колонки ответьте, а то секционирование точно не по инту, а зато check constraint как раз по нему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 12:21 |
|
||
|
Exchange partition
|
|||
|---|---|---|---|
|
#18+
причина всему -- ваш бардак с типами . функция секционирования уже криво определена: зачем писать строки, если вы секционируете целые числа? но сервер молча проглотил, а вы, видимо, решили, что какая вообще разница, числа или строки. ну а теперь репро (хотя и не совсем той ошибки): создаю 2 таблицы на схеме, созданной из вашей кривой функции, заполняю таблицу TMP_F_table вашими int-значениями, успешно ее переключаю в основную. затем обратно переключаю, чтобы далее продолжить эксперимент. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. и вот теперь у меня типа руки чешутся констрэйнт налепить, я его делаю ровно как у вас, с целыми числами (зачем он вообще нужен, если ваша темповая таблица и без того секционирована и создана на той же самой схеме?) Код: sql 1. 2. 3. 4. 5. зато теперь делаем переключение обратно и обламываемся: Код: sql 1. Msg 4972, Level 16, State 1, Line 30 ALTER TABLE SWITCH statement failed. Check constraints or partition function of source table 'partitioning.dbo.test' allows values that are not allowed by check constraints or partition function on target table 'partitioning.dbo.TMP_F_table'. ну что, обратно не переключает, ибо даже при равных схемах, условие констрэйнта может быть нарушено, т.е. оно не эквивалентно схеме секционирования . и даже понятно, почему. 20180199 удовлетворяет вашей дурацкой строковой функции: Код: sql 1. 2. 3. 4. но НЕ удовлетворяет констрэйнту. и поэтому никого уже не интересует одинаковость схем. ------------ теперь 2 вопроса: 1) зачем в функции использованы строки, если вы секционируете по числам? 2) зачем констрэйнт, если ваша темповая таблица и без того на той же схеме? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 16:31 |
|
||
|
Exchange partition
|
|||
|---|---|---|---|
|
#18+
alexeyvgУ вас же в функции нету 20180132, наверное, следующее значение 20180201? Значит, надо ([KEY_DATE_START]>=(20180101) AND [KEY_DATE_START]<(20180201)) Ещё, в функции у вас границы задаются как строки (почему, интересно, для типа int???) Тогда нужно и в чек-кронстрейне задавать как строки, как я понимаю. Очень оно чувствительно. вообще катит и с целыми в констрэйнте, но диапазон, разумеется, надо брать ваш, а не ТС. ну и да, зачем же задавать числа строками? мне тоже совершенно непонятно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2018, 16:43 |
|
||
|
Exchange partition
|
|||
|---|---|---|---|
|
#18+
Yasha123про тип колонки ответьте, а то секционирование точно не по инту авторПоле партиционирования KEY_DATE_START, int, непустое Yasha123а зато check constraint как раз по нему И функция по нему, и прекрасно работает. И exchange partition прекрасно работает с точно такой же по структуре таблице ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2018, 04:18 |
|
||
|
Exchange partition
|
|||
|---|---|---|---|
|
#18+
Yasha123если ваша темповая таблица и без того секционирована Именно потому, что она не партиционирована, и создается констрейнт. Но Вам, похоже, все равно, Вы пишете, а не читаете... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2018, 04:29 |
|
||
|
Exchange partition
|
|||
|---|---|---|---|
|
#18+
GollumYasha123если ваша темповая таблица и без того секционирована Именно потому, что она не партиционирована, и создается констрейнт. Но Вам, похоже, все равно, Вы пишете, а не читаете... это вы не читаете. констрэйнт по диапазону int не эквивалентен диапазонам секциониррвания по строкам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2018, 08:18 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39596191&tid=1690272]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
83ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 257ms |
| total: | 445ms |

| 0 / 0 |
