Lập trình cơ sở dữ liệu SQL CE/SQL2000

Có bác nào nhiều kinh nghiệm chỉ em ít về lập trình đồng bộ dữ liệu SQL CE với SQL 2000. Hiện tại em dùng RDA, với cặp lệnh pull/push nhưng có vẻ không ổn lắm với một đống relation.
Em có tham khảo qua merge replication, nhưng không thành công trong cài đặt :((

Bạn nên dùng SQL2005 và Compact Framework 2.0, việc replication nó đơn giản và hơn nữa hỗ trợ truy vấn dữ liệu Mobile SQL trên PC. Dữ liệu trên SQL bạn hoàn toàn có thể import vào SQL 2005. Bạn có thể tham khảo thêm bên codeguru.com tôi nhớ có bài hướng dẫn khá chi tiết.
Chúc thành công!

Em có làm thử một quả kết nối csdl sqlserver 2000 với pocketpc thông qua quy trình đồng bộ dùng RDA(pull/push). Em đưa cả code lên để mọi người nghía:

string strRemoteConnectionString=“Provider=sqloledb;Data source=MyServer;database=WR;uid=sa;pwd=sa”;
string InternetURL=“http://192.168.0.150/ssce/sscesa20.dll”;
string strLocalConnectionString=@"
Data source=\My documents\WR.sdf";

//tránh xung đột bằng cách xóa file CSDL SQL CE cũ đi

if (System.IO.File.Exists(@“\My documents\wr.sdf”) System.IO.File.Delete(@“\My documents\wr.sdf”);
//Tạo file database mới
SqlCeEngine en=new SqlCeEngine(strLocalConnectionString);
en.CreateDatabase();
SqlCeRemoteDataAccess rda=new SqlCeRemoteDataAccess();

		rda.InternetUrl=InternetURL;
		rda.LocalConnectionString=strLocalConnectionString;

try
{
//“Lôi” CSDL trên server về SQL CE
rda.Pull(“Account”,“select * from tblAccounts”,strRemoteConnectionString,RdaTrackOption.TrackingOn);
}
catch(SqlCeExeption ex)
{
MessageBox.Show(ex.ToString());
}

Giờ chúng ta đã có một “ánh xạ” CSDL giống như trên SQL Server2K. Quá trình xử lý dữ liệu tiến hành như bình thường:
SqlCeConnection cnn=new SqlCeConnection(@“Data Source=\My Documents\wr.sdf”;

cnn.Open();

SqlCeCommand cmd=new SqlCeCommand();
cmd.Connection=cnn;
cmd.CommandText=“select * from tblAccount”;
cmd.ExecNonQuerry();

cnn.Close();

Sau khi thực hiện các thao tác thay đổi trong CSDL thì nên đóng kết nối ngay nếu không muốn dính chưởng sharing violation.

Cuối cùng là push back file .sdf về SQL Server 2000.
Chú ý là trong quá trình pull thì bạn phải để RdaTrackOption là TrackOn thì mới có thể push back.

string strRemoteConnectionString=“Provider=sqloledb;Data source=MyServer;database=WR;uid=sa;pwd=sa”;
string InternetURL=“http://192.168.0.150/ssce/sscesa20.dll”;
string strLocalConnectionString=@“Data source=\My documents\WR.sdf”;

SqlCeRemoteDataAccess rda=new SqlCeRemoteDataAccess();
rda.InternetUrl=InternetURL;
rda.LocalConnectionString=strLocalConnectionString;
try
{
rda.Push(“tblMenu”,strRemoteConnectionString,RdaBatchOption.BatchingOn);
}

Chú ý là trong các biến InternetURL và strRemoteConnectionString, tên Server cài máy chủ SQL Server 2000 của tôi là MyServer và IP được router không dây cấp là 192.168.0.150, trong chương trình của bạn, hãy thiết lập các giá trị phù hợp và nó sẽ chạy êm thôi

Tuy nhiên có một vấn đề rắc rối là khi pull các trường có kiểm identity, sqlce sẽ không cho phép thực thi câu lệnh insert.
Ai có cách giải quyết đoạn này không?