2016-09-27 17 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

相关问题