2015年2月24日 星期二

MVA學習筆記-SQL Server 管理入門 (四):自動化、維護與監控

MVA連結

SQL SERVER AGENT

  • 負責自動化的SQL SERVER元件
  • 以WINDOWS服務的方式執行
  • 支援T-SQL、POWERSHEEL、作業系統指令或執行應用程式
  • 週期性的執行
  • 可將作業直接產生指令碼或文件來方便移轉或保存
  • 在AGENT的屬性來設定歷程記錄的保留方式,避免留存資料量過大
  • AGENT的設定和歷程保留在msdb

警示與通知

透過DATABASE MAIL實作SMTP,讓DB可以發送EMAIL
AGENT會觀察WINDWOS裡有多少SQLSERVER錯誤訊息
嚴重層級17以上就真的嚴重了
自訂錯誤訊息從50000後開始,要搭配WITHLOG讓記錄寫入WINDOWS錯誤訊息
定義警示

DATABASE MAIL

可設定多個帳號以增加可靠度
管理\DATABASEMAIL利用UI來設定
新增操作員來接受錯誤訊息

資料庫維護


  • 確定資料庫的完整性
  • DBCC CHECKDB('DBNAME') 
  • 只毀索引PAGE的話,如果DBCC CHECKDB是NOINDEX的話是無錯的
  • SELECT TABLE的話也會是正常,但如果是WITH INDEX的話也會異常。


索引片段


  • SQL SERVER重組索引資料頁當修改資料造成資料頁分割

內部不連續

  • FILLFACTOR(僅有子頁層)
  • PAD_INDEX(包含根與中介層)

維護索引

REBUILD

  • 重建整個索引
  • 資料庫需要未使用的空間
  • 以單一交易執行,可能需要大量的交易記錄空間

REORGANIZE

  • 線上重新排序資料頁
  • 交易記錄使用量較少
  • 可以被中斷,但仍保有執行到當時的工作成果

線上索引作業

  • 可以線上建立、重建和刪除
  • 較離線慢,但需許使用者讀取資料
  • 需要額外的硬碟空間
  • 查詢資料片段語法
  • SELECT * FROM sys.dm_db_index_physical_stats(db_id('dbname'),object_id('t'),null,null,'DETAILED')
  • 在TABLE右鍵屬性查片段狀況也可以
  • 可以參考保哥的文章

追蹤與監控工作

動態管理檢視與函數概觀


  • sys.dm_exec_%-連接和執行
  • sys.dm_os_%-SQLOS相關資訊
  • sys.dm_tran_%-交易管理
  • sys.dm_io_%-IO相關資訊
  • sys.dm_db_%-資料庫範圍的資訊
  • 使用時必須指定sys結構描述,分別為當下狀態資訊與累積的歷史資訊
  • 累積的部份在db重開機之後就會歸零

使用效能監視器

  • 提供即時監控健康與效能的計數器(perfmon)
  • 監控重點:
  • CPU
  • Memory
  • Disk System
  • Network
  • SQL Server Counters

資料收集概觀


  • 收集多台機器的內容並保留在一個DB上面
  • 利用SSIS和SQL AGENT作業傳送資料到集中的資料庫
  • 用SSMS來存取報表

設定資料收集

  • 在一群的SQL SERVER主機中選一台來當資料收集主機,其它主機則個別設定好上傳資料的頻率以及要上傳的資料與保留期限。
  • 管理\資料收集\設定管理資料倉儲
  • 新增一個資料庫用來管理收集資料並授權
  • 在各機器上面都要設定資料收集,並連到資料倉儲主機

2015年2月2日 星期一

MVA學習筆記:SQL Server 管理入門(三)-安全性

MVA連結

SQL Server安全概論:


  • 連結db有兩種方式,一種是windows認證,或是sqlserver本身的認證。
  • sql2012之後有自主資料庫,可在資料庫內直接記錄可以登入的帳密。

