Проблемы с сопоставлением SQL при развертывании в прямом эфире - PullRequest
0 голосов
/ 05 мая 2009

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

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

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

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

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 05 мая 2009

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

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

0 голосов
/ 05 мая 2009

Есть несколько решений

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

     INSERT INTO dest_db..DEST_TABLE ( DEST_VARCHAR_COLUMN )
     SELECT TMP_VARCHAR_COLUMN COLLATE <dest_db_collate>
     FROM tmp_db..#TEMP_TABLE
    
0 голосов
/ 05 мая 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...