【发布时间】:2018-02-20 17:41:43
【问题描述】:
我对使用 hibernate 作为提供程序和 SQLServer 作为数据库来实现多租户解决方案很感兴趣。 我正在使用基于模式的方法,这意味着一个数据库和不同的模式。
具体来说,我的问题是如何使用 SQLServer 更改执行模式。我在 MySQL use $database 中使用了这种方法,
PostgreSQL SET search_path TO $schema 和 Oracle ALTER SESSION SET CURRENT_SCHEMA = $schema 我能够成功地从一种模式切换到另一种模式,并注意到模式概念因数据库而异。
但是,对于 SQLServer,我知道不存在更改执行架构这样的事情。我知道在未授予用户 sysadmin 角色的情况下切换给定用户的默认模式的可能性。我也知道使用以下查询的模拟概念:EXECUTE AS USER = $user。模拟允许一个用户模拟另一个用户,这提供了更改当前用户的可能性。
切换当前用户允许根据定义切换执行架构,因为一旦更改用户,执行架构就是新用户的默认架构。但是,模拟有一个限制,因为我们不能执行超过 32 次的模拟。虽然可以在每次模拟后执行revert 以避免达到限制模拟次数,但这种解决方案不适合我的情况,我'我正在寻找替代方案。
是否有人对使用 SQLServer 和基于模式的方法实现多租户有任何建议?
除了我提到的切换执行模式之外,还有其他解决方案吗?
非常感谢您的帮助。非常感谢。
【问题讨论】:
-
嗨..有什么解决办法吗?
标签: sql-server hibernate jpa database-schema multi-tenant