一步步教你配置SQL SERVER合並復制(八)代碼部分(使用.NET CompactFramework)
這個系列的翻譯也拖了一段時間,現在決定一次性將它理清了。關於合並復制服務器的配置在前面的翻譯文章中都已經詳細地論述完了,現在終於到了訂閱者是如何使用我們配制好的合並復制了。下面的代碼是針對.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的話就表明你已經成功地將服務器上的數據下載到設備上來,否則的話就表明同步失敗。
同步復制因為在服務器端做了太多的工作以至於我們在碰到錯誤的時候會顯得束手無策,這些都是需要我們彼此去交流探討關於同步工作的一些問題的解決方案。希望本文能給你帶來一點幫助。