[SQL][MCSA]70-462 考試預備 ( 3/4 )
Mirror ( MSDN : http://msdn.microsoft.com/zh-tw/library/ms189852(SQL.110).aspx )
- 資料庫鏡像是建立在 Full Recovery Mode 下,同時維護位於不同的 SQL Server Database Engine 伺服器執行個體上單一資料庫的兩份副本,是高可用性的解決方案之一。根據資料庫交易安全性的不同可以分為兩種作業模式:
-
- High-Safely mode : 高安全性模式必須配合 SQL Server Standard 以上的版本,且資料庫 SAFETY 選項設為 FULL,資料庫鏡像則以同步作業執行,交易將同時在兩個夥伴上進行認可,代價是會增加交易延遲性。 在此模式之下如果同時具備有 WITNESS (見證伺服器) 下,當有異常時則會支援自動容錯移轉。
-
- High-performance mode:高效能模式只支援 SQL Server Enterprise 版本,資料庫 SAFETY 選項設為 OFF,資料庫鏡像則以非同步方式執行。 鏡像伺服器會盡量跟上主體伺服器所傳送的記錄,因此鏡像資料庫可能會稍微落後主體資料庫。 在此模式之下 WITNESS 選項也應該設為 OFF。
-- 設定 Mirror 之前要先還原資料庫,並設定為 NORECOVERY RESTORE DATABASE AdventureMirror FROM DISK = 'C:\backup\adventuremirror.bak' WITH NORECOVERY; GO RESTORE LOG AdventureMirror FROM DISK = 'C:\backup\adventuremirror.trn' WITH FILE=1, NORECOVERY; GO -- 在主機 sql-a 上設定 Mirror為 sql-b ALTER DATABASE AdventureMirror SET PARTNER = 'TCP://sql-b.contoso.com:7024'; -- 在主機 sql-b 上設定 Mirror為 sql-a ALTER DATABASE AdventureMirror SET PARTNER = 'TCP://sql-a.contoso.com:7024'; -- 設定 witness ALTER DATABASE AdventureMirror SET WITNESS = 'TCP://SQL-CORE:7024' -- 手動移轉 ALTER DATABASE AdventureMirror SET PARTNER FAILOVER; -- 強迫移轉 ALTER DATABASE AdventureMirror SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS;
相關實作方式也可參考 Cary ( http://caryhsu.blogspot.tw/2011/12/sql-server-database-mirroring.html )
Replication ( MSDN : http://msdn.microsoft.com/zh-tw/library/ms152531(SQL.110).aspx )
- Snapshot replication : 快照式複寫適合用在較少變更資料,或者是在短時間內發生大量變更,可允許已過時的發行者相關資料副本放置一段時間。
- Transactional replication : 異動複寫一般用於發行者有極大量的插入、更新和刪除活動,而變更到達訂閱者的時間需要有低度延遲依預設。交易式發行集的訂閱者應當成唯讀處理,因為變更並不會傳播回發行者。 不過,異動複寫的確有提供選項讓訂閱者更新。
- Peer-to-Peer replication : 點對點複寫必須配合 SQL Server Enterprise 的版本,是以異動複寫為基礎,不支援資料列和資料行篩選。會以接近即時、交易式的方式傳播一致的變更。應用程式要避免潛在的資料不一致問題,確定只在一個節點上執行特定資料列的寫入作業,存取和變更資料;如果應用程式需要複雜的衝突偵測與解決功能,請使用合併式複寫。
- Merge replication : 合併式複寫與異動複寫類似,通常以發行集資料庫物件和資料的快照集啟動。 在「發行者」和「訂閱者」端所作的後續資料變更和結構描述修改可使用觸發程序進行追蹤。合併式複寫適合在個訂閱者可能會在不同時間更新相同的資料,並將這些變更傳播到發行者與其他訂閱者,更新時可能會發生衝突,而合併式複寫提供數個處理衝突的方法。
DBCC CHECKDB ( http://msdn.microsoft.com/zh-tw/library/ms176064.aspx )
-
檢查資料庫的完整性,在一般情況下如果要考慮的效能,可在命令後面加上 WITH <參數> ,可用的參數有下:
- TABLOCK : 讓 DBCC CHECKDB 利用 TABLE LOCK 來取代 SNAPSHOT ,可讓 DBCC CHECKDB 在負載量大的資料庫上執行較快。
- ESTIMATEONLY : 顯示使用所有其他指定的選項來執行 DBCC CHECKDB 所需要的 tempdb 估計空間量而不會執行實際的資料庫檢查。
- PHYSICAL_ONLY:只檢查檔案的頁面實體結構、記錄標頭的完整性,以及資料庫配置的一致性。
-
當資料庫有異常時需要使用 DBCC CHECKDB 進行修復時,必須先指定資料庫為 SINGLE_USER 的模式,並配合修復的參數
- REPAIR_REBUILD : 在不會遺失資料的情況下,儘可能的去修復資料庫。
- REPAIR_ALLOW_DATA_LOSS : 嘗試修復資料庫的錯誤,但可能會造成某些資料的遺失。
sp_configure
name |
description |
recovery interval (min) | Maximum recovery interval in minutes |
fill factor (%) | Default fill factor percentage |
max worker threads | Maximum worker threads |
clr enabled | CLR user code execution enabled in the server |
backup compression default | Enable compression of backups by default |
filestream access level | Sets the FILESTREAM access level |
Database Mail XPs | Enable or disable Database Mail XPs |
xp_cmdshell | Enable or disable command shell |
cost threshold for parallelism | cost threshold for parallelism ( Default 5 ) |
max degree of parallelism | maximum degree of parallelism |
min server memory (MB) | Minimum size of server memory (MB) |
max server memory (MB) | Maximum size of server memory (MB) |
remote admin connections | Dedicated Admin Connections are allowed from remote clients |
資料庫選項 (熟記相關參數的使用和名稱 ),配合 ALTER DATABASE [資料庫名稱] SET 語法變更
<auto_option> ::= { AUTO_CLOSE { ON | OFF } | AUTO_CREATE_STATISTICS { ON | OFF } | AUTO_SHRINK { ON | OFF } | AUTO_UPDATE_STATISTICS { ON | OFF } | AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF } }
<containment_option> ::= CONTAINMENT = { NONE | PARTIAL }
<db_encryption_option> ::= ENCRYPTION { ON | OFF }
<db_state_option> ::= { ONLINE | OFFLINE | EMERGENCY } <db_user_access_option> ::= { SINGLE_USER | RESTRICTED_USER | MULTI_USER }
<FILESTREAM_option> ::= { NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL } | DIRECTORY_NAME = <directory_name> }
<recovery_option> ::= { RECOVERY { FULL | BULK_LOGGED | SIMPLE } | TORN_PAGE_DETECTION { ON | OFF } | PAGE_VERIFY { CHECKSUM | TORN_PAGE_DETECTION | NONE } }
<snapshot_option> ::= { ALLOW_SNAPSHOT_ISOLATION { ON | OFF } | READ_COMMITTED_SNAPSHOT {ON | OFF } }
<sql_option> ::= { ANSI_NULL_DEFAULT { ON | OFF } | ANSI_NULLS { ON | OFF } | ANSI_PADDING { ON | OFF } | ANSI_WARNINGS { ON | OFF } | ARITHABORT { ON | OFF } | COMPATIBILITY_LEVEL = { 90 | 100 | 110 } | CONCAT_NULL_YIELDS_NULL { ON | OFF } | NUMERIC_ROUNDABORT { ON | OFF } | QUOTED_IDENTIFIER { ON | OFF } | RECURSIVE_TRIGGERS { ON | OFF } }