[翻译]一步步教你配置SQL SERVER合并复制(八)代码部分(使用.NET CompactFramework)

      上一篇:一步步教你配置SQL SERVER合并复制(七)管理Publication

      这个系列的翻译也拖了一段时间,现在决定一次性将它理清了。关于合并复制服务器的配置在前面的翻译文章中都已经详细地论述完了,现在终于到了订阅者是如何使用我们配制好的合并复制了。下面的代码是针对.NET CompactFramework的,其实整个合并复制的过程中,安装和配置占了95%的时间,而创建订阅仅仅需要5%的时间,合并复制的这个特征减小了我们敲代码时出现错误的几率,将更多地工作移植到了服务器上来,这样如果有错误发生的话,我们求助微软的几率要比求助开发者的几率要大得多。

     在.Net CompactFramework中,合并复制我们只需要一个类SqlCeReplication,它是位于System.Data.SqlServerCe中的。

using  System.Data.SqlServerCe;

下面是示例代码:

  SqlCeReplication repl  =   null ;
            
try
            
{//实例化一个SqlCeReplication对象
                repl = new SqlCeReplication();
                
//设置IIS上的SQL MOBILE SERVER代理
                repl.InternetUrl = YourServerToolsUrl;
                
//访问ServerTools的用户
                repl.InternetLogin = YourWebUser;
                
//访问ServerTools的用户密码
                repl.InternetPassword = YourWebPwd;
                
//发布复制的数据库服务器名称
                repl.Publisher = YourPublisher;
                
//发布复制的数据库名称
                repl.PublisherDatabase = YourPublisherDatabase;
                
//发布合并复制的名称
                repl.Publication = YourPublication;
                
//用户过滤同步数据的主机名称
                repl.HostName = UserID;
               
//发布复制的验证模
                repl.PublisherSecurityMode = SecurityType.NTAuthentication;
                
//订阅者的名称
                repl.Subscriber = new Random().Next().ToString();
                  //订阅者的数据库的连接字符串
                repl.SubscriberConnectionString 
= ConnectionString;
                
//如果数据库不存在的话就下载新的数据库
                if (!DatabaseExists())
                
{
                    repl.AddSubscription(AddOption.CreateDatabase);
                }

                repl.Synchronize();
            }

            
finally
            
{
                repl.Dispose();
            }

      当你完成一切工作,如果设备初始化时未加入数据库时,下载快照文件时,会先在设备上创建一个初始化的本地数据库,这个初始化的本地数据库是20KB,然后数据库的内容就会被下载并插入到这个空数据库当中,如果这时候刚刚好网络断开或者是其他原因造成不能下载数据库的时候,你会发现你的设备上的数据库只有20KB。所以说在同步数据库之后检查下数据库的大小是否大于20KB,如果大于20KB的话就表明你已经成功地将服务器上的数据下载到设备上来,否则的话就表明同步失败。

      同步复制因为在服务器端做了太多的工作以至于我们在碰到错误的时候会显得束手无策,这些都是需要我们彼此去交流探讨关于同步工作的一些问题的解决方案。希望本文能给你带来一点帮助。

你可能感兴趣的:([翻译]一步步教你配置SQL SERVER合并复制(八)代码部分(使用.NET CompactFramework))