为防止日志被填满,您可以执行未记录的操作。
如果这不可能,您可以在复制过程中将 DB 选项设置为截断日志检查点,但第二种方法可能不足以确保日志不会耗尽。
如果使用未记录的操作,则在完成后应进行完整的数据库转储以创建新基线的备份。
如果在离线维护窗口之外进行未记录的操作可能会很危险。
在检查点截断(执行以下操作,然后执行检查点)
要打开/关闭截断模式,请使用
使用主人;
sp_dboption , 'trunc log on chkpt', [false|true];
在数据库上允许 BCP/select INTO(执行以下操作,然后执行检查点)
使用主人;
sp_dboption , 'select into/bulkcopy/pllsort ', [false|true];
执行检查点
在数据库“dbname”中使用检查点。
使用“数据库名称”;
检查点;
BCP 选项
如果您选择使用 BCP,请确保使用快速 BCP。快速 BCP 未记录。
确保使用快速 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 移动原始目标表,然后使用查询中的两个源表运行 select。
需要为此数据库设置选择进入/批量复制数据库选项。
您需要在此操作后转储数据库。
由于 Union 声明,这可能会很慢。此外,联合也不是一个好的选择,因为行不是唯一的。
索引
一般来说,如果目标表上有一个大索引(尤其是集群索引),那么在复制过程中删除它并在之后重新创建它可能会更有效。