Как заставить RedGate Data Compare учитывать порядок сортировки? - PullRequest
1 голос
/ 13 мая 2009

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

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

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

1 Ответ

1 голос
/ 17 июня 2009

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

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

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

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

...