2016-09-27 77 views
0

我處於從專有數據庫中讀取的情況,我沒有辦法改變我的需要。輝煌的架構師有一個可怕的標準化數據庫,當他們在Dev中設置服務器時,他們並不認爲Dev和Prod之間的主鍵(整數標識值)相匹配。在Prod和Dev之間同步硬編碼值

在這種情況下,我們必須編寫查詢,我們正在使用硬編碼值 - 例如where productid = 1234512345在開發中並不總是與生產相同的產品。這意味着維護2套sql代碼。而且他們潛在的錯誤風險很高(不會部署正確的腳本)。我更喜歡Dev中的測試標準,並將相同的代碼部署到Production中。這將風險降至最低。

注:我簡化了這個例子的目的,但它的架構和我們需要做查詢的方式需要硬編碼。 (抱歉我的blashpemy)。

有人說,你可以用SQL Server令牌替換來做到這一點,但我似乎無法在網上找到太多。顯然,您可以將您需要的值(productid)設置爲sql文件,並將其部署到服務器,用正確的硬編碼值替換tokens

我只是在尋找一些入門指導。

+1

只需創建一個表中的字段和值,你在你的數據庫需要。將相應的環境ID插入此表中。編寫你的查詢,從這個表中拉取值。 – techspider

回答

1

可以解決這個問題有一個參數表:

Parameter Value 
ProductId 12345 

和一個函數來獲取參數:

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

謝謝......有趣的是,我將不得不考慮一下 – logixologist

+1

這可能是最少投資的最佳解決方案。我面臨的是類似的東西,但它們是指導性密鑰而不是身份標識...所以我咬緊牙關,實際上編寫了一個腳本,它可以執行所有必要的更新,以使數據庫中的密鑰保持一致。這是一次很大的一次性支出,消除了未來的問題。但這樣做並不總是可行的。這是一個非常特殊的情況。 – pmbAustin