在MSSQL中动态切换数据库吗?

时间:2016-12-08 16:45:48

标签: java sql sql-server schema

我有一个场景,我们为每个用户提供不同的数据库

  eg:  user1 = userDB1 (database name)
       user2 = userDB2 (database name)

       ..
       userN = userDBN  

在我的代码中,我有一个类似的查询。

 select * from user1.product;
 select * from user2.product;

所以我必须得出&在触发此查询之前更改数据库名称。

我想知道我是否可以在MS-SQL服务器端进行一些更改,我必须正确查询

select * from user.product;

以便在开始交易之前用户将被user1或user2替换。是否有任何机制可用的数据库端,我可以用来在触发查询之前切换数据库名称。

由于有许多复杂的查询,我已经去改变每一个很痛苦的查询。

注意 - 所有这些数据库都在同一个SQL服务器上。

先谢谢你!!

2 个答案:

答案 0 :(得分:0)

您可以使用以下命令动态地为每个查询添加前缀:

USE userDB1; SELECT ...

答案 1 :(得分:0)

你确定你在谈论数据库,而不是模式吗?

select * from user1.product; -- user1 is scheme
select * from user1..product; --user1 is database

如果是模式,您可以:

  1. 为每个用户创建架构
  2. 为数据库用户设置默认架构(NOT服务器登录)。在您的情况下,所有用户都应该有所不同。
  3. 执行查询时

    从产品中选择*;

  4. 表'product'将来自默认架构。

    如果是数据库,您应该尝试更改每个用户的连接字符串