SQL 注入攻擊溯源實戰:構建 SQL 執行日志系統實現入侵檢測與性能優化
項目背景 接手老舊 CMS 系統,禁止大規模重構,需在保持現有功能運行前提下: 快速定位 SQL 注入入口 記錄高頻 SQL 進行針對性優化 解決方案:全
SQL Server 表變更監控方案對比:觸發器 vs CHECKSUM_AGG() 實測分析
業務背景 需監控核心表的增/刪/改,支持增量導出:導出時記錄快照,下次僅導出變更數據。 方案一:觸發器 + 元數據表(可靠、標準) LastExport;
SQL Server 根據表名和索引範圍動態獲取列名的存儲過程
功能需求 動態獲取指定表在 @fromIndex 到 @toIndex 範圍內的列名,拼接為逗號分隔字符串輸出,支持: 全表列(@fromIndex=0, @
SQL Server 遞歸 CTE 實戰:層級數據查詢完整範例
場景描述 表 ColumnTable 存儲樹形結構:Id(主鍵)、FatherId(父節點)、Number(業務編碼)。需求:給定 Number = 67,遞歸
SQL Server 獲取新增記錄自增主鍵:SCOPE_IDENTITY() 與 @@IDENTITY 深度對比
核心區別 函數作用域適用場景風險 SCOPE_IDENTITY()當前作用域(存儲過程、觸發器、批次、函數)絕大多數場景,推薦首選無 @@IDENTITY全
SQL Server 百萬級數據分頁存儲過程:動態 SQL 實現與性能優化
方案概覽 通用分頁預存過程,支持任意表、字段、排序、條件,採用「雙 Top + 子查詢」邏輯,兼容 SQL Server 2000/2005+。 核心參數設計
SQL Server uniqueidentifier 轉 varchar/char 類型的多種方法對比
類型轉換場景 uniqueidentifier (GUID) 常需轉為字符串用於顯示、拼接動態 SQL、寫入日誌或傳給前端。本文整理 4 種常見轉換寫法。 方
SQL Server 觸發器入門:從基礎概念到實戰案例
什麼是觸發器? 觸發器 是一種特殊的預存過程,不需顯式調用,而是由數據操作語言(DML)事件自動觸發執行,類似於 C# 的事件處理機制。 核心特點 觸發時機
SQL Server 獲取當日最大時間值(23:59:59.997)的標準寫法
需求背景 在編寫日期範圍查詢時,常需獲取某一天的結束時間點(即 23:59:59.997),以涵蓋該日所有毫秒級數據。 實現原理 利用 DATEADD 函數:
SQL Server 獲取指定月份天數的高效函數實現方案
前言 在 SQL Server 開發中,獲取某個月份的天數是常見需求。本文分享幾種實現方案,從基礎表值函數優化到簡潔的 CASE 表達式寫法,並提供閏年判斷的最
SQL Server 危險擴展預存程序的刪除與還原指南
風險背景 SQL Server 內建多個擴展預存程序 (xp_*, sp_OA*) 可呼叫 Shell、登錄、COM、檔案系統,若遭 SQL 注入利用,攻擊者可
SQL Server 查詢連續日期記錄的實作範例
需求 找出資料表 TT 中連續 3 天(或以上)都有記錄的日期區間。 解法:游標式迴圈 + 暫存表 -- 1. 建立暫存表存結果 CREATE TABLE #
SQL Server 取得指定日期所在月份第一天的四種方法
方法一:DATEADD 減去已過天數 CREATE FUNCTION dbo.udf_FirstDayOfMonth (@Date DATE) RETURNS
SQL Server NTEXT 大欄位字串替換:UPDATETEXT 逐塊處理完整實戰
背景與挑戰 NTEXT/TEXT/IMAGE (LOB) 型別**不支援**直接 UPDATE SET col = REPLACE(col, ...)。舊版 S
SQL 百分比與小數雙向轉換:自訂標量函數 GetPercentageString 與 GetPercentageNumber
業務需求 報表顯示需「小數→百分比字串」(0.0523 → 5.23%),輸入驗證需「百分比字串→小數」(5.23% → 0.0523)。封裝為可複用函數提升一
合併多個 SQL 腳本檔案的兩種自動化方案
背景 專案部署常需將多個 .sql 檔依序合併為單一發布腳本。手動複製貼上既繁瑕又易出錯,本文提供兩種自動化方案: 方案一:T-SQL 預存程序(使用 sp_
SQL Server 刪除重複資料六大經典方法完整對比
重複定義與去重策略 「重複」由業務鍵決定:單欄(如 ID)、多欄組合(如 姓名+電話)、全列比對。去重保留策略通常保留**最小/最大 ID** 或**最早/最新