很抱歉标题为gore,我在生产环境和开发环境之间工作,并且不希望在开发环境中链接某些服务器。
对于任何从链接服务器中选择的sp,我可以很容易地添加:
if exists(select srvname from master.dbo.sysservers where srvname = @server)
begin
select from @server
end
但是当我尝试更新存储过程时,我收到错误:
无法在sys.servers中找到server @server。
这是否有一种优雅的方式,以便我可以保持两个环境的存储过程相同,而不只是在dev中评论选择?
答案 0 :(得分:1)
我喜欢为存在于DEV / PROD之间不同的数据库中的表设置同义词。示例:在DEV中我想使用表DatabaseDEV.dbo.UserAccount' and during PROD I want to use the table
DatabasePROD.dbo.UserAccount'。
我所做的是在DEV中设置这样的SYNONYM:
CREATE SYNONYM dbo.UserAccount FOR DatabaseDEV.dbo.UserAccount
在PROD中设置这样的SYNONYM:
CREATE SYNONYM dbo.UserAccount FOR DatabasePROD.dbo.UserAccount
然后在我的代码中,我引用了SELECT * FROM dbo.UserAccount
。当SPROC / VIEW从DEV移动时 - > PROD它从一个数据库更改为另一个数据库。如果您有链接服务器,这也可以。