授權概觀:


  • 認證-確認使用者身份
  • 授權-賦予主體對安全性實體擁有的權限有什麼。
  • 透過GRAND,DENY,REVOKE語法來賦予對物件的權限。
  • DENY>GRAND>REVOKE

建立資料庫使用者的方式:


  • 透過SSMS內的物件總管
  • T-SQL的CREATE USER語法
  • CREATE USER STUDENT FOR LOGIN [ADVENTWORKS\STUDENT]

管理DBO和GUEST存取:


  • SA登入和SYSADMIN角色的成員會對應到DBO使用者
  • SYSADMIN有無限存取的能力,完全無法DENY任何的權限。
  • GUEST預設是DISABLE,可以透過GRNAD CONNECT TO GUEST來啟用帳號

為特定資料庫建立使用者:


  • 在資料庫等級認證使用者-需要自主資料庫或部份自主資料庫
  • 三種型態:
  • 以WINDOWS帳戶為基礎的使用者,並未建立登入
  • 以WINDOWS群組為基礎的使用者,並未建立登入
  • 自主資料庫的使用者並賦予密碼(SQL2012之後功能)
  • 處理對應不上的SECURITY IDS

登入和資料庫使用者:


  • 都有名稱
  • 都有SECURITY IDENTIFIERS 稱為SIDS
  • 預設、建立SQL登入時都會賦予新的SID
  • 即使帳號相同也會建新的SID
  • WINDOWS登入的SID採WINDOWS提供的值
  • 將資料庫還原或附加到不同的執行個體後,一般會發生對應不上的問題
  • 以CREATE LOGIN語法建立登入時,搭配WITH SID選項, 參照HTTP://support.microsort.com/kb/918992
  • 以ALTER USER使用者WITH LOGIN=登入 語法修改資料庫內的使用者採用登入的SID

伺服器範圍的權限

伺服器層級的權限可以透過三種方式賦予

固定伺服器角色-盡量少用


  • sysadmin本身不做任何安全檢查 ,即使被deny還是可以做任何的操作。
  • public是伺服器內特殊的伺服器角色
  • 不被視為固定的伺服器角色,因為可修改他的權限。
  • 預設賦予的權限:VIEW ANY DATABASE,對預設端點有CONNECT權限。

使用者定義伺服器角色(2012之後才有,建議使用)


  • 可以透過負向表列(deny)來做權限的控管

資料庫範圍的權限

  • 理論同伺服器範圍的權限




With Grant選項


  • 被賦予權限的時候搭配可讓被授予者再將該權限授予其他人。
  • CASCADE可以用來移除被授予權限者再授予出去的權限。

預存程序安全


  • 在呼叫前需要EXECUTE權限
  • 修改需要ALTER權限
  • 檢視定義需要VIEW DEFINITION權限
  • GRAND EXECUTE ON SP TO MAN

使用者自訂函數安全

  • 使用純量值函數前需EXECUTE權限
  • 使用資料表值函數前需要SELECT權限
  • 在CHECK條件約束、DEFAULT值或計算欄位使用,需要REFERENCES權限

Managed Code安全-這段不懂



管理Ownership Chains

ABC三人,1TABLE,2VIEW,2VIEW來源為1TABLE的資料,當B將2VIEW授權給A的時候,A有權限看2VIEW,但無法看1TABLE資料,當1TABLE權限被轉移至C的時候,A連2VIEW的權限也會被拿掉,必需由C再重新授權才行。

安全稽核


  • 2008之後新增的功能
  • 基於擴充事件的事件追蹤與記錄機制
  • 2012企業版有完整功能,其它版本有基本功能(開放SERVER等級)
  • 稽核等級分伺服器等級與資料庫等級

設定稽核流程

  • 建立定義目的地
  • 檔案
  • 應用程式記錄(任何有權力的使用者都可以讀取)
  • 安全性記錄(需賦予SQLSERVER 服務帳戶產生安全性稽核使用者權限
  • 建立稽核規格(伺服器或資料庫)
  • 啟用稽核和規格(預設停用)
  • 檢視記錄