C# 如何在两个不同的SQL Server中防止重复UniqID

C# 如何在两个不同的SQL Server中防止重复UniqID,c#,asp.net,sql-server,database,database-design,C#,Asp.net,Sql Server,Database,Database Design,我正在为我的大学开发一个社交网站。它使用一个SQL Server数据库,每个用户都有一个UniqID,它是一个整数,以标识增量递增,从1开始到 我的问题是,如果我想在另一所大学运行这个网站,在他们自己的服务器上,UniqIDs将从1开始到,因此,这将导致重复的UniqIDs,并且不可能连接这两个大学网站,学生也无法与其他大学生建立连接 我不知道如何解决这个问题?我应该使用分布式数据库吗 请给我一个开始的想法 谢谢您可以使用UNIQUE-IDENTIFIERGUID作为ID。他们这样说是为了保证它

我正在为我的大学开发一个社交网站。它使用一个SQL Server数据库,每个用户都有一个UniqID,它是一个整数,以标识增量递增,从1开始到

我的问题是,如果我想在另一所大学运行这个网站,在他们自己的服务器上,UniqIDs将从1开始到,因此,这将导致重复的UniqIDs,并且不可能连接这两个大学网站,学生也无法与其他大学生建立连接

我不知道如何解决这个问题?我应该使用分布式数据库吗

请给我一个开始的想法


谢谢

您可以使用UNIQUE-IDENTIFIERGUID作为ID。他们这样说是为了保证它的唯一性


不要让DB分配ID,而是生成您自己的ID,可能使用一个位置唯一的前缀,例如,一所大学的学生是UNI1_1、UNI1_2等。而另一所大学的用户是UNI2_1、UNI2_2。

以及有不同数据的不同DB,您不能简单地检查您从哪个DB获取数据吗?
如果您需要在DB端完成所有操作,那么不要只依赖于每个用户的ID,使用像ID 42这样的位置,LocationCode UHJ这样,BOB和JOE的ID是否相同并不重要,因为您知道从哪个位置可以看出不一样

我不确定是否理解这一点,但是,当您在不同的位置使用不同的数据库时,数据本身将不同,确保模式布局相同,但数据不同,用户不同等。ID应该只与该数据库中的每个用户相关,在另一个数据库中,它可能完全不同,但情况并非如此,因为该用户不存在于DB1中,而仅存在于DB2中。如果事实上数据是相同的,那么是的,您需要模仿数据等,或者只使用那里的DB。请纠正我,因为我不确定您的问题是什么。是否可以将UniqueID列的数据类型更改为varchar?如果是这样,您可以附加伯克利大学的大学首字母say:带上伯克和IDinteger编号。这样,学生ID将具有类似于Berk123、Berk124的值,所以即使您组合起来,它也是唯一的。@StevenSmith yes数据是不同的,我希望在使用多个数据库的网站上有,每个数据库都与一所大学相关!因此,在db 1中使用uniqID为1000的user1和在db 2中使用uniqID为1000的user1将导致问题!为每个大学网站提供一个SiteID,并将SiteID和UniqID的组合作为主要识别键。@marc_的好主意,谢谢这是一个GUID,而不是int。使用GUID作为键存在许多性能问题,而且它们看起来真的很难看,就像社交网络ID一样根据您共享的链接,使用NEWID函数填充StudentID的唯一标识符值。在任何实例中都有可能获得相同的NEWID值。因此,使用NEWID并不是为任何列生成唯一值的最佳方法。尽管您可能会检查所有代码端,而无需更改数据库。就像建议你可以使用GUID,但是我个人不喜欢这个想法,因为我觉得它不干净。