
Nguyên bản được gửi bởi
vatelsoftware
Chào các bạn . Mình đang muốn làm đồng bộ hóa dữ liệu trong SQL2005 (Ví dụ có 2 Database ở 2 nơi mình thiết lập trong SQL2005 làm sao mà khi dữ liệu nhập ở 1 nơi thì dữ liệu đó đồng thời tự động chuyển về Database kia ) Nhờ các bạn hướng dẫn mình cách làm nhé . Cám ơn các bạn nhiều
Kỹ thuật đồng bộ hóa được dùng để giải quyết bài toán tốc độ , cũng như làm việc gián tuyến, ví dụ một sô công ty thường có văn phòng và chi nhánh cách nhau quá xa ( thường là và km) không thể truy xuất qua LAN đc mà phải là WAN ,ADSL thì bây giờ mới có, trước những năm 2002 thì đa số toàn là DIAL UP rất chậm. Với các đường truyền này mà bắt client load hàng loạt record từ server thì chẳng có line nào chịu nổi (nhất là đối với những tác vụ đòi hỏi truy xuất 1 số lượng dữ liệu lớn ) .Giải pháp đưa ra đơn giản nhất là chuyển ADO 2.X về chế độ offline, copy CSDL từ server về cached trên máy cục bộ mỗi khi connect thì đồng bộ lại với CSDL trên server( dữ liệu copy thực tế sẽ rất ít ) , với vb6 ... C++ thì coder phải viết mã khá nhiều để xử lý hoặc sử dụng 3rd component nhưng lên .NET, mọi việc đã được giải quyết khá đơn giản với LocalDataCache ( VS2k8 + SQL SERVER ONLY )
+ Bạn nhắp phải vào project, --> add new item -->LocalDataCache2
trong bảng config data syn :
+ Mục database connection : chọn server conection và client connection( chính là connection đến local database- sẽ được tự tạo ngay sau khi server connection thiết lập , bạn cứ để mặc định nó sẽ tạo 1 local database hoặc thiết lập connection đến CSDL có sẵn )
+ mục cached table : Chọn bảng từ server connection cần cached ( lưu ý , wizza sẽ tự tạo thêm các field như lastaccess ,creation date để sử dụng trong quá trình đồng bộ hóa )
+ trong mục advance chọn : server project location và client project location ( các ứng dụng phân tán theo kiến trúc client -server thường chia ra làm nhiều tầng, bạn đặt server project = service layer project (SOA) hoặc DAL project .
Tại client hay tầng giao diện bạn copy đoạn lệnh sau vào form load,
Code:
{
LocalDataCache1SyncAgent syncAgent = new LocalDataCache1SyncAgent();
using (ServiceReference1.LocalDataCache1SyncContractClient syncClient = new ServiceReference1.LocalDataCache1SyncContractClient()) {
syncAgent.RemoteProvider = new Microsoft.Synchronization.Data.ServerSyncProviderProxy(syncClient);
Microsoft.Synchronization.Data.SyncStatistics syncStats = syncAgent.Synchronize;
HiepHuongLocalCachedTableAdapters.tblDoiTuongTableAdapter da = new HiepHuongLocalCachedTableAdapters.tblDoiTuongTableAdapter();
HiepHuongLocalCached ds = new HiepHuongLocalCached();
da.Fill(ds.tblDoiTuong);
this.HiepHuongEntiies.Merge(ds);
string syncSummary = "Total changes downloaded: " + syncStats.TotalChangesDownloaded.ToString() + Constants.vbCrLf + "Last successful synchronization: " + syncStats.SyncCompleteTime.ToString;
}
}
Khi form load local database sẽ đc đồng bộ với server