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


  1. 說明
    1. 處理方式與困境
    2. 解決方案
  2. 相關連結

筆記 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 學習資源筆記