当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-05-02 15:21:00  来源:本站整理

<b>办理两相同数据库数据同步的问题</b>[MSSQL防范]

赞助商链接



  本文“<b>办理两相同数据库数据同步的问题</b>[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

为用户组建一套sql server利用系统时,用户常常提到这样的要求:
 
  假如此中一台服务器坏了,怎样才能避免数据丧失,并在最短的时间内恢复系统?www.iTbulo .comkCgPj

要办理这个问题,必定需求两台服务器,并在两台服务器上装有相同的数据库,保持两台服务器中的数据同步,当主服务器坏了时,将别的一台服务器更改一下计算机名称,从而使得工作站可以持续运行.www.iTbulo .comkCgPj

那么若何保持两台数据库中的数据同步呢? SQL Server供应了出版-定阅机制,可以将数据及时的拷贝到定阅服务器中. 但在实际利用中,发现一旦成立起了出版-定阅关系,在定阅服务器数据库中的触发器,主键等东西都不见了!!! 当主服务器不能正常工作时,要想让另一台服务器改变成主服务器,除更改计算机名外,还需成立触发器,索引等,历程对比烦琐.分外当用户对数据库保护不熟习时,这种操作越发麻烦.www.iTbulo .comkCgPj

Sql Server做为一种数据库管理系统,它与客户的接口都是通过SQL语句举行的, 用户在插入一条记录时,SQL Server会接纳到Insert语句;更改一条记录时,会接纳到 Update号令...
那么假如我们能在SQL Server中跟踪到全部发给SQL Server的SQL语句,那么我们便可以知道数据库发生了哪些改变,并可以将这种改变发给别的一到服务器,从而实现数据及时同步的功效.www.iTbulo .comkCgPj

值得高兴的是,SQL Server 供应了跟踪功效 ,它们是以 xp_trace_XXXXXX的一系列存储历程,
你可以设置过滤条件,从而只跟踪影响你的数据库 改变的SQL 语句,将这些SQL 语句存放在本地表中,再从本地表中读出,发送给别的一台服务器 ,从而实现数据同步功效. 这种办法可以跟踪任何范例的改变,包含Image范例数据的改变.www.iTbulo .comkCgPj

以下面是用BCB5.0语句实现成立跟踪历程:
bool TForm1 :: BuildTrace(int DBID,
                        AnsiString AppFilter,
                        AnsiString SQLFilter,
                        AnsiString DstTable,
                        int &TraceHandle)
{
    char tempBuf[512];www.iTbulo .comkCgPj

    Query1 -> Close();
    Query1 -> SQL -> Clear();
    TStrings *pSQL = Query1 -> SQL;www.iTbulo .comkCgPj


    pSQL -> Add("USE master");
    pSQL -> Add("DECLARE @queue_handle int");
    pSQL -> Add("DECLARE @column_value int");
    pSQL -> Add("SET @column_value = 67108864|1|512|1024|10384");
    pSQL -> Add("EXEC  xp_trace_addnewqueue 1000,5,95,90,@column_value,@queue_handle OUTPUT");
    pSQL -> Add("EXEC xp_trace_seteventclassrequired @queue_handle, 41,1 ");
  
    wsprintf(tempBuf,"EXEC xp_trace_setappfilter @queue_handle,'%s',NULL", AppFilter.c_str());
    pSQL -> Add(AnsiString(tempBuf));www.iTbulo .comkCgPj

    wsprintf(tempBuf,"EXEC xp_trace_setdbidfilter @queue_handle,%d",DBID);
    pSQL -> Add( AnsiString(tempBuf));www.iTbulo .comkCgPj

    wsprintf( tempBuf,"Exec xp_trace_settextfilter @queue_handle,'%s',NULL", SQLFilter.c_str());
    pSQL -> Add(AnsiString(tempBuf));www.iTbulo .comkCgPj

 www.iTbulo .comkCgPj

    www.iTbulo .comkCgPj

    wsprintf( tempBuf,
              "EXEC xp_trace_setqueuedestination @queue_handle,4,1,NULL,'%s'",
              DstTable.c_str()
            );
    pSQL -> Add( AnsiString(tempBuf));www.iTbulo .comkCgPj

    pSQL -> Add("EXEC xp_trace_startconsumer @queue_handle");
    pSQL -> Add("SELECT @queue_handle QueueHandle");www.iTbulo .comkCgPj

    try
    {
        Query1 -> Open();
    }
    catch(...)
    {
        return false;
    }
    TraceHandle = Query1 -> FieldByName("QueueHandle") -> AsInteger;
    return true;
}www.iTbulo .comkCgPj


 www.iTbulo .comkCgPj

  以上是“<b>办理两相同数据库数据同步的问题</b>[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .