參考文獻:sql
http://msdn.microsoft.com/en-us/library/ms187103.aspx數據庫
SQL Server 使用日誌傳送,您能夠自動將「主服務器」實例上「主數據庫」內的事務日誌備份發送到單獨「輔助服務器」實例上的一個或多個「輔助數據庫」。 事務日誌備份分別應用於每一個輔助數據庫。 可選的第三個服務器實例(稱爲「監視服務器」)記錄備份和還原操做的歷史記錄及狀態,還能夠在沒法按計劃執行這些操做時引起警報。服務器
日誌傳送由三項操做組成:網絡
在主服務器實例中備份事務日誌。ide
將事務日誌文件複製到輔助服務器實例。spa
在輔助服務器實例中還原日誌備份。3d
日誌可傳送到多個輔助服務器實例。 在這些狀況下,將針對每一個輔助服務器實例重複執行操做 2 和操做 3。日誌
日誌傳送配置不會自動從主服務器故障轉移到輔助服務器。 若是主數據庫變爲不可用,可手動使任意輔助數據庫聯機。code
您能夠爲了實現報表目的而使用輔助數據庫。server
此外,能夠針對日誌傳送配置來配置警報。
下圖顯示了具備主服務器實例、三個輔助服務器實例和一個監視服務器實例的日誌傳送配置。 此圖闡釋了備份做業、複製做業以及還原做業所執行步驟,以下所示:
主服務器實例執行備份做業以在主數據庫上備份事務日誌。 而後,該服務器實例將日誌備份放入主日誌備份文件(此文件將被髮送到備份文件夾中)。 在此圖中,備份文件夾位於共享目錄(「備份共享」)下。
所有三個輔助服務器實例都執行其各自的複製做業,以將主日誌備份文件複製到它本地的目標文件夾中。
每一個輔助服務器實例都執行其還原做業,以將日誌備份從本地目標文件夾還原到本地輔助數據庫中。
主服務器實例和輔助服務器實例將它們本身的歷史記錄和狀態發送到監視服務器實例。
Primary Server:SANZ-W7\.,以local system啓動默認數據庫實例
Primary Database:InsideTSQL2008
Secondary Server:WUW-W7\.,以域帳戶wuwang啓動默認數據庫實例,由於若是用Local System這個賬號的話,是不能訪問網絡資源的。
Secondary Database:InsideTSQL2008
配置步驟:
步驟1:
在主服務器SANZ-W7上建立一個共享目錄,給Everyone有讀的權限。好比我建立的共享目錄路徑是:C:\Temp\LogShipping,共享路徑是:\\SANZ-W7\LogShipping。
步驟2:
對主數據庫InsideTSQL2008作一個全備份(能夠不作全備份,在配置log shipping的時候再作全備份,下面會提到),而後把備份文件InsideTSQL2008.bak放在C:\Temp\LogShipping目錄下。在輔助服務器上建立目錄C:\Temp\LogShipping。
步驟3:
設置LogShipping的配置屬性,咱們右鍵InsideTSQL2008->Tasks->Ship Transaction Logs,會出現以下圖所示界面:
點擊Backup Settings進行以下配置:
在此處建立了一個Job叫作LSBackup_InsideTSQL2008,用來自動備份事務日誌。
步驟4:
而後添加Secondary服務器WUW-W7,以下圖所示:
Seconday server instance咱們選擇WUW-W7,Secondary database默認就是跟primary database同名的InsideTSQL2008。以下圖所示,咱們在Initialize Secondary Database中看到有兩個選項,一個是建立數據庫全備份,而後將這個全備份回覆到secondary database中,另一個是指定已有全備份的路徑。
在Copy File標籤中添加Secondary Server保存文件的路徑,咱們這裏使用同名的路徑。還有secondary server也要啓動sql agent。
配置完畢之後點擊OK,最後會有一個配置成功界面:
咱們在服務服務器WUW-W7下查看InsideTSQL2008信息,以下圖所示:
咱們能夠發現InsideTSQL2008處於Resotoring狀態,這是由於恢復到服務數據庫的都是使用nonrecovery模式的。
在徹底正確配置Log Shipping之後,咱們能夠在primary server的C:\Temp\LogShipping目錄下看到以下這些日誌備份文件
在Secondary server的C:\Temp\LogShipping目錄下看到
惟一的區別就是primary server有full database backup,而Secondary server中沒有。不管是primary server上的LSBackup_TESTDB1,仍是secondary server上的LSCopy_SANZ-W7_TESTDB1和LSRestore_SANZ-W7_TESTDB1,我將他們都設置成每一分鐘執行一次,這樣方便查看實驗結果。
在SSMS中查看LSBackup_InsideTSQL2008這個Job的工做狀況,發現這個Job報錯,錯誤以下:
*** Error: Could not retrieve backup settings for primary ID 'f32baa93-0341-48b5-a5a0-2acde90283fa'.(Microsoft.SqlServer.Management.LogShipping) ***<nl/>2012-09-09 19:30:15.85*** Error: Failed to connect to server WIN-E5EJQ0EN4O2.(Microsoft.SqlServer.ConnectionInfo) ***<nl/>2012-09-09 19:30:15.85*** Error: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider<c/> error: 40 - Could not open a connection to SQL Server)(.Net SqlClient Data Provider) ***<nl/>2012-09-09 19:30:15.85----- END OF TRANSACTION LOG BACKUP -----
從上述錯誤日誌中咱們發現有一條是說沒法鏈接 server WIN-E5EJQ0EN4O2。可是個人primary server是SANZ-W7啊,怎麼成了WIN-E5EJQ0EN4O2?這是當初安裝系統的時候,立馬就安裝了sql server,而後又將主機名從WIN-E5EJQ0EN4O2改爲了SANZ-W7。可是在sys.servers中沒有更新,咱們能夠經過以下TSQL語句查看:
select @@SERVERNAME
其查詢結果就是WIN-E5EJQ0EN4O2。咱們只須要更新數據庫中sys.servers信息就能夠了。咱們執行以下TSQL語句更新server信息
--刪除舊的主機名 EXEC sp_dropserver 'WIN-E5EJQ0EN4O2' GO --添加當前主機名 EXEC sp_addserver 'SANZ-W7', 'local' GO
在執行完上述TSQL語句之後必定要記得重啓sql server,不然使用select @@SERVERNAME查詢當前server名稱仍是WIN-E5EJQ0EN4O2。