Можно ли предоставить пользователю доступ к представлению, но ограничить доступ пользователя к таблице, из которой он выбирает представление?
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
Выдает мне ошибку:
В разрешении SELECT было отказано для объекта 'tUsers', базы данных 'Sandbox', схемы 'dbo'.
Если я предоставлю этой учетной записи доступ к схеме dbo
, запрос будет выполнен нормально.
Я думаю, что мне действительно хотелось бы предоставить разрешение на просмотр таблицы. Но у меня вопрос: можете ли вы предоставить пользователю доступ к представлению и запретить этому пользователю доступ к базовой таблице, из которой он выбирает представление?