我有兴趣使用Hibernate作为提供程序和SQLServer作为数据库来实现多租户解决方案。我使用基于模式的方法,意味着一个数据库和不同的模式。
具体而言,我的问题是如何使用SQLServer更改执行模式。我已经在MySQL使用了这种方法
然而,在SQLServer上,我了解到没有更改执行模式的东西。如果用户未被授予sysadmin角色,则可以更改给定用户的默认模式。我还了解了模拟概念,使用以下查询:
更改当前用户允许根据定义切换执行模式,因为一旦更改了用户,执行模式就是新用户的默认模式。但是,模拟有一个限制,因为我们不能超过32次进行模拟。虽然可以在每次模拟后执行
有人对使用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和基于模式的方法实现多租户有任何建议吗?
此外,除了我提到的解决方案之外,还有其他解决方案可以切换执行模式吗?
非常感谢您的帮助。非常感谢。