SQL Server Grant Create View (授權建立 View)
2021-09-07
筆記 SQL Server 如何授權 User 擁有可以建立、異動、刪除 View 的權限。
說明
處理方式與困境
除直接授權 User Create View Permission 外:
USE [DatabaseName];
GRANT CREATE VIEW TO [userName];
如果資料庫**結構描述 (Schema)**為預設的 dbo,還必須在結構描述下授權該 User。
USE [DatabaseName];
GRANT ALTER ON SCHEMA::[dbo] TO [userName];
這次的授權有突破以往對資料庫授權的認知,除了授予 Permission 外,尚須提供 Alter Schema 的權限,使用者才能夠如期的 Create View,同時也能 Alter View 以及 Delete View。
此外這個權限與 Schema 的 Select, Update, Delete, Insert 都無關,縱使 Deny 這些權限,具有 Create View Permission 以及 Alter Schema 者,仍能隨意的進行 Alter View 以及 Delete View,此外會意外授權變更 dbo 的 Table Name,或者說 Rename 所有屬於 dbo Schema 的物件。
這會是管理上比較頭痛的地方 🙄
解決方案
理想的授權 Create View 的方式,避免直接用 dbo Schema,而應該獨立建立新的 Schema,並授權給 User 能夠在特定 Schema 下 Create View,如此一來就能夠避免 dbo Schema 下的物件被 Rename,也能夠用 Schema Name 的方式識別由使用者所建立的 View。
USE [DatabaseName];
GRANT CREATE VIEW TO [userName];
CREATE SCHEMA [NewSchemaName] AUTHORIZATION [userName];
GRANT ALTER ON SCHEMA::[NewSchemaName] TO [userName];