SQL Server Grant Create View (授權建立 View)

2021-09-07

筆記 SQL Server 如何授權 User 擁有可以建立、異動、刪除 View 的權限。

SQL Server Logo

說明

處理方式與困境

除直接授權 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];

相關連結

SQL Server Integrated Service 初探

SQL Server 閃電般快速查詢指南⚡

SQL Server 周邊工具彙整筆記

SQL Server 學習資源筆記