網路問題,拿來複習權限設定相關操作,問題為
只開特定 Table 的 Alter 權限給指定使用者?
USE AdventureWorks2017
GO
-- 刪除 Table、User 和 Login,方便重覆執行
DROP TABLE IF EXISTS tblDemo
DROP USER IF EXISTS UserOnlyAlert
IF EXISTS ( SELECT 1 FROM sys.sql_logins WHERE Name = 'LoginOnlyAlert' ) DROP LOGIN LoginOnlyAlert
-- 建立一個簡單 Table 來驗證,是否具備只有 Alter 權限
CREATE TABLE [dbo].[tblDemo](
[ID] [int] NULL
) ON [PRIMARY]
GO
-- 建立 Login
CREATE LOGIN [LoginOnlyAlert]
WITH PASSWORD = N'P@ssw0rd',
DEFAULT_DATABASE = [AdventureWorks2017],
DEFAULT_LANGUAGE = [繁體中文],
CHECK_EXPIRATION = OFF,
CHECK_POLICY = OFF
GO
-- 建立 User 並指定預設 Schema
CREATE USER [UserOnlyAlert] FOR LOGIN [LoginOnlyAlert] WITH DEFAULT_SCHEMA = [dbo]
GO
-- 授給 UserOnlyAlert 對 tblDemo 進行 Alter 的權限
GRANT ALTER
ON AdventureWorks2017.dbo.tblDemo
TO [UserOnlyAlert]
-- 確認目前的 Login 和 User:
-- SUSER_SNAME():TP-JENGTING\jengting
-- USER_NAME() :dbo
SELECT
SUSER_SNAME() , -- Instance Level
USER_NAME() -- DB Level
-- 切換 Login
EXECUTE AS LOGIN = 'LoginOnlyAlert'
-- 確認目前的 Login 和 User:
-- SUSER_SNAME():LoginOnlyAlert
-- USER_NAME() :UserOnlyAlert
SELECT
SUSER_SNAME() , -- Instance Level
USER_NAME() -- DB Level
-- 權限測試
-- 對 Demo Table 進行 Select、Insert、Update 和 Delete
SELECT * FROM [AdventureWorks2017].[dbo].[tblDemo]
ALTER TABLE tblDemo ADD ColName char(10)
-- 測試訊息
-- 訊息 229,層級 14,狀態 5,行 52
-- 結構描述 'dbo',資料庫 'AdventureWorks2017',物件 'tblDemo' 沒有 SELECT 權限。
REVERT
新增欄位結果
沒有留言:
張貼留言