Di artikel-1 dan artikel-2 telah dibahas tentang setting merge replication di sql server ce dan web synchronization untuk menginstal sql ce server agent di IIS. Pada kesempatan ini saya akan melakukan test merge replication dengan konfigurasi yang telah dibuat sebelumnya. Aplikasi mobile yang dibuat menggunakan Visual Studio 2008 dengan target .net compact framework 3.5 sp2 dan Windows Mobile 6.5 emulator. Manipulasi data di mobile device akan dilakukan langsung melalui SQL Query Analyzer 3.5 yang telah diinstal secara built-in di device emulator tersebut.
Environment yang digunakan di artikel ini berbeda dengan environment yang digunakan di artikel-1 dan artikel-2. Disini saya masih tetap menggunakan Windows 7 x64, IIS 7.5 dan Visual Studio 2008, namun SQL Server yang digunakan yaitu untuk versi 2008 (SP2) dan juga untuk SQL CE Server Tools yang digunakan bukan versi SQL Server 2005 Mobile Tools namun SQL Server CE 3.5 SP2 Server Tools. Hal tersebut sengaja saya lakukan untuk memberikan alternatif lain dalam hal penggunaan environment dan framework terbaru. Untuk setting merge replication dan web synchronization tidak berbeda dengan yang telah dilakukan di artikel-1 dan artikel-2.
Ada beberapa komponen yang harus diinstal dengan environment yang telah disebutkan diatas, komponen-komponen tersebut ialah :
Satu hal yang harus diketahui apabila didalam komputer yang digunakan terinstal SQL Server 2005 Mobile Server Tools (SQL CE 3.1) dan SQL Server CE 3.5 SP2 Server Tools secara bersamaan maka anda harus melakukan uninstal terhadap salah satu komponen tersebut yang tidak akan digunakan. Sinkronisasi dari mobile device tidak dapat dilakukan apabila kedua komponen tersebut diinstal di komputer yang sama.
Lakukan langkah-langkah berikut ini untuk melakukan test merge replication di mobile device :
- Instal microsoft loopback adapter dari Device Manager dan berikan sebuah ip address dari network sharing center setelah adapter tersebut diinstal :

- Instal Windows Mobile Device Center
- Instal SQL Server CE 3.5 SP2 Server Tools x86.
- Lakukan Web Synchronization dari menu Start – All Programs

pilih menu web synch untuk yang 32 bit. Disini asumsinya saya telah membuat snapshot folder yang telah di share dengan nama pubdata dan virtual directory dengan nama sync. Karena koneksi yang digunakan dari mobile device disini menggunakan anonymous user maka IIS 7 akan menggunakan IUSR group sebagai credentialnya. Oleh karena itu pastikan group tersebut diberikan hak akses read-write ke snapshot folder dan virtual directory (read-execute untuk file sqlcesa35.dll).
- Browse ke url berikut ini dan pastikan hasilnya seperti gambar dibawah ini :

- Buat login untuk IUSR (Windows 7) ke server instance database SQL Server 2008 lewat SQL Server Management Studio – Security – Logins dan berikan hak akses ke database Northwind di bagian User Mapping.
- Berikan hak akses ke Publication Access List di Local Publications yang telah dibuat dengan klik kanan publication (disini saya menggunakan nama NorthwindPub)– properties :

- Buat Smart Device project template di Visual Studio 2008 dengan memilih target .net compact framework 3.5 dan windows mobile 6 professional platform :


- Tambahkan referensi ke assembly berikut ini :

