自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL Server 2005 SysAdmin 登錄審計的詳細介紹

數據庫 SQL Server
此文章主要向大家描述的是SQL Server 2005 SysAdmin 登錄審計,以及對連接兩個視圖獲得成員的實際應用代碼的描述。

以下的文章主要向大家描述的是SQL Server 2005 SysAdmin 登錄審計,如果是以sysadmin角色的成員在SQL Server數據庫中出現(xiàn)時,我都有審計這一過程的想法。審計所有成功的登錄可以提供信息,然而,它記錄每一次連接。

Sysadmin登錄在一片喧鬧聲中正失去它自己的地位。我該怎樣做才能只通過SQL Server 2005 sysadmin登

 

無論何時以sysadmin角色的成員登錄到我的SQL Server中,我都想審計這一過程。審計所有成功的登錄可以提供信息,然而,它記錄每一次連接。Sysadmin登錄在一片喧鬧聲中正失去它自己的地位。我該怎樣做才能只通過sysadmin登錄到我的SQL Server實例呢?

 

專家解答

在SQL Server 2005 Service Pack 2中,微軟把登錄觸發(fā)器引入到核心功能中。與DDL和DML觸發(fā)器一樣,這些觸發(fā)器在特定的事件上被激活,在這個例子中,無論何時登錄到SQL Server實例中,它都會被激活。當某個特定角色的成員登錄時,比如syadmin固定服務器角色,我們可以使用一個登錄觸發(fā)器來審計。

為了審計SQL Server 2005 sysadmin固定服務器角色的成員,我們需要使用兩個系統(tǒng)視圖:sys.server_role_members 和 sys.server_principals。當登錄事件發(fā)生時,我們將連接這兩個視圖來確定這個登錄是不是sysadmin角色的成員。我們可通過如下連接兩個視圖來得到這些成員:

  1. SELECT sp.principal_id   
  2. FROM sys.server_role_members srm   
  3. INNER JOIN sys.server_principals sp   
  4. ON srm.member_principal_id = sp.principal_id   
  5. WHERE srm.role_principal_id = (   
  6. SELECT principal_id   
  7. FROM sys.server_principals   
  8. WHERE [Name] = 'sysadmin')   

這個查詢將是我們登錄觸發(fā)器的基礎。通過在我們代碼的最后一部分增加一個AND從句,我們可以測試引入的登錄是否是SQL Server 2005 sysadmin固定服務器角色的成員。

當事件發(fā)生時,我們也需要一些空間來記錄這些事件。其中最簡單的方法是在一個工作數據庫中使用一張表來達到這個目的。考慮到這些例子的目的性,我將假設這張表能夠以DBAWork名義存儲在一個DBA數據庫中。以下是相應的代碼:

  1. CREATE TABLE dbo.AuditSysAdminLogin   
  2. (AuditEventId INT IDENTITY(1,1) NOT NULL,   
  3. EventTime DATETIME NOT NULL,   
  4. ServerLogin NVARCHAR(100) NOT NULL,   
  5. CONSTRAINT PK_AuditSysAdminLogin PRIMARY KEY CLUSTERED (AuditEventID));   
  6. GO   

一旦我們有了審計表,我們就可以創(chuàng)建自己的登錄觸發(fā)器。登錄觸發(fā)器的基本句法和DDL觸發(fā)器的句法相類似,如下顯示:

  1. CREATE TRIGGER   
  2. ON ALL SERVER   
  3. FOR LOGON   
  4. AS   

按照這種格式和使用以上確定的查詢來確定哪一個是SQL Server 2005 SysAdmin角色的成員,那么我們缺少的唯一方面是確認登錄的一種方式。這里有一個系統(tǒng)功能ORIGINAL_LOGIN(),它提供了相關的信息,現(xiàn)在把它放在一起,那么下面就是我們的登錄觸發(fā)器:

  1. USE master;   
  2. GO   
  3. CREATE TRIGGER trigLogon_CheckForSysAdmin   
  4. ON ALL SERVER   
  5. FOR LOGON   
  6. AS   
  7. BEGIN   
  8. IF EXISTS (   
  9. SELECT sp.principal_id   
  10. FROM sys.server_role_members srm   
  11. JOIN sys.server_principals sp   
  12. ON srm.member_principal_id = sp.principal_id   
  13. WHERE role_principal_id = (   
  14. SELECT principal_id   
  15. FROM sys.server_principals   
  16. WHERE NAME = 'sysadmin')   
  17. AND ORIGINAL_LOGIN() = sp.NAME)   
  18. BEGIN   
  19. INSERT INTO DBAWork.dbo.AuditSysAdminLogin   
  20. (EventTime, ServerLogin)   
  21. VALUES   
  22. (GETDATE(), ORIGINAL_LOGIN())   
  23. END;   
  24. END;   
  25. GO   

以上的相關內容就是對SQL Server 2005 SysAdmin登錄審計的介紹,望你能有所收獲。

【編輯推薦】

  1. SQL Server數據庫Processor Affinity概述
  2. 破解SQL Server占內存過多很簡單!
  3. SQL Server 2005快照與查詢的使用場景
  4. SQL Server拆分字符串的3常用種方法
  5. SQL Server2005插入漢字變問號的破解
責任編輯:佚名 來源: 清華大學出版社
相關推薦

2010-07-16 14:08:39

SQL Server

2010-10-21 16:10:08

2010-07-12 14:06:12

SQL Server代

2011-08-15 15:40:57

SQL Server 系統(tǒng)數據庫

2010-06-28 15:06:04

SQL Server

2010-06-17 15:09:49

SQL Server

2011-08-25 15:19:25

SQL Server 排序規(guī)則

2010-07-23 12:55:29

SQL Server

2011-02-28 17:41:20

SQL Server

2010-07-23 13:09:35

SQL Server回

2010-07-09 11:06:13

SQL Server

2011-08-18 18:03:32

手動卸載SQL Ser

2010-06-30 08:34:27

SQL Server

2011-03-29 15:27:26

SQL Server 動態(tài)管理

2009-09-08 13:07:15

介紹Linq to S

2010-10-21 15:13:20

SQL Server系

2011-07-14 08:56:34

Sql Server

2011-03-28 10:17:39

sql server

2010-09-03 10:40:30

SQL刪除

2011-09-01 16:13:37

Visual StudSQL Server 存儲過程
點贊
收藏

51CTO技術棧公眾號