Как заставить RedGate Data Compare учитывать порядок сортировки?

StackOverflow https://stackoverflow.com/questions/859626

Вопрос

Я использую SQL-Server 2005.

У меня есть база данных разработчиков и продуктов, в которой по существу содержатся одни и те же данные.Когда я сравниваю с RedGate SQL Data Compare 5, он говорит, что различаются только 4 записи.Однако когда я открываю таблицы и просматриваю их, они находятся в совершенно другом порядке сортировки.Ни в одной таблице нет индекса или чего-либо, определяющего порядок сортировки, и я пытаюсь убедиться, что моя разработка отсортирована в том же порядке, что и продукция.Но RedGate не сообщит мне, когда я буду рядом, потому что, очевидно, он находит совпадающие записи, даже если они не находятся в одинаковом порядке сортировки.Как мне это переопределить?

Я хотел бы использовать этот инструмент, чтобы сообщать, когда я определил порядок сортировки, чтобы убедиться, что он правильный.

Это было полезно?

Решение

Различный порядок сортировки просто означает, что строки размещаются в файлах данных физически по-разному, но данные по-прежнему точно совпадают, поэтому DC по-прежнему сообщает, что они совпадают.Нет возможности заставить его «Соблюдать порядок физических дисков» (по сути, это то, о чем вы спрашиваете), потому что даже если он заметил разницу, нет способа синхронизировать эту разницу, поскольку SQL Server не имеет метода управления изменениями. порядок дисков.

Никогда не следует полагаться на порядок извлечения данных с диска при запросе к таблице — если вам требуется определенный порядок, вы должны включить в свой запрос предложение «ORDER BY», чтобы принудительно установить определенный порядок сортировки.Если по какой-то причине вы не можете использовать ORDER BY, единственным вариантом принудительного соблюдения определенного порядка сортировки является добавление кластеризованного индекса в поле, по которому вы хотите отсортировать таблицу.

Если вам действительно нужно изменить порядок данных, вам придется обрезать «неправильную» таблицу и заполнить ее строкой «INSERT INTO [таблица неправильного порядка] SELECT * FROM [таблица правильного порядка]».Даже в этом случае, хотя это должно принести желаемый эффект, нет никакой гарантии.

Я бы рекомендовал порядок по пунктам как лучший вариант.Если по какой-то причине ни один из этих вариантов не сработает, дайте мне знать, и я попробую предложить что-то другое.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top