SQL Server - есть ли способ массового разрешения конфликтов сопоставления - PullRequest
3 голосов
/ 02 июля 2010

У нас есть ситуация, когда параметры сортировки баз данных, таблиц и некоторых столбцов различаются между нашими разработчиками и производственными SQL-серверами, и это наносит ущерб развитию. При продвижении все будет работать на dev, а затем разрушаться из-за конфликтов сопоставления, данные и структуры будут копироваться из prod в dev, что, в свою очередь, разбивает запросы на dev из-за конфликтов и т. Д. Мы будем обходить это путем явного определения Опция COLLATION в запросе иногда или настройка сопоставления каждого столбца в таблице-нарушителе для обхода этого. Первый, похоже, имеет удар по производительности, а второй - PITA.

Существует ли какой-либо сценарий или что-либо, что может показать расхождения в сопоставлении или информацию о базе данных и объектах, или какие-либо предложения о способах автоматического согласования различий, чтобы мы могли синхронизировать вещи?

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

Спасибо за любые идеи!

Ответы [ 3 ]

4 голосов
/ 02 июля 2010

Как правило, используйте «COLLATE DATABASE_DEFAULT» для временной таблицы, табличных переменных и т. Д.

Конфликты сортировки, как правило, случаются, когда у вас конфликты между сервером и базой данных, в данном случае это tempdb.

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

Если у вас есть смешивание и сопоставление между серверами, базами данных и столбцами, то волшебной палочки нет. Вы можете начать с поиска всех предложений COLLATE в коде (см. Выше), а затем убедиться, что во всех столбцах убраны параметры сортировки ....

0 голосов
/ 02 июля 2010

Я имел большой успех, используя этот инструмент http://www.codeproject.com/KB/database/ChangeCollation.aspx

0 голосов
/ 02 июля 2010

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

Первый шаг - это оперативное решение, что вы будете делать.делать, а не техническое решение.После того, как вы это сделаете, вам нужно будет прикусить маркер и просмотреть все ваши таблицы, хранимые процедуры и т. Д. И синхронизировать их все на ВСЕХ ваших серверах и в любом исходном коде, который у вас есть.в вашей системе контроля версий.В идеале ваши запросы будут работать, не обращаясь к каким-либо параметрам сортировки и не преобразуя их в работу.

Чтобы помочь вам найти все проблемы с сопоставлением, вы можете начать смотреть на это во всех своих базах данных:*

SELECT * FROM INFORMATION_SCHEMA.COLUMNS
...