我正在将现有的MS Access后端升级到SQL Server 2008,因为我们想使用SQL Server Merge replication,所以我必须将所有当前主键(当前标准的自动增量整数)更改为GUID。
以下是问题:
答案 0 :(得分:3)
Chris说的是(1)您不需要GUIDS进行合并复制,(2)只有一种GUID类型,但您必须知道:
rowguid
。当然,如果每个表中已经有这样的GUID / newSequentialId,SQL将使用它。 BUt我不建议你将复制GUID与PK GUID'混合':你可以将GUID类型的所有主键声明为'newSequentialIds',但是(a)你将失去在客户端生成GUID值的可能性 - 见下文 - 和(b)你的PK将是“可预测的”,这个想法让我感到不舒服...... 关于从整数到GUIDS的更改,我建议您编写一个分步模块:
花点时间编写此代码。在正常工作之前,您将多次使用它。您应该从DAO对象,tabledef,索引等中获利。请注意,必须始终能够返回起点,所以不要忘记初始备份过程。
如何从VBA操纵GUID?有一些事情需要了解:
? myForm.myControl
?????
? myForm.recordset.fields("myFieldName")
{000581EB-9CBF-418C-A2D9-5A7141A686CC}
myFirstRecordset.FindFirst "stringFromGUID(myGuidId) = " & StringFromGUID(mySecondRecordset.Fields("myGuidId").Value)
答案 1 :(得分:1)
这可能稍微偏离主题。但是,您不必使用GUID进行合并复制。您仍然可以使用自动增量整数并将不同的范围分配给不同的数据库实例。这样就不会生成具有相同ID的行。
此外,SQL 2008中只有一个GUID类型字段 - uniqueidentifier