您的位置:首页 >> 数据库 >> 数据库其它 >> 正文
RSS
 

解决两相同数据库数据同步的问题

http://www.rdxx.com 01年10月01日 09:50 互联网 我要投稿

关键词: 同步 , 问题 , 解决 , 数据库 , 数据

在上一篇<<解决两相同数据库数据同步的问题>> ,由于时间关系,没有对BuildTrace函数给出说明,在此做以补充 .

笔者是在山东潍坊出差时,遇到了用户要求的提供双机热备份功能,
最终的解决方案是:
 在主服器上运行同步程序(用BCB5.0编写的程序),同步程序在启动时,在SQL Server 中建立跟踪过程,跟踪过程将跟踪到的SQL 语句存放在主服务器的跟踪表中;
  同步程序每隔半分钟访问跟踪表,将其中的SQL 语句发送到备份服务器,并将其删除!


/* 功能: 在SQL Server中建立跟踪
  输入参数: DBID  - 想要跟踪的数据库的ID号,可以用数据库名在      master.dbosysdatabases中查出。
           AppFilter - 限制跟踪哪个客户端应用程序提交给SQL Server的SQL语句
           SQLFilter - 限制跟踪哪类的SQL 语句,可以控制只跟踪UPDATE,INSERT,DELETE 语句
           DstTable - 将跟踪到的信息存储到数据库的哪一个表中
           TraceHandle -引用类型变量,返回给调用者建立起的跟踪句柄
  返回值: true 成功,false 失败
*/

bool TForm1 :: BuildTrace(int DBID,
                        AnsiString AppFilter,
                        AnsiString SQLFilter,
                        AnsiString DstTable,
                        int &TraceHandle)
{
    char tempBuf[512];                

Query1 -> Close();            //Query1 为 TADOQuery的组件
                              //实验中发现若用BDE中的TQuery组件,对跟踪到的 
                              //Image类型数据会操作时会发生错误.
    Query1 -> SQL -> Clear();
    TStrings *pSQL = Query1 -> SQL;

  
    pSQL -> Add("USE master");   //将当前数据库设为master       
    pSQL -> Add("DECLARE @queue_handle int");  
    pSQL -> Add("DECLARE @column_value int");
       // 可以跟踪很多种信息,但通常只需要其中一部分, @column_value用来确定需要哪些信息.
    //下行每个数字代表一列,具体可参见Transact -SQL Help

9 7 3 1 2 3 4 8 :

 
 
标签: 同步 , 问题 , 解决 , 数据库 , 数据 打印本文
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站