【发布时间】:2019-07-03 22:05:58
【问题描述】:
我的生产和开发(以及 QA)数据库都有不同的名称。应用程序使用视图来引用其他数据库中的表。我不想在每个(开发,质量保证,生产)的源代码控制中使用单独的脚本,我想创建一个“主”脚本(视图或函数?),它将在所有脚本上运行,但会根据位置(当前数据库)它是从中运行的。
类似:
CASE db_name()
WHEN 'dev' THEN (SELECT a,b... FROM DEVSERVER.DEVOTHERDB.dbo.mytable)
WHEN 'prod' THEN (SELECT a,b... FROM PRODSERVER.PRODOTHERDB.dbo.mytable)
...
有什么想法吗?
【问题讨论】:
-
数据库同义词有时会在这种情况下有所帮助——或者使问题变得更糟。在 Azure SQL 世界中 - 跨数据库或切换数据库/目录实际上不起作用。
-
"应用程序使用视图来引用其他数据库中的表" 您真的需要将生产数据库与开发数据库链接吗?这听起来不对。您应该使用相同的视图并连接到不同的数据库。
-
@EzLo 我试图避免为单独的数据库使用单独的脚本。由于 servername.databasename 组合,每种情况下的 SQL 都不同。
标签: sql-server