2016-09-27 2 views
0

Я нахожусь в ситуации, когда я читаю из запатентованной базы данных, что у меня нет возможности меняться для моих нужд. У блестящих архитекторов есть ужасно нормализованная база данных, и когда они настраивают сервер в Dev, они не думали сопоставлять первичные ключи (целочисленные значения идентичности) между Dev и Prod.Синхронизация жестко закодированных значений между Prod и Dev

В этой ситуации нам пришлось написать запросы, в которых мы используем жестко заданные значения - пример where productid = 12345. 12345 не всегда является одним и тем же продуктом в Dev as Production. Это означает сохранение двух наборов кода sql. И их риск для потенциальных ошибок (не развертывание правильных скриптов). Я предпочитаю стандарт тестирования в Dev и развертывание того же кода для Production. Это минимизирует риск.

Примечание: Я упрощаю это для целей этого примера, но так, как он был сконструирован, и способ, которым нам нужен запрос, требует жесткого кодирования. (извините за мой blashpemy).

Кто-то сказал, что вы можете сделать это с заменой токена SQL Server, но я не могу найти слишком много на нем, в Интернете. По-видимому, вы можете установить нужные значения (productid) в файле sql и развернуть его на сервере, заменив ваш tokens на правильные жестко закодированные значения.

Я просто ищу руководство, чтобы начать с этого.

+1

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

ответ

1

Вы можете обойти эту проблему с помощью параметра таблицы:

Parameter Value 
ProductId 12345 

и функцию, чтобы получить параметр:

WHERE productid = (SELECT Parameter('ProductId')) 
+0

спасибо ... интересно, мне нужно будет изучить это – logixologist

+1

Это, вероятно, лучшее решение для наименьших инвестиций. Я столкнулся с чем-то похожим, но они были ключевыми ключами, а не идентификаторами ... поэтому я укусил пулю и на самом деле написал сценарий, который будет делать все обновления, необходимые для того, чтобы ключи были одинаковыми для баз данных. Это был большой разовый расход, который устранил проблему в будущем. Но это не всегда возможно. И это был особый случай, когда он был. – pmbAustin