Tsql EXECUTE AS不默认为架构名称
在网上做了广泛的研究之后,我正在联系你们来解决这个问题。我的数据库采用基于模式的方法 i、 e,dbo.TableA schema1.TableA存在于同一数据库中 我正在使用模拟在模式之间切换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
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)一起使用的对象名称默认为存储过程的模式。”
另请参阅此建议(以“不会修复”结尾):谢谢,这绝对有用。谢谢,这绝对有用。