摘要:[SQL]SQL授予權限
今天想說把一資料庫建立備份地方,所以在另外的地方建立資料表,但想跑一個查詢就可以執行完授予權限,所以就參考了一些資料整理了以下的連結可以參考
如果要撈一些比較系統面的資料表可以參考這個
MSDN:INFORMATION_SCHEMA
TABLE_PRIVILEGES:針對授與目前資料庫中的目前使用者,或是被目前資料庫中的目前使用者所授與的每一個資料表權限,各傳回一個資料列
TABLES:針對目前資料庫中目前使用者具備權限的每份資料表,各傳回一個資料列。
COLUMNS:針對目前資料庫中目前使用者所能存取的每個資料行,各傳回一個資料列。
使用方法:
SELECT * FROM test.INFORMATION_SCHEMA.Columns
接下來是授予使用者和拒絕使用者權限的方法
--授予 資料表 Transaction Select 權限 給 test_admin
GRANT SELECT on Test.dbo.Transaction TO test_admin
--拒絕 資料表 Transaction Select 權限 給 test_admin
deny SELECT on Test.dbo.Transaction TO test_admin
但如果發生找不到使用者時,代表資料庫一開始沒預設到使用者
可以執行這段語法來解決
CREATE USER test_admin;
最後就是把這些資料都串起來用迴圈來執行下面這段語法
execute('grant SELECT on '+@TableName+ ' TO '+ @User)