Je migre un backend MS Access existant vers SQL Server 2008 et, parce que nous voulons utiliser la réplication SQL Server Merge , je vais devoir changer toutes les keys primaires actuelles (actuellement des entiers auto-incrémentés standard) en GUID.
Alors voici les questions:
Chris a raison de dire que (1) vous n'avez pas besoin de GUIDS pour la réplication de fusion et (2) il n'y a qu'un seul type de GUID, mais vous devez savoir que:
rowguid
. Bien sûr, si vous avez déjà un GUID / newSequentialId dans chaque table, SQL l'utilisera. BUt Je ne vous conseille pas de 'mélanger' les GUID de réplication avec les GUID PK: vous pouvez déclarer toutes vos keys primaires du type GUID comme 'newSequentialIds', mais (a) vous perdriez alors la possibilité de générer des valeurs GUID du côté client – voir infra – et (b) vos PK seront alors 'prévisibles', et cette idée me met mal à l'aise … Concernant le passage des entiers au GUIDS, je vous conseille d'écrire un module étape par étape qui va:
Prenez votre time pour écrire ce code. Vous l'utiliserez plusieurs fois avant de l'utiliser correctement. Vous devriez tirer profit de l'object DAO, tabledefs, index, et ainsi de suite. Gardez à l'esprit que vous devez toujours pouvoir revenir au sharepoint départ, alors n'oubliez pas le process de sauvegarde initial.
Qu'en est-il de la manipulation des GUID de VBA? Il y a quelques choses à savoir à ce sujet:
? myForm.myControl ????? ? myForm.recordset.fields("myFieldName") {000581EB-9CBF-418C-A2D9-5A7141A686CC}
myFirstRecordset.FindFirst "ssortingngFromGUID(myGuidId) = " & SsortingngFromGUID(mySecondRecordset.Fields("myGuidId").Value)
Cela peut être légèrement hors sujet. Toutefois, vous n'avez pas besoin d'utiliser les GUID pour merge la réplication. Vous pouvez toujours utiliser vos entiers auto-incrémentés et allouer différentes plages à différentes instances de database. De cette façon, les lignes avec des ID identiques ne seront pas générées.
En outre, il existe un seul champ de type GUID dans SQL 2008 – uniqueidentifier