我正在开发一些软件,该软件将在全国各地的多个实例中使用。像许多使用登录名的软件一样,我需要为每个用户提供唯一的ID。该软件的每个实例都需要完全独立地运行,但是最终合并一些数据库的可能性很高。在这种情况下,我希望每个用户的ID在所有服务器上都是唯一的。
如果服务器之间没有通信(它们仅服务于LAN),我认为也许可以从精确到毫秒的时间戳生成ID。由于用户池只有数千个而不是数百万个,因此与另一台服务器上的另一个用户在同一毫秒内创建一个用户的几率很低。
真的有任何方法可以确保所有服务器之间唯一的ID,而无需它们之间的通信吗?
使用16字节的uniqueidentifier数据类型
一个例子是
SELECT NEWID() GO -- This will return a new random uniqueidentifier e.g. E75B92A3-3299-4407-A913-C5CA196B3CAB
在变量中选择此Guid
--assign uniqueidentifier in a variable DECLARE @EmployeeID uniqueidentifier SET @EmployeeID = NEWID() You can directly use this with INSERT statement to insert new row in table.
-在员工表中插入数据。
INSERT INTO Employees (EmployeeID, Name, Phone) VALUES (NEWID(), 'John Kris', '99-99999')
示例来自这里,如果您需要更多信息