我想仅将当天的数据同步复制到另一个表(最好是另一个库)中,再针对复制的表进行分析统计。如果只是作分析,没必要实时同步吧?可以考虑使用bcp工具,然后通过作业执行来达到数据同步

解决方案 »

  1.   

    使用 bcp 和 BULK INSERT
    bcp 命令行提示实用工具将 Microsoft® SQL Server™ 数据复制到某个数据文件或从某个数据文件复制数据。该实用工具最常用于将大量数据从其它程序(通常是另一种数据库管理系统 (DBMS))传输到 SQL Server 表中。数据首先从源程序导出到数据文件,然后使用 bcp 将数据从该数据文件导入到 SQL Server 表。另外,bcp 还可以用来将数据从 SQL Server 表传输到数据文件中,以供其它程序使用。例如,可以将数据从 SQL Server 实例复制到某个数据文件。而其它程序可以从该数据文件中导入数据。说明  bcp 实用工具是用 ODBC 大容量复制应用程序接口 (API) 编写的。而早期版本的 bcp 实用工具是用 DB-Library 大容量复制 API 编写的。
    使用 BULK INSERT 语句,还可以将数据从数据文件传送到 SQL Server 表。然而,BULK INSERT 语句不能将数据从 SQL Server 实例大容量复制到数据文件。BULK INSERT 语句使您得以利用 Transact-SQL 语句而不是命令提示符来实现 bcp 实用工具的功能,将数据大容量复制到 SQL Server 实例。还可以通过编写程序,使用大容量复制 API 在 SQL Server 和数据文件之间大容量复制数据。大容量复制 API 可以在基于 ODBC、OLE DB、SQL-DMO 和 DB-Library 的应用程序中使用。触发器执行
    所有大容量复制操作(BULK INSERT 语句、bcp 实用工具和大容量复制 API)均支持大容量复制提示 FIRE_TRIGGERS。在将行复制到表的大容量复制操作中,如果指定了 FIRE_TRIGGERS,则对大容量复制操作所插入的所有行均执行在目的表上定义的 INSERT 和 INSTEAD OF 触发器。默认情况下,大容量复制操作不执行触发器。对于指定了 FIRE_TRIGGERS 的大容量复制操作,需考虑以下事项: 通常在日志中记录最少的大容量复制操作将被完整地记录下来。
    触发器对大容量复制操作中的每个批处理触发一次。传送到触发器的 inserted 表包含该批处理插入的所有行。只有当大容量复制到带有 INSERT 和 INSTEAD OF 触发器(这两种触发器支持多行插入)的表时,才应指定 FIRE_TRIGGERS。
    插入触发器生成的结果集不返回执行大容量复制操作的客户端。
      

  2.   

    语法
    bcp {[[database_name.][owner].]{table_name | view_name} | "query"}
        {in | out | queryout | format} data_file
        [-m max_errors] [-f format_file] [-e err_file]
        [-F first_row] [-L last_row] [-b batch_size]
        [-n] [-c] [-w] [-N] [-V (60 | 65 | 70)] [-6]
        [-q] [-C code_page] [-t field_term] [-r row_term]
        [-i input_file] [-o output_file] [-a packet_size]
        [-S server_name[\instance_name]] [-U login_id] [-P password]
        [-T] [-v] [-R] [-k] [-E] [-h "hint [,...n]"]
      

  3.   

    感谢楼上的朋友热情帮助,不过可不可以有更简单具体一点的方法?我后面查了些资料好像可以用job+存储过程解决,过程类似数据库的增量备份。