Question

Je viens à travers quelque chose d'inquiétant, je tentais de mettre en œuvre la réplication transactionnelle à partir d'une base de données dont la conception est pas sous notre contrôle. Cette réplication est afin d'effectuer des rapports sans imposer trop le système. À essayer la réplication seulement quelques-uns des tableaux ont traversé.

Sur les tables d'enquête n'ont pas été sélectionnés pour être reproduits parce qu'ils ne sont pas une clé primaire, je pensais que ce ne peut pas être il est même présenté comme une clé primaire si j'utilise ODBC et MS Access, mais pas en studio de gestion. De plus, les requêtes ne sont pas ridiculement lent.

J'ai essayé d'insérer un enregistrement en double et il a échoué en disant au sujet d'un index unique (pas une clé primaire). Semble être les tables ont été mises en œuvre en utilisant un indice unique s'opposer à une clé primaire. Pourquoi je ne sais pas que je pourrais crier.

Y at-il de toute façon d'effectuer la réplication transactionnelle ou une alternative, il doit être en direct (dernière minute ou deux). Le serveur principal db est actuellement SQL 2000 SP3a et le serveur de rapports 2005.

La seule chose que j'ai actuellement pensé à essayer est le réglage de la réplication comme si elle est un autre type de base de données. Je crois que la réplication de dire oracle est possible cette force serait l'utilisation de dire un pilote ODBC comme je suppose que l'accès utilise donc une clé montrant primaire. Je ne sais pas si cela est exact de ma profondeur à ce sujet.

Était-ce utile?

La solution

, il est impossible de créer une transaction la réplication sur les tables sans clé primaire. Vous pouvez utiliser réplication de fusion (une manière), qui ne nécessite pas une clé primaire, et il crée automatiquement une colonne de rowguid si elle n'existe pas:

  

réplication de fusion utilise une échelle mondiale   colonne d'identifiant unique (GUID) à   identifier chaque rangée lors de la fusion   processus de réplication. Si une publication   table n'a pas uniqueidentifier   colonne avec la propriété ROWGUIDCOL   et un index unique, la réplication ajoute   un. Assurez-vous que tout SELECT et INSERT   déclarations référence publiées   tables utilisent des listes de colonnes. Si une table est   pas publié plus et la réplication   ajoute la colonne, la colonne est   retiré; si la colonne déjà   existe, il n'est pas supprimé.

Malheureusement, vous aurez une pénalité de performance si vous utilisez la réplication de fusion.

Si vous avez besoin d'utiliser la réplication pour rapports seulement, et vous n'avez pas besoin que les données soient exactement les mêmes que sur l'éditeur, alors vous pourriez envisager réplication de capture instantanée aussi

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top