2009-05-05 2 views
0

История: У меня было развертывание на другой день, в котором участвовал скрипт, который создает хранимую процедуру. Однако при запуске скрипта произошла ошибка в сортировке базы данных.Проблемы с сортировкой Sql при развертывании в реальном времени

Проблема: С помощью нашего друга Google мне удалось выяснить, что проблема, с которой я столкнулась, заключалась в том, что в нашей базе данных live db есть одна сортировка, а временная сортировка DB отличается, и я получаю при попытке вставить в таблицу переменных.

Вопрос: Каков наилучший путь вперед или мои варианты?

Окружающая среда: SQL Server 2000

Спасибо заранее.

ответ

0

Мы столкнулись с этим с временными базами данных, которые мы используем для тестов интеграции, в отношении баз данных разработки и производства. Мы сделали так, чтобы все базы данных использовали одну и ту же сортировку. В вашем случае вы, вероятно, сможете выполнить простой поиск/замену в файле сценария и просто изменить сопоставление с тем, которое используется в целевой базе данных.

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

-1

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

Если вы не можете, например, если у вас несколько баз данных производства с разными сортировками, вы можете убедиться, что ваши обновления либо не сработали, либо преуспели в целом. Поместите транзакцию вокруг всех обновлений хранимой процедуры и убедитесь, что вы используете alter, а не drop/create.

0

Есть некоторые решения

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

    INSERT INTO dest_db..DEST_TABLE (DEST_VARCHAR_COLUMN) 
    SELECT TMP_VARCHAR_COLUMN COLLATE <dest_db_collate> 
    FROM tmp_db..#TEMP_TABLE 
    
+0

Вы правы, мы не хотим такую ​​же боль! Спасибо за помощь – 2009-05-05 08:46:42