在創建應用程序之前,必須在 SQL Server 2005 中配置發布。在下列步驟中,您將創建一個示例數據庫,然後從該數據庫發布數據。您將使用預建的腳本文件創建數據庫,然後使用新建發布向導來創建發布。
創建數據庫並在其中填充數據
准備服務器以發布數據
在創建發布之前,必須創建快照代理用戶帳戶,並創建一個將在其中存儲快照文件的共享文件夾,准備服務器以進行發布。創建快照文件夾之後,該文件夾將用於服務器上的所有發布。如果以前已在此服務器上創建了發布,您可以跳過這些步驟。
創建快照用戶帳戶
創建快照文件夾
創建發布
設置權限
您必須為快照代理帳戶和 IIS 匿名用戶帳戶授予權限。還必須將 IIS 匿名用戶帳戶添加到發布訪問列表 (PAL) 中
設置數據庫權限
授予發布權限
創建發布快照
只有在創建發布快照之後才可對 SQLMobile 發布的訂閱進行初始化。
創建發布快照
_______________________________________________________________________________________
配置 IIS 和 SQL Server 2005 以實現 Web 同步
既然已對 SQL Server 配置了一個發布,則必須使該發布可以通過網絡供 SQL Server Compact Edition 客戶端使用。SQL Server Compact Edition 可通過 IIS 連接到 SQL Server。即,創建虛擬目錄並對其進行配置,從而允許客戶端訪問 SQL Server Compact Edition 服務器代理。
安裝 SQL Server Compact Edition 服務器組件
配置發布以進行 Web 同步
_______________________________________________________________________________________
SQL Server Compact Edition 任務
如果在開發要使用 SQL Server Compact Edition 的應用程序之前預先創建 SQL Server Compact Edition 數據庫和訂閱,通常會節省大量時間。SQL Server Management Studio 允許您在本地計算機上創建並使用 SQL Server Compact Edition 數據庫。然後,您可以在開發應用程序時使用此數據庫。
創建新的 SQL Server Compact Edition 數據庫
創建新的訂閱
配置步驟為三步: 創建發布-->web同步-->創建訂閱
_______________________________________________________________________________________
生成應用程序
創建新的智能設備項目
添加引用
添加數據連接
選擇要顯示的數據
添加節點
在應用程序的代碼頁中,可添加包含數據庫文件的路徑和名稱的字符串變量、用於刪除數據庫文件(如果已存在)的代碼、用於創建與 SQL Server 發布的連接、同步數據和創建一個包含已發布數據的新本地數據庫的代碼。
添加代碼
在解決方案資源管理器中,右鍵單擊“Form1”,然後選擇“查看代碼”。
在代碼頁中,查找 Form1 的類定義。添加一個字符串變量,並賦值為 .sdf 文件的路徑和文件名。Visual Studio 在先前步驟中創建的數據源需要數據庫文件駐留在 \Program Files\ApplicationName 文件夾中,其中 ApplicationName 為應用程序的名稱。例如,如果您命名了新項目 SQLMobile,則應將字符串變量設置為 "\Program Files\SQLMobile\sqlmobile.sdf"。
類定義的前幾行應該與以下代碼類似:
[C#]
復制代碼
public partial class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.MainMenu mainMenu1;
string filename = @"\Program Files\SQLMobile\sqlmobile.sdf";
public Form1()
{
InitializeComponent();
}
如果當前存在數據庫文件,則將創建新方法將該數據庫文件刪除。這將確保應用程序在每次運行時加載最新的數據。此方法應該命名為 DeleteDB。此代碼應該與以下代碼類似:
[C#]
復制代碼
private void DeleteDB()
{
if (System.IO.File.Exists(filename))
{
System.IO.File.Delete(filename);
}
}
創建名為“Sync”的執行同步的新方法。若要執行此操作,您將使用從前面步驟的“新建發布向導”中復制的代碼。在粘貼代碼後,必須對代碼執行兩項更改:
更改 SubscriberConnectionString 值,以便該值指向文件名變量中指定的正確路徑和文件名。
將 AddOption 值從 ExistingDatabase 更改為 CreateDatabase。
更改完成後,Sync 方法應如下所示:
[C#]
復制代碼
private void Sync()
{
SqlCeReplication repl = new SqlCeReplication();
repl.InternetUrl = @"http://<computername>/sqlmobile/sqlcesa30.dll";
repl.Publisher = @"<computername>";
repl.PublisherDatabase = @"SQLMobile";
repl.PublisherSecurityMode = SecurityType.NTAuthentication;
repl.Publication = @"SQLMobile";
repl.Subscriber = @"SQLMobile";
repl.SubscriberConnectionString = @"Data Source='" + filename +
"';PassWord='';Max Database Size='128';Default Lock Escalation
='100';";
try
{
repl.AddSubscription(AddOption. CreateDatabase);
repl.Synchronize();
}
catch (SqlCeException e)
{
MessageBox.Show(e.ToString());
}
}
最後,在調用最新創建的兩個方法的 Form1_Load 事件處理程序的開頭添加代碼。Form1_Load 事件處理程序應如下所示:
[C#]
復制代碼
private void Form1_Load(object sender, EventArgs e)
{
DeleteDB();
Sync();
// TODO: Delete this line of code.
this.flightDataTableAdapter.Fill(this.sqlmobileDataSet.FlightData);
// TODO: Delete this line of code.
this.membershipDataTableAdapter.Fill(this.sqlmobileDataSet.MembershipData);
}
_______________________________________________________________________________________
部署並測試應用程序
部署應用程序