簡體   English   中英

SQL Server 2008 Management Studio中的觸發器

[英]Triggers in sql server 2008 management studio

我試圖通過以下方式設置觸發器:管理員(而非用戶)對數據庫進行任何更改時,所有具有管理員名稱和時間的更改數據都將保存在具有所有內容的審核表(已創建)中可能的領域。

我已經在每個表上為這些表中的任何更新創建了觸發器。 觸發器將信息保存在audittable中。 但是,我只想限制管理員執行此操作。 就像我只想保留管理員的更改記錄,包括他們的姓名,時間和所做的更改(我有一個單獨的表,用於顯示管理員名稱,用戶名,密碼和所有其他內容)。

有人可以幫我嗎。 謝謝

要獲取用戶,您可以使用:

  1. 服務器級別(登錄)

    選擇system_user,suser_sname(),suser_sid()

  2. 數據庫級別(數據庫用戶)

    選擇session_user,current_user,user,user_name(),user_id()

然后在該附加表中檢查該用戶是否為admin。

您可以嘗試這兩個功能之一,具體取決於您定義為“管理員”的身份。

SELECT IS_MEMBER('dbo'), IS_SRVROLEMEMBER('sysadmin')

IS_MEMBER函數評估數據庫角色,而IS_SRVROLEMEMBER函數評估服務器角色。 因此,如果您想知道用戶是否是數據庫管理員,則可以使用IS_MEMBER。 這些將適用於用戶定義的角色以及內置角色。

更新:

這是觸發器的示例,當服務器管理員將數據插入審核表時,該觸發器會將數據添加到審核表。

CREATE TRIGGER trg_InfoUpdates ON tblCustomerInfo 
FOR INSERT AS

    IF IS_SRVROLEMEMBER('sysadmin') = 1
      BEGIN
        INSERT INTO tblAuditLog (CustomerID)
        SELECT CustomerID
        FROM inserted
      END
    ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM