Tsql EXECUTE AS不默认为架构名称

Tsql EXECUTE AS不默认为架构名称,tsql,Tsql,在网上做了广泛的研究之后,我正在联系你们来解决这个问题。我的数据库采用基于模式的方法 i、 e,dbo.TableA schema1.TableA存在于同一数据库中 我正在使用模拟在模式之间切换 Create procedure spx_test (@username nvarchar(10) As Execute as Login = @username -- this user has it's default schema set to schema1 Select * from Ta

在网上做了广泛的研究之后,我正在联系你们来解决这个问题。我的数据库采用基于模式的方法

i、 e,dbo.TableA schema1.TableA存在于同一数据库中

我正在使用模拟在模式之间切换

Create procedure spx_test (@username nvarchar(10) 
As
Execute as Login = @username  -- this user has it's default schema set to schema1
Select * from TableA
上述SP始终默认为dbo,即从dbo.TableA获取结果。相反,如果我在SP之外作为SQL块运行,它的工作方式就像一个符咒。我不确定我在这里遗漏了什么

顺便说一下,我试过格兰特扮演(没用)。请注意,连接登录名与SP中使用的登录名不同

提前谢谢

更新

如果我将上面的SP转换为动态SQL,则它可以工作。请参见

该行为如中所述:“在存储过程中,与非模式限定语句(例如,SELECT或INSERT)一起使用的对象名称默认为存储过程的模式。”

另请参阅此建议(以“不会修复”结尾):

请参阅

该行为如中所述:“在存储过程中,与非模式限定语句(例如,SELECT或INSERT)一起使用的对象名称默认为存储过程的模式。”


另请参阅此建议(以“不会修复”结尾):

谢谢,这绝对有用。谢谢,这绝对有用。