在 HTTP 為基礎的網際網路環境下,XML 憑藉其自描述性、可擴展性與跨平台優勢,成為資料交換的事實標準。作為微軟 .NET 戰略的核心產品,SQL Server 2005 順應潮流,提供了全方位的 XML 支援,涵蓋儲存、發布、交換與整合,並大幅強化了安全機制,構建出企業級資料平台的堅實基石。
相較於 SQL Server 2000 僅透過 SQLXML 獨立套件提供基本的 XML 輸出與 HTTP 存取,SQL Server 2005 將 XML 提升為第一級公民:
xml 型別,支援具型別(Typed XML,綁定 XSD Schema)與非具型別兩種模式,可直接在資料表欄位、變數、參數中儲存 XML 文件片段。insert、update、delete 關鍵字,可在伺服器端直接修改 XML 文件片段,無需往返應用層。OPENROWSET,支援大量 XML 資料在同構/異構系統間的高效批次處理。FOR XML 子句與 OPENXML() 提供更完善的支援,平滑遷移既有應用。過去 SQL Server 2000 時代,XML 常以 BLOB 形式塞入資料表,導致驗證依賴前端、檢索需逐行解析、效率低落。SQL Server 2005 推出混合儲存架構,將關聯資料與 XML 資料統一在關聯式引擎內,帶來五大效益:
XmlReader/XmlWriter 無縫銜接。SQL Server 2005 同時支援 SQL Server 認證 與 Windows 整合認證。重大突破在於:本地登入帳號現在能套用 Windows 密碼原則(強制複雜度、長度、到期、鎖定閾值、啟用/停用),並新增憑證式認證,適合異構平台的企業 CA 環境。透過內建函數 LOGINPROPERTY 可程式化查詢登入安全屬性(如是否鎖定、密碼上次變更時間、錯誤次數等)。

圖 1:SQL Server 認證機制架構

圖 2:登入密碼原則設定介面
-- 程式碼範例:透過 LOGINPROPERTY 取得登入安全策略
SELECT LOGINPROPERTY('WillisJO', 'IsMustChange'); -- 確認使用者是否必須變更密碼
SELECT LOGINPROPERTY('SamirK', 'IsLocked'); -- 確認登入是否已被鎖定
引入三層級 Principal(主體) 概念:
並定義 Securable(可保護物件) 代表受引擎存取控制的資源,依範圍分為伺服器、資料庫、Schema 三層,涵蓋 Endpoint、Login、Database、Assembly、Certificate、Schema、Table、View、Procedure 等數十種物件。權限管理透過 DCL(GRANT/DENY/REVOKE)在 Principal-Securable 矩陣上精細配置。

圖 3:Principal、Securable 與權限關係配置

圖 4:三層巢狀權限模型全景

圖 5:Management Studio 權限配置介面
SQL Server 2005 將 CLR 寄宿於資料庫引擎進程內(In-Process),提供三種組件權限等級:
sysadmin 部署。建議透過 .NET Framework 設定工具配置程式碼存取安全策略(CAS),再透過群組原則分發至企業環境,實現集中管理。
傳統上,應用需高權限操作(如存取登錄、AD)時,DBA 只能授予 sysadmin 或 Domain Admins,風險極大。SQL Server 2005 引入 Execution Context(執行內容),允許在預存程序/觸發器/函數的呼叫鏈中,針對特定步驟以不同使用者身分執行(EXECUTE AS),實現最小權限原則的動態提升與回收。

圖 6:執行過程中切換 Context 示意
SQL Server 2005 透過原生 XML 型別、XQuery/XPath/DML、XML 索引、混合儲存體系,徹底解決了 XML 在關聯式資料庫中的「水土不服」。同時,分級主體/可保護物件模型、CLR 沙箱、執行內容切換等安全創新,構建出深度防禦的資料安全架構。這使得 SQL Server 2005 不僅是關聯式資料庫,更是面向服務導向架構(SOA)與企業級資料整合的核心平台。