- Tambahkan code behind berikut ini di event click button :
Imports System.Data.SqlServerCe
Public Class frmMain
Private Sub btnSynch_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles btnSynch.Click
Using sqlCeRep As New SqlCeReplication
With sqlCeRep
.InternetUrl = _
"http://rully/sync/sqlcesa35.dll"
.Publisher = "rully"
.PublisherSecurityMode = _
SecurityType.DBAuthentication
.PublisherLogin = "sa"
.PublisherPassword = "sql2008"
.PublisherDatabase = "Northwind"
.Publication = "NorthwindPub"
.Subscriber = "Rully"
.SubscriberConnectionString = _
"Data Source=\My Documents\Northwind.sdf"
End With
Try
If Not System.IO.File.Exists( _
"\My Documents\Northwind.sdf") Then
sqlCeRep.AddSubscription( _
AddOption.CreateDatabase)
End If
sqlCeRep.Synchronize()
lblInfo.Text = "Synchronized."
Catch ex As SqlCeException
lblInfo.Text = ex.Message
Catch ex As Exception
lblInfo.Text = ex.Message
End Try
End Using
End Sub
End Class
Kode di atas akan melakukan replikasi data yang sifatnya bidirectional (dua arah). Internet url diisi dengan url sql server agent, publisher diisi dengan nama server database, publishersecuritymode diisi dengan db authentication karena menggunakan sql server user untuk terhubung ke database, publisherlogin diisi dengan sql user begitu juga dengan passwordnya di properti publisherlogin, publication diisi dengan nama Local Publication yang telah dibuat sebelumnya, subscriber diisi dengan nama sembarang dan tentunya ini dapat digunakan untuk mengidentikasikan subcriber yang melakukan replikasi, subscriberconnectionstring diisi dengan lokasi file database yang nantinya akan digunakan dan disimpan di device.
Kode berikutnya yaitu melakukan pengecekan keberadaan file database tersebut, apabila file tersebut belum ada maka kita bisa create langsung database dari back end database dengan object-object seperti table atau view yang telah didefinisikan di Articles Publication. Selanjutnya kode tersebut akan melakukan sinkronisasi data terhadap perubahan data di lokal device maupun perubahan data di database back end.
- Jalankan windows mobile device center dan lakukan setting koneksi menjadi DMA (Direct Memory Access) :


- Jalankan aplikasi mobile tersebut dari visual studio, pilih windows mobile emulator yang ingin digunakan (disini saya menggunakan Windows Mobile 6.5 Professional Potrait QVGA Emulator), lakukan koneksi dan cradle dari Device Emulator Manager :


- Ubah setting koneksi di Windows Mobile menjadi My Work Network.
- Klik button Synchronize :

Data telah sukses di sinkronisasi. Karena proses sinkronisasi tersebut baru dilakukan pertama kali maka database akan di create beserta object table atau view dan recordnya. Disini saya tidak akan menjelaskan tentang bagaimana caranya melakukan manipulasi data di local database sql server yang ada di mobile device. Untuk melakukan testing merge replikasi pada data yang sudah diubah baik itu di local database maupun di back end database saya akan menggunakan Query Analyzer yang sudah terdapat di device.
- Buka Query Analyzer 3.5 di mobile device dan koneksikan ke file database Northwind.sdf yang telah di create dari hasil proses sinkronisasi.



- Ketikkan perintah sql untuk membaca semua data customer di database sdf. Query di ketikkan di bagian tab SQL dan hasilnya dapat dilihat di bag tab Grid :


- Tambahkan data baru ke file sdf tersebut dengan menggunakan Query Analyzer :

- Lakukan sinkronisasi dengan melakukan klik button Synchronize Data. Proses sinkronisasi untuk yang kedua kali dan seterusnya tidak akan membuat database sdf namun hanya akan melakukan merge replikasi terhadap data-data yang berubah baik itu di database lokal maupun back end database.
- Buka SQL Server 2008 Management Studio dan lakukan select semua data di table customer. Hasil dari penambahan data yang telah di sinkronisasi dari mobile device akan dilihat hasilnya seperti pada gambar berikut ini :

- Lakukan penambahan data customer baru di Management Studio tersebut :

- Lakukan kembali sinkronisasi data dari mobile device, kemudian buka kembali Query Analyzer di mobile device yang belum ditutup aplikasinya dan lakukan query semua data customer di database Northwind.sdf :

Data yang ditambahkan dari backend database akan di sinkronisasikan ke database lokal. Ok…sampai disini dulu rangkaian terakhir dari artikel SQL Server CE Merge Replication 