今天早上主管開了一個考題
為了不讓開發環境的資料庫變成亂葬崗
所以除了SA之外,禁止開發人員在開發環境的資料庫建立或修改資料表

本來想賦予該帳號擁有下列兩個角色成員
 db_datareader、db_datawriter

但開發人員必須要能夠在資料庫中進行開發 ,例如:Create proc 、Alter proc....
若勾選db_ddladmin角色成員,則該帳號雖可在資料庫內進行開發,但無法禁止建立資料表

最後選擇建立 資料庫層級的 DDL觸發程序(此功能只能在SQL Server 2005之後使用)
當某特定帳號要執行Drop_table,Create_table,Alter_Table動作時
先判斷使用者帳號是否為規定,再授予他執行的權限,否則將執行語法Rollback

----------------------------------------------------------------------------------------------------------------

ALTER Trigger Safety
ON Database
For Drop_table,Create_table,Alter_Table
as

IF USER_NAME() not in ('dbo','P-AD\sandy.yao' )

BEGIN
Print  User_Name()+N'帳號不能異動資料表,請通知 SA 或 DBA 協助'
Rollback transaction
END
ELSE
Print  User_Name()+N' 帳號,執行成功'
GO

更多的 DDL說明可參考這裡

arrow
arrow
    全站熱搜

    小草 發表在 痞客邦 留言(0) 人氣()