Чтобы предотвратить заполнение журнала, вы можете выполнить незарегистрированную операцию. Если это невозможно, вы можете установить параметры БД для усечения контрольной точки журнала во время процедуры копирования, но этого второго метода может быть недостаточно, чтобы журнал не был исчерпан. Если используется незарегистрированная операция, то после завершения необходимо сделать полный дамп БД, чтобы создать резервную копию нового базового состояния. Незарегистрированные операции могут быть опасными, если они выполняются за пределами периода автономного обслуживания.
Обрезать контрольную точку (выполните следующие действия, а затем выполните контрольную точку)
Чтобы включить/выключить режим Truncate, используйте
использовать мастер;
sp_dboption , 'trunc log on chkpt', [false|true];
Чтобы разрешить BCP/выбрать INTO в базе данных (выполните следующие действия, а затем выполните контрольную точку)
использовать мастер;
sp_dboption, 'выбрать в/массовое копирование/plsort', [false|true];
Чтобы выполнить контрольную точку
Для контрольной точки в БД используйте ‘dbname’.
использовать «имя БД»;
пропускной пункт;
Вариант BCP
Если вы решите использовать BCP, убедитесь, что вы используете быстрый BCP. Fast BCP не регистрируется.
Правила, обеспечивающие использование Fast BCP, указаны на странице http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc30191.1570100/doc/html/san1367605064460..html .
Вы можете сделать это в два этапа: «извлечение» (выход), а затем «загрузка» во время выполнения. Команды будут выглядеть примерно так.
SYBASE/$SYBASE_OCS/bin/bcp ${DB1NAME}..${TABNAME} из $DUMPDIR/$DB1NAME/${TABNAME}.TXT -c -U$SQLUSER -P$USERPASS -S$SERVER1NAME
SYBASE/$SYBASE_OCS/bin/bcp ${DB1NAME}..${TABNAME} в $DUMPDIR/$DB1NAME/${TABNAME}.TXT -c -U$SQLUSER -P$USERPASS -S$SERVER1NAME
Чтобы это работало, в БД должна быть установлена опция выбора в / массового копирования БД.
Вам нужно будет сбросить БД после этой операции.
Незарегистрированная операция – выберите "В"
Поскольку у вас есть доступ к обеим базам данных с одного сервера, вам следует взглянуть на использование select into.
«выбрать в» — это незарегистрированная операция.
Целевая таблица для оператора select into не может существовать, поэтому вам нужно будет переместить исходную целевую таблицу с помощью sp_rename, а затем запустить выборку, используя две исходные таблицы в вашем запросе.
Чтобы это работало, для БД необходимо установить параметр выбора в/массовое копирование БД.
Вам нужно будет сбросить БД после этой операции.
Это может быть медленным из-за заявления Союза. Также объединение не является хорошим вариантом, если строки не уникальны.
Индексы
В общем, если в целевой таблице есть большой индекс (особенно кластеризованный), вероятно, было бы более эффективно удалить его во время копирования и воссоздать его впоследствии.
person
london-deveoper
schedule
22.01.2017