1
我創建了一個新的類型和新的用戶別名數據類型:引用和VIEW DEFINITION權限,用戶在
CREATE TYPE dbo.MY_TYPE FROM varchar (128) NULL
GO
CREATE USER MyUser WITHOUT LOGIN;
GO
那麼,如果我不授予我的類型用戶的任何權限,那麼我看不到這種類型的定義:
EXECUTE AS USER = 'MyUser';
GO
SELECT * FROM sys.types where name = 'MY_TYPE';
--returns nothing
REVERT
GO
根據BOL:
VIEW DEFI授予個體實體的NITION允許被授予者 查看指定實體的元數據。
所以,如果我授予VIEW DEFINITION權限:
GRANT VIEW DEFINITION ON TYPE::dbo.MY_TYPE TO MyUser;
,並重複測試,我從sys.types的信息。還行吧。
問題是爲什麼我可以通過授予REFERENCES權限來解決該問題?
REVOKE VIEW DEFINITION ON TYPE::dbo.MY_TYPE FROM MyUser;
GRANT REFERENCES ON TYPE::dbo.MY_TYPE TO MyUser;
GO
EXECUTE AS USER = 'MyUser';
GO
SELECT * FROM sys.types where name = 'MY_TYPE';
--see the result here!!!
REVERT
GO