Question

J'utilise SQL Server 2005.

J'ai une base de données de dev et prod qui ont essentiellement les mêmes données en eux. Quand je fais comparer avec Redgate données SQL Comparez les 5, il est dit que seulement 4 dossiers différents. Cependant, quand j'ouvre les tables et les afficher, ils sont dans un ordre de tri complètement différent. Ni table a un index ou quoi que ce soit forcer l'ordre de tri, et je suis en train de vous assurer que mon dev est triée dans le même ordre que prod. Mais Redgate ne me dira pas quand je suis proche, car il est apparemment de trouver des documents qui correspondent, même si elles ne sont pas dans le même ordre de tri. Comment puis-je passer outre cela?

Je voudrais utiliser l'outil pour savoir quand j'ai compris l'ordre de tri, pour vous assurer que je l'ai droit.

Était-ce utile?

La solution

A la différence ordre de tri signifie simplement que les lignes sont placées dans les fichiers de données d'une manière physiquement différente, mais les données correspondent toujours exactement, si DC rapporte encore qu'ils correspondent. Il n'y a pas possibilité de le faire à « respecter l'ordre du disque physique » (qui est essentiellement ce que vous demandez), parce que même si elle a remarqué une différence, il n'y a aucun moyen de synchroniser la différence, comme SQL Server n'a pas de méthode pour contrôler de modifier l'ordre du disque.

L'ordre que les données est tirée à partir du disque lorsque vous interrogez une table ne devrait jamais être invoqué - si vous avez besoin d'un certain ordre, vous devez inclure une « ORDER BY » clause dans votre requête pour forcer un ordre de tri . S'il y a une raison que vous ne pouvez pas utiliser ORDER BY, votre seule autre option pour forcer un ordre de tri est l'ajout d'un index ordonné en clusters sur le terrain par lequel vous souhaitez trier le tableau.

Si vous avez vraiment besoin de réorganiser les données, alors vous aurez besoin de tronquer la table qui est « mauvais » et le remplir avec un « INSERT INTO [mauvaise table de commande] SELECT * FROM [une bonne table de commande] ». Même alors, alors qu'il devrait avoir l'effet désiré, il n'y a aucune garantie.

Je recommande l'ordre par l'article comme votre meilleure option. S'il y a une raison aucune de ces options ne fonctionnera, laissez-moi savoir et je peux essayer de proposer quelque chose d'autre.

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