我们面临以下问题,涉及保持以下同步:
alt text http://img502.imageshack.us/img502/8246/deployment.png
有了这些棘手的限制:
讨厌.
为了同步桌面和服务器,我们知道我们可以使用合并复制 - 服务器是提供商,桌面作为订户,一切都很好.但是同步移动和桌面节点呢?看似桌面不能是没有SQL Server + ISS的发布者,对吧?我们只能将MSSQL CE部署到桌面.
即使是这种情况,节点既可以是订户又可以是发布者?我怀疑Merge Replication架构不支持这种安排 - 看起来hub和spoke是唯一受支持的模型.
我们正在尝试确定是否可以取消RDA或合并复制作为可能的解决方案 - 如果是这样,我们可能会继续使用MS Sync Framework.
也许我们可以考虑其他技术?
谢谢大家,
阿什利
更新:我们刚刚开始玩MS Sync Framework,它摇滚!
可能重复:
GUID/UUID数据库密钥的优缺点
在任何情况下,必须将GUID用作SQL Server 2005/8数据库中的主键.例如,使用MS Sync Framework强制执行此操作还是数据复制?
我正在尝试使用 Microsoft Sync Framework 来同步 2 个 SQL Server 2005 数据库(服务器和客户端)。数据库中有多个表,它们之间有很多外键关系。我正在使用 SyncOrchestrator 来同步两个数据库。
string clientConnectionString = "<connection string>";
string serverConnectionString = "<connection string>";
SqlSyncProvider localProvider
= ConfigureClientProvider(clientConnectionString);
SqlSyncProvider remoteProvider
= ConfigureServerProvider(serverConnectionString);
SyncOrchestrator orchestrator = new SyncOrchestrator();
orchestrator.LocalProvider = localProvider;
orchestrator.RemoteProvider = remoteProvider;
orchestrator.Direction = SyncDirectionOrder.Download;
Run Code Online (Sandbox Code Playgroud)
在函数 ConfigureClientProvider 和 ConfigureServerProvider 中,我正在初始化连接并检查范围是否不存在然后创建它:
public static SqlSyncProvider ConfigureClientSyncProvider()
{
SqlSyncProvider provider = new SqlSyncProvider();
provider.Connection = new SqlConnection(Configs.ConnectionString);
DbSyncScopeDescription scopeDesc = new DbSyncScopeDescription("Test1");
SqlSyncScopeProvisioning serverConfig = new SqlSyncScopeProvisioning();
if (!serverConfig.ScopeExists("Test1", (System.Data.SqlClient.SqlConnection)provider.Connection))
{
scopeDesc.Tables.Add(SqlSyncDescriptionBuilder.GetDescriptionForTable
("Employees", …Run Code Online (Sandbox Code Playgroud) 是否可以一起使用CF EF4.1,SQL Server Compact 4和Microsoft Sync Framework?
正如我所知,MS Sync Framework需要SQL Server compact 3.5,但EF4.1使用SQL Server Compact 4 ...
更新 好的,我看到使用微软同步框架同步mssql ce4是不可能的.那么可以使用mssql ce3.5作为实体框架4.1的存储吗?
sql-server microsoft-sync-framework ef4-code-only ef-code-first
我试图在SQL Server数据库上使用Microsoft Sync Framework 2.1.将有大量并发最终用户,与中央数据库服务器同步.
进一步的规格是:
有没有人有与此类似的Sync Framework环境的经验?
sql-server performance scalability sql-server-2008 microsoft-sync-framework
在我的项目中,我想将SQL Server Compact 3.5与MSSQL Server 2008同步.我通过了Visual Studio 2010中的所有步骤,如添加新项>>本地数据库缓存>>配置数据同步等.连接已成功编译.但是在这个阶段之后,我不知道我怎么能做同步.
我有一个名为"检查更新"的按钮.单击更新按钮时,必须启动同步,并且MSSQL Server中的新数据必须添加"data.sdf".我不知道该怎么做.我是C#科目的初学者.你可以帮帮我吗?
亲切的问候.
c# synchronization sql-server-2008 microsoft-sync-framework sql-server-ce-3.5
我有一种这样的场景:
场景http://i.msdn.microsoft.com/bb887608.Figure3(en-us).png
这里我需要将本地服务器数据库与主DB服务器同步(例如:办公室中的计算机是连接到办公室服务器,他们像本地服务器一样使用它,因此不需要同步.但是其他办公室的计算机也与本地服务器一起工作,我们需要通过主数据库服务器在办公室之间进行同步.我认为我不能在这里使用SQLCompact.是否有提供商直接从客户端进行服务器到服务器的同步?如果没有人可以提供如何管理这种情况的解决方案样本?
我们最近更新了 WPF 应用程序,以在针对 SQL Server 2008 数据库的单个事务中执行其数据同步(使用同步框架)。
几乎立即就以某种方式导致一行被锁定在表中,阻止所有其他用户同步。
问题是锁似乎没有解除,我们不确定如何解决这种情况。
任何反馈表示赞赏
我一直在研究一些同步框架演示和一件似乎不太明确的事情是你要做什么来添加一个表?因此,如果我从我的演示中的订单和订单详细信息开始,并且我想添加第三个表,那么步骤是什么?我尝试过一些东西,但它们似乎没有用.看来我还需要修改范围配置表中的实际范围xml.那是对的吗?
基本上,处理主/源架构更改的最佳做法是什么?您是否必须手动更新客户端,或者是否将对主/源所做的更改传播到客户端,例如初始同步?
任何信息,将不胜感激.
谢谢,
小号
抱歉这个漫长而迷茫的标题.
我有一个想要同步三个数据库的客户.(稍后可能会更多.)所有三个数据库中的所有数据必须同步到所有其他数据库.这根本不需要是实时的,但可能会在夜间或类似的情况下运行.
此数据库使用标识列作为主键/外键.
问题是给定记录可以独立地添加到两个(甚至更多)数据库中,但是是相同的数据.因此,例如,我可以在两个站点数据库中创建123 Main Street的客户名称John Smith.在这种情况下,我想要FirstName LastName和地址的前8个字符(或者可能是电话号码)来形成用于合并记录的"匹配键",而不是每次都添加新的记录.换句话说,在完成所有同步之后,我希望所有3个数据库只能在123 Main Street为John SMith创建一条记录.
顺便说一句,我想这样做的方式是在云中托管一个"主"数据库.所有三个数据库都将与此主数据库进行双向同步.
我的主要问题是你如何让它发挥作用?如何为数据库中的表定义"匹配键".是否像在匹配键上创建唯一约束一样简单?有没有办法在不更改数据库架构的情况下执行此操作?(我很想考虑这个,但我的数据库是第三方,可能会有变化.)
赛斯
我正在为我的一个客户开发一个同步数据库应用程序我已完成同步但现在我陷入了一个我不想同步完整表的部分我只是通过同步框架同步动态选择记录
使用sqlce在客户端
任何有助于提供帮助的良好环节也会更可取
我在服务器上同步下面的一些东西
public SyncContext GetChanges(SyncGroupMetadata groupMetadata, SyncSession syncSession)
{
return serverSyncProvider.GetChanges(groupMetadata, syncSession);
}
public SyncContext ApplyChanges(SyncGroupMetadata groupMetadata, DataSet dataSet, SyncSession syncSession)
{
return serverSyncProvider.ApplyChanges(groupMetadata, dataSet, syncSession);
}
Run Code Online (Sandbox Code Playgroud) 看看下面的代码
这是我的_cSynchronization类,其中Sync Function是precent,连接字符串中的(500)表示timeout = 500
public static class _cSynchronization
{
public static int transactionCount;
public static uint BatchSize = 10000;
public static uint MemorySize = 20000;
public static List<string> _MGetAllTableList()
{
List<string> list = new List<string>();
DataRowCollection _dr = _CObjectsofClasses._obj_CDatabase._MGetDataRows("Select TABLE_NAME From INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME <> N'AUTOBACKUPSET' AND TABLE_NAME <> N'BINDATA' AND TABLE_NAME <> N'_ATTENDANCESTATUS' AND TABLE_NAME NOT like '%_tracking%' AND TABLE_TYPE ='BASE TABLE' AND TABLE_NAME <> N'schema_info' AND TABLE_NAME <> N'scope_info' AND TABLE_NAME <> N'scope_config' AND TABLE_NAME <> '_CLIENTNAME' …Run Code Online (Sandbox Code Playgroud) 题
如何避免客户端/服务器数据库中的主键冲突
背景
我正在同步多个数据库.我有一个中央SQL Server数据库和许多客户端SQL Server数据库.现在说我在数据库中有一个具有主键ID的表X.
在第一个客户端中,我们在表X中有以下ID:
X(客户端1)
--------
1 | SomeValue
2 | SomeValue
3 | SomeValue
4 | SomeValue
在我的第二个客户
X(客户端2)
--------
1 | SomeValue
2 | SomeValue
3 | SomeValue
4 | SomeValue
当我同步时,我希望客户端只上传他们的数据而不是下载它们.
现在,当我将第一个客户端与服务器同步时,它将从(1 ... 4)添加主键.但是,当我与第二个客户端同步时,将有PRIMARY KEY CLASH.我怎么解决这个问题?
我正在使用SQL Server 2008 R2,Sync Framework和C#.
我已经考虑过将GUID用作主键的想法,这在我的情况下是不可行的,因为我正在处理遗留数据库.此外,重新设置IDENTITY值的想法有点容易出错.如何在不插入值的情况下增加标识列?PS:主键设置为IDENTITY,增量为1.
c# ×7
sql-server ×6
sql ×2
sync ×2
.net ×1
database ×1
distributed ×1
guid ×1
performance ×1
primary-key ×1
rda ×1
scalability ×1
uuid ×1
web-services ×1