[SQL][MCSA]70-462 考試預備 ( 3/4 )

[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 } 
}