Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 同步时不复制ID的数据库复制_C#_Sql Server_Database_Database Design_Architecture - Fatal编程技术网

C# 同步时不复制ID的数据库复制

C# 同步时不复制ID的数据库复制,c#,sql-server,database,database-design,architecture,C#,Sql Server,Database,Database Design,Architecture,我需要将我的数据库复制到世界各地的多个位置。我已经成功地测试了SQL Server复制,但是我需要复制的数据库有一个表,该表为所有其他表提供唯一的ID 问题的例子 我有一个西班牙位置(从位置)和一个美国位置(主位置),这两个位置都是完全相同的数据库模式,其中包括为所有其他表生成唯一ID的表。当Span中的记录创建时,它有一个唯一的id,例如123,那么,当同步尝试发生时,id 123已经在我的美国位置创建,最新的唯一id是311 因此,我的问题是,需要如何配置SQL Server复制以支持这种模

我需要将我的数据库复制到世界各地的多个位置。我已经成功地测试了SQL Server复制,但是我需要复制的数据库有一个表,该表为所有其他表提供唯一的ID

问题的例子 我有一个西班牙位置(从位置)和一个美国位置(主位置),这两个位置都是完全相同的数据库模式,其中包括为所有其他表生成唯一ID的表。当Span中的记录创建时,它有一个唯一的id,例如123,那么,当同步尝试发生时,id 123已经在我的美国位置创建,最新的唯一id是311


因此,我的问题是,需要如何配置SQL Server复制以支持这种模式?

在复制场景中,这样的ID总是会让您非常头疼,如果可能的话,我强烈建议将所有相关ID切换为UniqueIdentifier类型使用复合密钥。一个属性是id,另一个属性标识产生该id的节点。因此,该组合是唯一的。我在误读问题时删除了我的答案。如果您担心像这样的唯一键冲突,那么也许您可以从每个实例生成特定范围的值(对我来说感觉像是黑客攻击)。另一个选项是使用时间戳或唯一标识符作为ROWGUIDCOL,以确保跨实例的唯一性。在这种情况下,与我前面提到的事务性复制相比,使用合并复制最适合您。@MichaelSander将所有相关ID切换为uniqueidentifier类型将不起作用,因为“商业政治”“过去20年来,ID就是这样做的,它被证明是有效的”根据我之前的评论,复合键可能是解决方案。