Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Meriguan Member Откуда: Сообщений: 124 |
Добрый день! Есть некая база, в ней надо почистить данные в 20-ти таблицах, одна таблица родительнская, все остальные дочерние, таблицы связаны по внешнему ключу. Для чисты базы применяеться следующий алгоритм. Выбор всех таблиц которые связанные с родительнской, затем формирование скриптов для удаления данных и собственно удаление данных динамическим SQL(exec (ScriptDelete)). В данном случае используется курсор по сценариям удаления и затем цикл удаления по top N строк. Если какой либо алгоримт, который не использовал бы курсоров и без динамического SQL? |
1 авг 12, 14:43 [12946668] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Прописать порядок удаления из 20ти таблиц явно. |
||
1 авг 12, 14:45 [12946680] Ответить | Цитировать Сообщить модератору |
Meriguan Member Откуда: Сообщений: 124 |
Мне эта идя сразу пришла на ум, но есть одна проблема. Если в базе появяться еще таблицы, то надо добавлять еще блоки удаления в процедуре, иначе процедура упадет. Отслеживать все изменения которые делают в базе я не смогу, т.к. их много и меня во все действия не посвящают. |
||||
1 авг 12, 14:50 [12946719] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Как вы тогда себе представляете "алгоримт, который не использовал бы курсоров и без динамического SQL" на базе с неизвестным числом таблиц ? |
||
1 авг 12, 14:52 [12946732] Ответить | Цитировать Сообщить модератору |
Meriguan Member Откуда: Сообщений: 124 |
Как вариант перед чистой базы изменять внешние ключи в Delete Rule - Cascade, удалять данные только из родительской таблицы, затем обрано менять внешние ключи Delete Rule - No Action. |
||||
1 авг 12, 15:00 [12946796] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
И все это без перебора _неизвестного_ числа fk constraint-ов ? |
||
1 авг 12, 17:59 [12948259] Ответить | Цитировать Сообщить модератору |
Meriguan Member Откуда: Сообщений: 124 |
Так же с переборами и динамически, но это выполняется очень быстро. |
||||
1 авг 12, 18:44 [12948544] Ответить | Цитировать Сообщить модератору |
Meriguan Member Откуда: Сообщений: 124 |
Glory, Еще есть идея с отключением внешних ключей перед удалением данных по тому же самому алгоритму. Срокость должна увеличится, пока только не известно не сколько. |
1 авг 12, 18:47 [12948557] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |