当前位置: 首页 > 面试题库 >

在不同环境中使用不同数据库名称的跨数据库查询?

翟嘉志
2023-03-14
问题内容

您将如何在不同的环境中处理跨数据库查询。例如,db1-development和db2-development,db1-production和db2-production。

如果要在从db2到db1的开发中进行跨数据库查询,则可以使用完全限定的名称,即[db1-development]。[schema]。[table]。但是,如何在不同环境之间维护查询和存储过程?[db1-development]。[schema]。[table]在生产中将不起作用,因为数据库名称不同。

我可以将搜索和替换视为一种可能的解决方案,但我希望有一种更优雅的方法来解决此问题。如果有特定于数据库的解决方案,那么我正在使用SQL Server
2005。


问题答案:

为什么dev和prod之间的数据库名称不同?显然,如果它们相同,那将是最容易的。

如果它是一个共享的表,则可以在其上创建一个视图-仅需要在移至生产时更改该视图。

否则,您将要为对象创建一个SYNONYM,并确保始终引用该对象。您仍然需要更改SYNONYM创建脚本,但是我认为可以很容易地在构建脚本中完成。



 类似资料:
  • 问题内容: 例如,mysql引用表名使用 注意` 其他数据库是否曾经使用过不同的char来引用其表名 问题答案: 引号的这种使用称为定界标识符。这是SQL的重要组成部分,因为否则您将不能使用以下标识符(例如表名和列名): 包含空格:“我的桌子” 包括特殊字符和标点符号:“我的表格” 包括国际字符:“私のテーブル” 区分大小写:“ MyTable” 匹配SQL关键字:“表” 标准SQL语言对定界标识

  • 我的问题如下,我有一个Spring Boot应用程序,我使用Jooq for sql,我设置我的pom来生成表。数据库信息设置在环境变量中。它在Intellij内部运行良好,但当我生成。WAR并在客户端上上传应用程序只有当客户端库名与创建jooq代码时我pom.xml中的名称相同时,才有效。表完全一样,唯一可以改变的是库名,所以我在环境变量中查找名称信息。我的变量都设置在属性中,在调试中,我可以看

  • 我使用DBCP池,我想使用testOnBrow和testOnBack来测试连接是否仍然有效。 不幸的是,我必须设置属性validationQuery才能使其工作。 问题:validationQuery中应该有什么值? 我知道:validationQuery必须是一个SQL SELECT语句,它至少返回一行。 问题是我们使用各种数据库(DB2、Oracle、hsqldb)。

  • 我有一组Junit测试用例。所有测试用例都必须针对不同的数据库环境执行。在junit测试中使用“@RunWith(SpringJUnit4ClassRunner.class)”时,Spring Boot应用程序只启动一次。但我需要用不同的配置重新启动应用程序,包括flyway迁移和其他与环境相关的应用程序-

  • 有没有可能在MySQL中做这样的事情: 选择*,CONCAT(schema_name,'.','my_table')作为database_name,from table_a a inner join table_b b on b.id=a.id inner join database_name c on a.id2=c.id; 基本上,database_name的值取自现有查询,并且将在同一查询中

  • 问题内容: 我有一个Node.js / Express应用程序,该应用程序查询路由内的MySQL数据库,并将结果显示给用户。我的问题是如何在将用户重定向到他们请求的页面之前运行查询并阻止直到两个查询都完成? 在我的示例中,我有2个查询需要在呈现页面之前完成。如果将查询2嵌套在查询1的“结果”回调中,则可以使查询同步运行。但是,当查询数量增加时,这将变得非常复杂。 如何在不将后续查询嵌套在先前查询的