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