【发布时间】:2013-07-23 20:44:11
【问题描述】:
我有一些这样的 SQL 查询
select user_id from
table_user where lower(email_address)=? and password=?
最近更新了应用程序的架构,但我真的不想更新应用程序中的每个 SQL 查询。有没有办法从JBOSS连接端指定当前的Schema?
旧连接:jdbc:sqlserver://myserver:1433;DatabaseName=db
试过了:jdbc:sqlserver://myserver:1433;DatabaseName=db;currentSchema=abc
我尝试使用currentSchema,但这并没有帮助,当我运行查询时我得到一个缺少对象的异常(因为我假设这些在 dbo 下查找)。有什么办法可以更新查询,因为我知道所有查询都将在架构 abc 上运行?
【问题讨论】:
-
您应该创建两个数据源并根据场景使用所需的数据源。在 SQL 查询执行时更改连接信息不是标准/推荐的做法。
-
@Phani 我真的只需要 1 个数据源,因为此应用程序将始终使用该模式。但是,根据驱动程序属性,似乎没有办法通过连接字符串指定架构。
-
如果是这种情况,那么 DBA 将配置用户并关联到架构,当您使用这些凭据时,它将引用正确的架构。这是标准/推荐的方法,因为它没有在 SQL 中硬编码模式名称是有意义的。
-
@Phani 我对此进行了更多研究,这似乎是一个可行的选择。 blog.sqlauthority.com/2009/09/07/…。愿意将其添加为其他人的答案吗?
标签: java sql-server jdbc jboss7.x