SQL Server基礎之登陸觸發器

来源:https://www.cnblogs.com/j20171203/archive/2018/10/05/9745042.html
-Advertisement-
Play Games

雖然同表級(DML)觸發器和庫級(DDL)觸發器共頂著一個帽子,但登陸觸發器與二者有本質區別。無論表級還是庫級,都是用來進行數據管理的,而登陸觸發器是純粹的安全工具。 登陸觸發器只響應LOGON事件,在登陸資料庫成功後、用戶會話未實際建立前觸發。登陸資料庫失敗,如賬號密碼錯誤,不會激發登陸觸發器。登 ...


  雖然同表級(DML)觸發器和庫級(DDL)觸發器共頂著一個帽子,但登陸觸發器與二者有本質區別。無論表級還是庫級,都是用來進行數據管理的,而登陸觸發器是純粹的安全工具。

  登陸觸發器只響應LOGON事件,在登陸資料庫成功後、用戶會話未實際建立前觸發。登陸資料庫失敗,如賬號密碼錯誤,不會激發登陸觸發器。登陸觸發器內部的錯誤消息及PRINTSQL語句輸出信息,統一寫到SQL Server 錯誤日誌。登陸觸發器可以同時存在多個,但存在多個時,SQL Server不保證所有觸發器的執行順序,只能使用sp_settriggerorder 確定哪一個登陸觸發器第一個或最後一個執行。登陸觸發器內部執行rollback語句或者發生級別大於20的錯誤,將會阻止用戶繼續登陸。

  前面說到登陸觸發器是純粹的安全工具,作為安全工具,登陸觸發器使用場景都是與安全有關的。下麵列舉了登陸觸發器使用的4種場景:
1、記錄登陸用戶的登陸時間、登陸IP等。
2、限制某些用戶,如Test,在工作時間內不能登陸資料庫。
3、限制某些用戶,如sa,只能在指定IP或者IP段登陸。
4、限制只有來自指定IPIP段的登陸可以成功登陸。

登陸觸發器語法:

--創建或修改登陸觸發器
CREATE [ OR ALTER ] TRIGGER trigger_name   --觸發器名字
ON ALL SERVER   
[ WITH <logon_trigger_option> [ ,...n ] ]  --在實際項目中,多使用管理員賬號建立登陸觸發器,因而這項可以省略
{ FOR| AFTER } LOGON    
AS 
  sql_statement   --用戶自己編寫內容

<ddl_trigger_option> ::=  
    [ ENCRYPTION ]  
    [ EXECUTE AS Clause ]  

-- WITH ENCRYPTION 表示加密該觸發器的SQL,使用該項後,將無法通過sp_helptext或資料庫管理器查看觸發器SQL。
-- WITH EXECUTE AS Clause ,示例:WITH EXECUTE AS 'sa',指定觸發器使用哪個用戶的許可權,省略該項,將使用登陸用戶的許可權。
--刪除登陸觸發器
DROP TRIGGER  trigger_name   ON ALL SERVER  
--查詢登陸觸發器
select * from sys.server_triggers

 備註:在登陸觸發器內部使用函數EVENTDATA()可以獲取觸發器上下文事件信息,使用函數ORIGINAL_LOGIN()可以獲取當前登陸的用戶名。

--登陸觸發器示例
--
限制用戶Test在工作時間(上午7時,晚上18時之間)不能登陸資料庫 create trigger tr_XianZhiDengLu on all server for logon as declare @XianZaiShiJian datetime set @XianZaiShiJian=GETDATE () if ORIGINAL_LOGIN()='test' and (DATEPART(hh,getdate()) >7 and DATEPART(hh,getdate())<18) begin rollback end

參考文獻:

登陸觸發器

 

寫作時間:2018-10-05

=====================================================================================
本文只代表本人的見解,可能存在錯誤,僅用於技術交流。如果你喜歡該文,可以掃下麵的二維碼打賞我(打賞敬請備註“博客園打賞”五字)。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 以前在Linux下麵玩LVM,一般都是選擇ext3、ext4格式的文件系統,最近在Ubuntu 16.04.5下安裝配置一個MySQL資料庫伺服器,遂測試了一下XFS文件系統的LVM,其實仔細對比下來,差別不大,只是文件格式化的區別以及件系統的調整命令的不同。下麵很多地方不做過多解釋,只是簡單的記錄... ...
  • MIT 6.828是操作系統中最經典的一門課程。完成所有的lab就相當於完成了一個迷你的操作系統。我跟的是2018年的課程,課程首頁在 "6.828課程官網" 。當然所有資料都是英文的,所以難度也不低,這裡推薦幾本非常有用的參考書:《x86彙編語言 從實模式到保護模式》,《程式員的自我修養 鏈接、裝 ...
  • [TOC] 綜合架構圖 主機規劃 ip 伺服器主機名和 IP 規劃參考模板 | 主機名 | eth0 網卡 | eth1 網卡 | 服務簡介 | | | | | | | lb01 | 10.0.0.5/24 | 172.16.1.5/24 | 負載服務 | | lb02 | 10.0.0.6/24 ...
  • 進入超級管理員目錄 su root 下載 wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz 找到下載的文件解壓 tar -xzvf Python-3.7.0.tgz 進入解壓好的文件目錄 cd Python-3.7.0 創建安 ...
  • 閑來無事就來搞虛擬機裝操作系統!期間出現很多錯誤,分享一下 一。安裝虛擬機 二。準備安裝的鏡像文件 我下載的是windows7純凈版 深度技術裡面下載的(http://www.xitongzhijia.net/win7/201805/125616.html),在系統之家的安裝不成功 三。準備安裝 1 ...
  • 如下所示,在創建LV的時候,偶爾會遇到“Volume group "xxxx" has insufficient free space (xxxx extents): xxxx required”這類錯誤。表示Volume group的可用空間不夠了。如下測試所示: root@mylnx12:~# ... ...
  • Oracle建表參考網址:http://www.oraclejsq.com/getOracle_jcjc.do?nodeid=010100139 ...
  • MySQL邏輯架構圖 第一層:主要功能是連接處理、授權認證、安全等。相當於JavaEE中的常說的Web層 第二層:包含了MySQL服務端的核心功能,包含查詢緩存、查詢解析、分析、優化等功能。相當於JavaEE中的Service層 第三層:主要是存儲引擎,存儲引擎主要負責數據的存儲和提取。相當於Jav ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...