0
的权限
是否可以授予用户访问视图但限制用户访问视图选择的表的权限?SQL Server:查看表
CREATE TABLE [dbo].[tUsers](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Username] [nvarchar](50) NULL,
[Password] [nvarchar](50) NULL,
[TenantID] int
) ON [PRIMARY]
CREATE VIEW [scmTenant1].[vUsers]
AS
SELECT ID, Username, Password
FROM dbo.tUsers
WHERE TenantID = 1
的SQL Server用户帐户(usrTenant1
)访问模式scmTenant1
但没有访问dbo
架构。我登录到SQL Server Management Studio中为usrTenant1
,并尝试执行此查询:
SELECT * FROM scmTenant1.vUsers
给我的错误:
The SELECT permission was denied on the object 'tUsers', database 'Sandbox', schema 'dbo'.
如果我授予dbo
架构查询执行罚款此帐户的访问。
我想我真的想授予表的查看权限。但我的问题是,你能授予用户访问视图并限制该用户访问视图选择的基础表吗?
谢谢你的建议,但我不认为这会在我的环境中工作。我计划为我的系统中的每个租户创建一个Schema和View。如果我将视图移至dbo,那么每个租户的视图都需要一个唯一的名称,这会破坏我的代码。 – jwdenny13
@ jwdenny13请参阅上面的编辑 – podiluska
用SUSER_SID()代替dbo.GetCurrentTenant()并更改了用SID替换TenantID的表。此列有一个默认值SUSER_SID()。非常好,谢谢! – jwdenny13