急求数据库两表同步的问题
数据库是SQL2000,我的问题如下:
现状:
数据库 A 中 有数据表 T_A,T_B ... T_Z 。有程序每天不断向这些表中写入当天的实时数据。
需求:
由于我需要对当天(仅当天)情况做分析统计,由于 表 T_A,T_B ... T_Z 内数据太多。我想仅将当天的数据同步复制到另一个表(最好是另一个库)中,再针对复制的表进行分析统计。请问我该如何实现?
要求:
数据最好被同步复制(数据写入同时被复制到外表中);也可以定时复制( <5分钟)。被复制出来的表和库没有要求,但需要效率高且资源耗费尽量小。
我该如何实现?触发器么?我是初学者,请大家的回答尽量详细,谢谢大家。
------解决方案--------------------我想仅将当天的数据同步复制到另一个表(最好是另一个库)中,再针对复制的表进行分析统计。
如果只是作分析,没必要实时同步吧?
可以考虑使用bcp工具,然后通过作业执行来达到数据同步
------解决方案--------------------使用 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。
插入触发器生成的结果集不返回执行大容量复制操作的客户端。
------解决方案--------------------语法
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] "]
------解决方案--------------------触发器也可以实现啊,在插入之后向同步表进行插入,,,,
或者两个插入语句分别插入表,一个表进行每天定时统计和清理
------解决方案--------------------建个用视图也可以吧