ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я знаю, что этот вопрос задавался сто раз раньше, но я просто хотел проверить, что не было более простого решения, которое я мог бы упустить, прежде чем я пошел вперед и написал / поставил много кода для этого.
Наше программное обеспечение использует базу данных, которая изначально была разработана для SQL Server 7, и поэтому все сценарии, которые ее создают, не определяют явное сопоставление для каких-либо символьных столбцов. Вместо этого, когда база данных создается / восстанавливается в SQL Server 2000 или более поздней версии, каждый столбец наследует параметры сортировки базы данных (что происходит, SQL_Latin1_General_CP1_CI_AS
поскольку это было по умолчанию в SQL Server 7).
Теоретически, это не будет иметь большого значения, поскольку, если наша база данных создается с нуля на сервере клиента, она наследует параметры сортировки сервера клиента (что обычно является современной установкой по умолчанию Latin1_General_CP1_CI_AS
), и все просто работает. Однако этот сценарий нарушается, когда они отправляют нам резервную копию базы данных, или мы отправляем им резервную копию базы данных, и либо мы, либо они получают ошибку несоответствия параметров сортировки всякий раз, когда код пытается получить доступ к временным таблицам и т. Д.
Мы пытались научить клиентов устанавливать или перестраивать свои экземпляры SQL Server для использования нашего предпочтительного сопоставления, но, конечно, это не всегда происходит, и это не всегда возможно.
Решения, которые включают в себя создание новой базы данных и копирование данных, для нас не очень практичны, нам нужна «волшебная палочка», которую мы можем махнуть действующей базе данных, чтобы исправить все столбцы на месте, не нарушая данных. Я думаю о написании утилиты для этого, но, поскольку это будет довольно большая работа, есть ли у кого-нибудь более простые предложения?