當前位置:首頁 » 工具五金 » 資料庫ctm調度工具怎麼使用
擴展閱讀
如何管理電腦資源管理器 2025-05-11 01:49:33
40隻養雞成本多少錢 2025-05-11 01:33:33

資料庫ctm調度工具怎麼使用

發布時間: 2023-03-24 23:49:38

① ORA-08103

沒有一個異常是無緣故的,就像恐怖片里的故事,我們觀眾一路看下來都覺得疑點重重,好幾處證據,好些角色的行為都很詭異,但是我們就是查不到原因,找不到答案。等到疑點之間開始有聯系,從已知聯系去關聯至其他需要處理的難題上才把難題解決。問題解決完後,之前的所有疑點才個個地解開,真相大白。。。。

就如昨天遇到的報錯一樣,CTM生產環境報了下面的錯誤:

The Ocl function execute Direct returned status-1. Error code: 8103,Error message

ORA-08103: obiect no longer exists(...)

背景是共有4個作業ABCD。C作業報了ORA-08103的錯,而這個報錯情況是,C在SELECT的時候,同時有DDL操作(通常是 TRUNCATE),SELECT和 TRUNCATE並行操作,從而導致「obiect no longer exists」的報錯。查了作業控制項里SQL放置,並沒有與其他正常作業有異常。到堡壘機查詢目標表,可以看到B、C兩個作業的目標表一直在刷新,從上午到中午,理論上應的作業都是在調的,但是作業就停在上午八點了。另外A、D作業的頌改目標表和CTM調度狀態一樣都是在8點再也沒有刷新。

這也是,8點這個時刻的C作業已經報錯了,如果不處理C那不會生產一個新任務再循環調度。

突然想到昨晚在新ODS庫部署名字相似的作業可能昨晚上線的作業和LTS在調我舊ODS庫的作業。這里規劃的是CTM配置的是日ODS庫,LTS配置的是新ODS庫。因此我打開新ODS庫把這個任務我的所有作業都查了ー下發現,只有AD作業配置在新庫的目標表有數據而BC對應的目標表均無數據。一下子突然搞清楚了,原來是昨晚試部署LTS調度(項目組開始使用LTS慢慢替換CTM調度工具),實施人員選錯選了我的舊庫的DS名(4個作業選了2個)用TS調度了我舊ODS的DS。I舊DS上配置的參數野亮判是舊庫的,新DS配置的參數是新庫的。新DS沒被選到的,所以新庫對應大目鍵亂標表均無數居,有被選到的才有數據,同時LTS選中的舊的DS就和CTM里一致了,同時調度就會報錯,就在8點開始了同時調度(作業C)的操作就報錯了。

任務中有一個作業報錯,需要處理這個作業這個任務才會完成;在這個作業還沒有處理的時,那其他作業即使正常調度也不會進入下一個新執行環節。因而作業ABD當時均無調度。

② 什麼是ETL調度系統

對於做過 BI 開發的朋友,ETL 並不陌生,只要涉及到數據源的數據抽取、數據的計算和處理過程的開發,都是 ETL,ETL 就這三個階段,Extraction 抽取,Transformation 轉換,Loading 載入。


從不同數據源抽取數據 EXTRACTION ,按照一定的數據處理規則對數據進行加工和格式轉換 TRASFORMATION,最後處理完成的輸出到目標數據表中也有可能是文件等等,這個就是 LOADING。

再通俗一點講,ETL 的過程就跟大家日常做菜一樣,需要到菜市場的各個攤位買好菜,把菜買回來要摘一下,洗一洗,切一切最後下鍋把菜炒好端到飯桌上。菜市場的各個攤位就是數據源,做好的菜就是最終的輸出結果,中間的所有過程像摘菜、洗菜、切菜、做菜就是轉換。
在開發者殲的時候,大部分時候會通過 ETL 工具去實現,比如常用的像 KETTLE、PENTAHO、IBM DATASTAGE、INFORNAICA、微軟 SQL SERVER 裡面的 SSIS 等等,在結合基本的 SQL 來實現整個 ETL 過程。


也有的是自己通過程序開發,然後控制一些數據處理腳本跑批,基本上就是程序加 SQL 實現。
哪種方式更好,也是需要看使用場景和開發人員對那種方式使用的更加得心應手。我看大部分軟體程序開發人員出身的,碰到數據類項目會比較喜歡用程序控制跑批,這是程序思維的自然延續。純 BI 開發人員大部分自然就選擇成熟的 ETL 工具來開發,當然也有一上來就寫程序腳本的,這類 BI 開發人員的師傅基本上是程序人員轉過來的。


用程序的好處就是適配性強,可擴展性強,可以集成或拆解到到任何的程序處理過程中,有的時候使用程序開發效率更高。難就難在對維護人員有一定的技術要求,經驗轉移和可復制性不夠。


用 ETL 工具的好處,第一是整個 ETL 的開發過程可視化了,特別是在數據處理流程的分層設計中可以很清晰的管理。第二是鏈接到不同數據源的時候,各種數據源、資料庫的鏈接協議已經內置了,直接配置就可以,不需要再去寫程序去實現。第三是各種轉換控制項基本上拖拉拽就可以使用,起到簡化的代替一部分 SQL 的開發,不需要寫代碼去實現扮陪。第四是可以非常靈活的設計各種 ETL 調度規則,高度配置化,這個也不需要寫代碼實現。


所以在大多數通用的項目中,在項目上使用 ETL 標准組件開發會比較多一些。


ETL 從邏輯上一般可以分為兩層,控制流和數據流,這也是很多 ETL 工具設計的理念,不同的 ETL 工具可能叫法不同。


控制流就是控制每一個數據流與數據流處理的先後流程,一個控制流可以包含多個數據流。比廳嫌蠢如在數據倉庫開發過程中,第一層的處理是ODS層或者Staging 層的開發,第二層是DIMENSION維度層的開發,後面幾層就是DW 事實層、DM數據集市層的開發。通過ETL的調度管理就可以讓這幾層串聯起來形成一個完整的數據處理流程。


數據流就是具體的從源數據到目標數據表的數據轉換過程,所以也有 ETL 工具把數據流叫做轉換。在數據流的開發設計過程中主要就是三個環節,目標數據表的鏈接,這兩個直接通過 ETL 控制項配置就可以了。中間轉換的環節,這個時候就可能有很多的選擇了,調 SQL 語句、存儲過程,或者還是使用 ETL 控制項來實現。


有的項目上習慣使用 ETL 控制項來實現數據流中的轉換,也有的項目要求不使用標準的轉換組件使用存儲過程來調用。也有的是因為數據倉庫本身這個資料庫不支持存儲過程就只能通過標準的SQL來實現。


我們通常講的BI數據架構師其實指的就是ETL的架構設計,這是整個BI項目中非常核心的一層技術實現,數據處理、數據清洗和建模都是在ETL中去實現。一個好的ETL架構設計可以同時支撐上百個包就是控制流,每一個控制流下可能又有上百個數據流的處理過程。之前寫過一篇技術文章,大家可以搜索下關鍵字 BIWORK ETL 應該在網上還能找到到這篇文章。這種框架設計不僅僅是ETL框架架構上的設計,還有很深的ETL項目管理和規范性控制器思想,包括後期的運維,基於BI的BI分析,ETL的性能調優都會在這些框架中得到體現。因為大的BI項目可能同時需要幾十人來開發ETL,框架的頂層設計就很重要。

③ 如何使用Airflow調度數據科學工作流

步驟一:安裝Airflow

docker pull airflow

1

docker pull airflow

步驟二:修改默認路徑

這里如果不修改路徑,默認的配置就是 ~/airflow

臨時修改 AIRFLOW_HOME 環境變數, 這里的 /home/airflow 可以替換成你想要的文件夾目錄

export AIRFLOW_HOME=/home/airflow

1

export AIRFLOW_HOME=/home/airflow

永久修改環境變數

echo "export AIRFLOW_HOME=/home/airflow" >> /etc/profile
source /etc/profile

1
2

echo "export AIRFLOW_HOME=/home/airflow" >> /etc/profile
source /etc/profile

系統默認的配置文件是從 airflow包的configuration.py文件中獲祥戚取的,在設置了路徑和airflow.cfg之後,配置培友將由airflow.cfg所替代。

步驟三:修改默認資料庫

找到配置文件

vi /home/airflow/airflow.cfg

1

vi /home/airflow/airflow.cfg

修改sql配置

sql_alchemy_conn = mysql://root:FinanceR@localhost:3306/airflow

1

sql_alchemy_conn = mysql://root:FinanceR@localhost:3306/謹中陵airflow

注意到,之前使用的 mysql+driver://root:FinanceR@localhost:3306/airflow的方式是行不通的。

初始化伺服器的資料庫

airflow initdb

1

airflow initdb

airflow webserver

1

airflow webserver

就可以開啟後台管理界面,默認訪問localhost:8080即可。

步驟四:修改數據源配置

通過create按鈕,添加相應的參數

步驟五:解決中文字元集顯示問題

注意到 airflow 的所有.py文件都聲明了 utf-8 字元集

# -*- coding: utf-8 -*-

1

# -*- coding: utf-8 -*-

如果需要顯示中文,需要在extra選項中添加
{"charset":"utf8"}的配置

④ 調度工具(ETL+任務流)

kettle是一個ETL工具,ETL(Extract-Transform-Load的縮寫,即數據抽取、轉換、裝載的過程)。
kettle中文名稱叫水壺,該項目的主程序員MATT 希望把各種數據放到一個壺里,然後以一種指定的格式流出。
所以他的重心是用於數據
oozie是一個工作流,Oozie工作流是放置在控制依賴DAG(有向無環圖桐頃 Direct Acyclic Graph)中的一組動作(例如,Hadoop的Map/Rece作業、Pig作業等),其中指定了動作執行的順序。
oozie工作流中是有數據流動的,但是重心是在於工作流的定義。
二者雖然都有相關功能及數據的流動,但是其實用途是不一樣的。

查看幫助

列舉出所有linux上的資料庫

列舉出所有Window上的資料庫

查看資料庫下的所有表

(1)確定mysql服務啟動正常

查詢控制埠和查詢進程來確定,一下兩種辦法可以確認mysql是否在啟動狀態

辦法1:查詢埠

MySQL監控的TCP的3306埠,如果顯示3306,證明MySQL服務在運行中

辦法二:查詢進程

可以看見mysql的進程

沒有指定數據導入到哪個目錄,默認是/user/root/表名

原因:

如果表中有主鍵,m的值可以設置大於1的值;如果沒有主鍵只能將m值設置成為1;或者要將m值大於1,需要使用--split-by指定一個欄位

設置了-m 1 說明只有一個maptask執行數據導入,默認是4個maptask執行導入操作,但是必須指定一個列來作為劃分依據

導入數據到指定目錄

在導入表數據到HDFS使用Sqoop導入工具,我們可以指定目標目錄。使用參數 --target-dir來指定導出目的地,使用參數—delete-target-dir來判斷導出目錄是否存在,如果存在就刪掉

查詢導入

提示:must contain '$CONDITIONS' in WHERE clause。

where id <=1 匹配條件

$CONDITIONS:傳遞作用。

如果 query 後使用的是雙引號,則 $CONDITIONS前必須加轉義符,防止 shell 識別為自己的變數。

--query時不能使用--table一起使用

需要指定--target-dir路徑

導入到hdfs指定目錄並指茄運定局納陸要求

數據導出儲存方式(數據存儲文件格式---( textfil parquet)--as-textfileImports data as plain text (default)--as-parquetfile Imports data to Parquet Files)

導入表數據子集到HDFS

sqoop導入blob數據到hive

對於CLOB,如xml文本,sqoop可以遷移到Hive表,對應欄位存儲為字元類型。
對於BLOB,如jpg圖片,sqoop無法直接遷移到Hive表,只能先遷移到HDFS路徑,然後再使用Hive命令載入到Hive表。遷移到HDFS後BLOB欄位存儲為16進制形式。

2.1.3導入關系表到Hive

第一步:導入需要的jar包

將我們mysql表當中的數據直接導入到hive表中的話,我們需要將hive的一個叫做hive-exec-1.1.0-cdh5.14.0.jar的jar包拷貝到sqoop的lib目錄下

第二步:開始導入

導入關系表到hive並自動創建hive表

們也可以通過命令來將我們的mysql的表直接導入到hive表當中去

通過這個命令,我們可以直接將我們mysql表當中的數據以及表結構一起倒入到hive當中去

--incremental 增量模式。

append id 是獲取一個某一列的某個值。

lastmodified 「2016-12-15 15:47:35」 獲取某個時間後修改的所有數據

-append 附加模式

-merge-key id 合並模式

--check-column 用來指定一些列,可以去指定多個列;通常的是指定主鍵id

--last -value 從哪個值開始增量

==注意:增量導入的時候,一定不能加參數--delete-target-dir 否則會報錯==

第一種增量導入方式(不常用)

1.Append方式

使用場景:有個訂單表,裡面每個訂單有一個唯一標識的自增列id,在關系型資料庫中以主鍵的形式存在。之前已經將id在0-1000之間的編號的訂單導入到HDFS 中;如果在產生新的訂單,此時我們只需指定incremental參數為append,--last-value參數為1000即可,表示只從id大於1000後開始導入。

(1)創建一個MySQL表

(2)創建一個hive表(表結構與mysql一致)

注意:

append 模式不支持寫入到hive表中

2.lastModify方式

此方式要求原有表有time欄位,它能指定一個時間戳,讓sqoop把該時間戳之後的數據導入到HDFS;因為後續訂單可能狀體會變化,變化後time欄位時間戳也會變化,此時sqoop依然會將相同狀態更改後的訂單導入HDFS,當然我們可以只當merge-key參數為order-id,表示將後續新的記錄和原有記錄合並。

# 將時間列大於等於閾值的數據增量導入HDFS

使用 lastmodified 方式導入數據,要指定增量數據是要 --append(追加)還是要 --merge-key(合並)last-value 指定的值是會包含於增量導入的數據中。

第二種增量導入方式(推薦)

==通過where條件選取數據更加精準==

2.1.5從RDBMS到HBase

會報錯

原因:sqoop1.4.6 只支持 HBase1.0.1 之前的版本的自動創建 HBase 表的功能。

解決方案:手動創建 HBase 表

導出前,目標表必須存在與目標資料庫中

默認操作是將文件中的數據使用insert語句插入到表中

數據是在HDFS當中的如下目錄/sqoop/emp,數據內容如下

第一步:創建MySQL表

第二步:執行導出命令

通過export來實現數據的導出,將hdfs的數據導出到mysql當中去

全量導出

增量導出

更新導出

總結:

參數介紹
--update-key 後面也可以接多個關鍵字列名,可以使用逗號隔開,Sqoop將會匹配多個關鍵字後再執行更新操作。
--export-dir 參數配合--table或者--call參數使用,指定了HDFS上需要將數據導入到MySQL中的文件集目錄。
--update-mode updateonly和allowinsert。 默認模式為updateonly,如果指定--update-mode模式為allowinsert,可以將目標資料庫中原來不存在的數據也導入到資料庫表中。即將存在的數據更新,不存在數據插入。
組合測試及說明
1、當指定update-key,且關系型資料庫表存在主鍵時:
A、allowinsert模式時,為更新目標資料庫表存的內容,並且原來不存在的數據也導入到資料庫表;
B、updateonly模式時,為更新目標資料庫表存的內容,並且原來不存在的數據也不導入到資料庫表;
2、當指定update-key,且關系型資料庫表不存在主鍵時:
A、allowinsert模式時,為全部數據追加導入到資料庫表;
B、updateonly模式時,為更新目標資料庫表存的內容,並且原來不存在的數據也不導入到資料庫表;
3、當不指定update-key,且關系型資料庫表存在主鍵時:
A、allowinsert模式時,報主鍵沖突,數據無變化;
B、updateonly模式時,報主鍵沖突,數據無變化;
4、當不指定update-key,且關系型資料庫表不存在主鍵時:
A、allowinsert模式時,為全部數據追加導入到資料庫表;
B、updateonly模式時,為全部數據追加導入到資料庫表;

實際案例:

(1)mysql批量導入hive

使用shell腳本:

筆者目前用sqoop把mysql數據導入到Hive中,最後實現命令行導入,sqoop版本1.4.7,實現如下

最後需要把這個導入搞成job,每天定時去跑,實現數據的自動化增量導入,sqoop支持job的管理,可以把導入創建成job重復去跑,並且它會在metastore中記錄增值,每次執行增量導入之前去查詢

創建job命令如下

創建完job就可以去執行它了

sqoop job --exec users

可以把該指令設為Linux定時任務,或者用Azkaban定時去執行它

hive導出到MySQL時,date類型數據發生變化?

問題原因:時區設置問題,date -R查看伺服器時間,show VARIABLES LIKE "%time_zone"查看Mysql時間,system並不表示中國的標准時間,要將時間設置為東八區

(1):對市面上最流行的兩種調度器,給出以下詳細對比,以供技術選型參考。總體來說,ooize相比azkaban是一個重量級的任務調度系統,功能全面,但配置使用也更復雜。如果可以不在意某些功能的缺失,輕量級調度器azkaban是很不錯的候選對象。

(2):功能:

兩者均可以調度maprece,pig,java,腳本工作流任務;

兩者均可以定時執行工作流任務;

(3):工作流定義:

Azkaban使用Properties文件定義工作流;

Oozie使用XML文件定義工作流;

(4):工作流傳參:

Azkaban支持直接傳參,例如${input};

Oozie支持參數和EL表達式,例如${fs:dirSize(myInputDir)};

(5):定時執行:

Azkaban的定時執行任務是基於時間的;

Oozie的定時執行任務基於時間和輸入數據;

(6):資源管理

Azkaban有較嚴格的許可權控制,如用戶對工作流進行讀/寫/執行等操作;

Oozie暫無嚴格的許可權控制;

(7):工作流執行:

Azkaban有兩種運行模式,分別是solo server mode(executor server和web server部署在同一台節點)和multi server mode(executor server和web server可以部署在不同節點);

Oozie作為工作流伺服器運行,支持多用戶和多工作流;

(8):工作流管理:

Azkaban支持瀏覽器以及ajax方式操作工作流;

Oozie支持命令行、HTTP REST、Java API、瀏覽器操作工作流;

瀏覽器頁面訪問

http://node03:8081/

使用Oozie時通常整合hue,用戶數據倉庫調度

就是剛才選擇的腳本

腳本里需要的參數,盡量設置為動態自動獲取,如 ${date}

第一步的參數是所有文件和當天日期,後面的只需要日期,最後一步是導出所有結果,相應填入

添加文件和設置相應參數

運行後會有狀態提示頁面,可以看到任務進度

點擊調度任務的頁面情況

修改定時任務名和描述

添加需要定時調度的任務

sm-workflow的參數都是寫死的,沒有設置動態,這里的下拉列表就不會有可選項。

設置參數

將sm-workflow的日期修改為 ${do_date},保存

進入定時計劃sm-dw中,會看到有參數 do_date

填入相應參數,前一天日期

Oozie常用系統常量

當然,也可以通過這樣將參數傳入workflow任務中,代碼或者shell中需要的參數。

如,修改sm-workflow 中的 sqoop_import.sh,添加一個參數 ${num}。

編輯文件(需要登陸Hue的用戶有對HDFS操作的許可權),修改shell中的一個值為參數,保存。

在workflow中,編輯添加參數 ${num} ,或者num=${num} 保存。

進入schele中,可以看到添加的參數,編輯輸入相應參數即可。

Bundle統一管理所有定時調度,階段劃分:Bundle > Schele > workflow

⑤ CTM:如何新建作業流

從前都是在同一個已經建好的作業流做JOB的CTM調度,現在新項目開發新主題需要新建作業流。不同的作業流代表不同的主題,在CTM的EXCEL調度文件中作業流的命名格式為:SEQ_***。

我的錯誤的作法是:最先是在應用程序CTM的Planning處找到SMART_FOLDER任務(TASK_開頭)所在處,打開並選定該作業,CHECK_OUT,拖新建的Folder在SEQ_層並根據需求命好名,CHECK_IN。在調度文件EXCEL文本的SUB_FOLDER定義信息把新建作作業流以及依賴關系模仿其他已存在作業流填進去。新建作業流需要和SEQ_層並根據需求命好名,CHECK_IN。在調度文件EXCEL文本的SUB_FOLDER定義信息把新建作業流以及依賴關系咐慶弊模仿其他已存在作業流填進去。新建作業流需要和SEQ_GETDATE_與SEQ_UPDATE_建立依賴關系。把該EXCEL通過網頁導進去後,在應用程序查看發現依賴關系並沒有建立。查詢了EXCEL填寫規范也沒有問題。這里犯的失誤是導入的EXCEL文件關於作業流的並不能產生影響(只有JOB定義信息和作業變更兩個SHEET對調度產生影響)這該怎麼辦?

正確的新建作業流方法是先把SEQ_在應用程序建好,在自主實施的情況下有兩種方法可以把依賴拉上。方法一是直接在界面對需要依賴的電子流拖上去,雙差改方形成對應箭頭;方法二是先CHECK_OUT,在新建作業流的參衡族數的PREREQUISITES(預請求站點)放置前置依賴,勾選DELETE,在ACTION處放置後置依賴,VALIDATE,CHECK_IN。依賴即可建上。自動實施的情況是把整個TASK_轉換成XML在平台上全量導入即可。後面的方法還沒試過。

⑥ 如何實現同步兩個伺服器的資料庫

同步兩個SQLServer資料庫x0dx0ax0dx0a如何同步兩個sqlserver資料庫的內容?程序代碼可以有版本管理cvs進行悶畝同步管理,可是資料庫同步就非常麻煩,只能自己改了一個後再去改另一個,如果忘記了更改另一個經常造成兩個資料庫的結構或內容上不一致.各位有什麼好的方法嗎?x0dx0ax0dx0a一、分發與復制x0dx0ax0dx0a用強制訂閱實現資料庫同步操作. 大量和批量的數據可以用資料庫的同步機制處理:x0dx0a//x0dx0a說明:x0dx0a為方便操作,所有操作均在發布伺服器(分發伺服器)上操作,並使用推模式x0dx0a在客戶機器使用強制訂閱方式。x0dx0ax0dx0a二、測試通過x0dx0ax0dx0a1:環境x0dx0ax0dx0a伺服器環境:x0dx0a機器名稱: zehuadbx0dx0a操作系統:windows 2000 serverx0dx0a資料庫版本:sql 2000 server 個人版x0dx0ax0dx0a客戶端x0dx0a機器名稱:zlpx0dx0a操作系統:windows 2000 serverx0dx0a資料庫版本:sql 2000 server 個人版x0dx0ax0dx0a2:建用戶帳號x0dx0ax0dx0a在伺服器端建立域用戶帳號x0dx0a我的電腦管理->本地用戶和組->用戶->建立x0dx0ausername:zlpx0dx0auserpwd:zlpx0dx0ax0dx0a3:重新啟動伺服器mssqlserverx0dx0ax0dx0a我的電腦->控制面版->管理工具->服務->mssqlserver 服務x0dx0a(更改為:域用戶帳號,我們新建的zlp用戶 .\zlp,密碼:zlp)x0dx0ax0dx0a4:安裝分發伺服器x0dx0ax0dx0aa:配置分發伺服器x0dx0a工具->復制->配置發布、訂閱伺服器和分發->下一步->下一步(所有的均採用默認配置)x0dx0ax0dx0ab:配置發布伺服器x0dx0a工具->復制->創建和管理發布->選擇要發布的資料庫(sz)->下一步->快照發布->下一步->選擇要發布的內容->下一步->下一步->下一步->完成x0dx0ax0dx0ac:強制配置訂閱伺服器(推模式,拉模式與此雷同)x0dx0a工具->復制->配置發布、訂閱伺服器和分發->訂閱伺服器->新建->sql server資料庫->輸入客戶端伺服器名稱(zlp)->使用sql server 身份驗證(sa,空密碼)->確定->應用->確定x0dx0ax0dx0ad:初始化訂閱x0dx0a復制監視器->發布伺服器(zehuadb)->雙擊訂閱->強制新建->下一步->選擇啟用的訂閱伺服器->zlp->下一步->下一步->下一步->下一步->完成x0dx0ax0dx0a5:測試配置是否成功x0dx0ax0dx0a復制監視器->發布衿?zehuadb)->雙擊sz:sz->點狀態->點立即運行代理程序x0dx0ax0dx0a查看:x0dx0a復制監視器->發布伺服器(zehuadb)->sz:sz->選擇zlp:sz(類型強制)->滑鼠右鍵->啟動同步處理x0dx0ax0dx0a如果沒有錯誤標志(紅色叉),恭喜您配置成功x0dx0ax0dx0a6:測試數據x0dx0ax0dx0a在伺服器執行:x0dx0ax0dx0a選毀罩吵擇一個表,執行如下sql: insert into wq_newsgroup_s select '測試成功',5x0dx0ax0dx0a復制監視器->發布伺服器(zehuadb)->sz:sz->快照->啟動代理程序 ->zlp:sz(強制)->啟動同步處理x0dx0ax0dx0a去查纖侍看同步的 wq_newsgroup_s 是否插入了一條新的記錄x0dx0ax0dx0a測試完畢,通過。x0dx0a7:修改資料庫的同步時間,一般選擇夜晚執行資料庫同步處理x0dx0a(具體操作略) :dx0dx0ax0dx0a/*x0dx0a注意說明:x0dx0a伺服器一端不能以(local)進行數據的發布與分發,需要先刪除注冊,然後新建注冊本地計算機名稱x0dx0ax0dx0a卸載方式:工具->復制->禁止發布->是在"zehuadb"上靜止發布,卸載所有的資料庫同步配置伺服器x0dx0ax0dx0a注意:發布伺服器、分發伺服器中的sqlserveragent服務必須啟動x0dx0a採用推模式: "d:\microsoft sql server\mssql\repldata\unc" 目錄文件可以不設置共享x0dx0a拉模式:則需要共享~!x0dx0a*/x0dx0a少量資料庫同步可以採用觸發器實現,同步單表即可。x0dx0ax0dx0a三、配置過程中可能出現的問題x0dx0ax0dx0a在sql server 2000里設置和使用資料庫復制之前,應先檢查相關的幾台sql server伺服器下面幾點是否滿足:x0dx0ax0dx0a1、mssqlserver和sqlserveragent服務是否是以域用戶身份啟動並運行的(.\administrator用戶也是可以的)x0dx0ax0dx0a如果登錄用的是本地系統帳戶local,將不具備網路功能,會產生以下錯誤:x0dx0ax0dx0a進程未能連接到distributor '@server name'x0dx0ax0dx0a(如果您的伺服器已經用了sql server全文檢索服務, 請不要修改mssqlserver和sqlserveragent服務的local啟動。x0dx0a會照成全文檢索服務不能用。請換另外一台機器來做sql server 2000里復制中的分發伺服器。)x0dx0ax0dx0a修改服務啟動的登錄用戶,需要重新啟動mssqlserver和sqlserveragent服務才能生效。x0dx0ax0dx0a2、檢查相關的幾台sql server伺服器是否改過名稱(需要srvid=0的本地機器上srvname和datasource一樣)x0dx0ax0dx0a在查詢分析器里執行:x0dx0ause masterx0dx0aselect srvid,srvname,datasource from sysserversx0dx0ax0dx0a如果沒有srvid=0或者srvid=0(也就是本機器)但srvname和datasource不一樣, 需要按如下方法修改:x0dx0ax0dx0ause masterx0dx0agox0dx0a-- 設置兩個變數x0dx0adeclare @serverproperty_servername varchar(100),x0dx0a@servername varchar(100)x0dx0a-- 取得windows nt 伺服器和與指定的 sql server 實例關聯的實例信息x0dx0aselect @serverproperty_servername = convert(varchar(100), serverproperty('servername'))x0dx0a-- 返回運行 microsoft sql server 的本地伺服器名稱x0dx0aselect @servername = convert(varchar(100), @@servername)x0dx0a-- 顯示獲取的這兩個參數x0dx0aselect @serverproperty_servername,@servernamex0dx0a--如果@serverproperty_servername和@servername不同(因為你改過計算機名字),再運行下面的x0dx0a--刪除錯誤的伺服器名x0dx0aexec sp_dropserver @server=@servernamex0dx0a--添加正確的伺服器名x0dx0aexec sp_addserver @server=@serverproperty_servername, @local='local'x0dx0ax0dx0a修改這項參數,需要重新啟動mssqlserver和sqlserveragent服務才能生效。x0dx0ax0dx0a這樣一來就不會在創建復制的過程中出現18482、18483錯誤了。x0dx0ax0dx0a3、檢查sql server企業管理器裡面相關的幾台sql server注冊名是否和上面第二點里介紹的srvname一樣x0dx0ax0dx0a不能用ip地址的注冊名。x0dx0ax0dx0a(我們可以刪掉ip地址的注冊,新建以sql server管理員級別的用戶注冊的伺服器名)x0dx0ax0dx0a這樣一來就不會在創建復制的過程中出現14010、20084、18456、18482、18483錯誤了。x0dx0ax0dx0a4、檢查相關的幾台sql server伺服器網路是否能夠正常訪問x0dx0ax0dx0a如果ping主機ip地址可以,但ping主機名不通的時候,需要在x0dx0ax0dx0awinnt\system32\drivers\etc\hosts (win2000)x0dx0awindows\system32\drivers\etc\hosts (win2003)x0dx0ax0dx0a文件里寫入資料庫伺服器ip地址和主機名的對應關系。x0dx0ax0dx0a例如:x0dx0ax0dx0a127.0.0.1 localhostx0dx0a192.168.0.35 oracledb oracledbx0dx0a192.168.0.65 fengyu02 fengyu02x0dx0a202.84.10.193 bj_db bj_dbx0dx0a或者在sql server客戶端網路實用工具里建立別名,例如:x0dx0a5、系統需要的擴展存儲過程是否存在(如果不存在,需要恢復):x0dx0ax0dx0asp_addextendedproc 'xp_regenumvalues',@dllname ='xpstar.dll'x0dx0agox0dx0asp_addextendedproc 'xp_regdeletevalue',@dllname ='xpstar.dll'x0dx0agox0dx0asp_addextendedproc 'xp_regdeletekey',@dllname ='xpstar.dll'x0dx0agox0dx0asp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll' x0dx0ax0dx0a接下來就可以用sql server企業管理器里[復制]-> 右鍵選擇 ->[配置發布、訂閱伺服器和分發]的圖形界面來配置資料庫復制了。x0dx0ax0dx0a下面是按順序列出配置復制的步驟:x0dx0ax0dx0a1、建立發布和分發伺服器x0dx0ax0dx0a[歡迎使用配置發布和分發向導]->[選擇分發伺服器]->[使"@servername"成為它自己的分發伺服器,sql server將創建分發資料庫和日誌]x0dx0a->[制定快照文件夾]-> [自定義配置] -> [否,使用下列的默認配置] -> [完成]x0dx0ax0dx0a上述步驟完成後, 會在當前"@servername" sql server資料庫里建立了一個distribion庫和 一個distributor_admin管理員級別的用戶(我們可以任意修改密碼)。x0dx0ax0dx0a伺服器上新增加了四個作業:x0dx0ax0dx0a[ 代理程序歷史記錄清除: distribution ]x0dx0a[ 分發清除: distribution ]x0dx0a[ 復制代理程序檢查 ]x0dx0a[ 重新初始化存在數據驗證失敗的訂閱 ]x0dx0ax0dx0asql server企業管理器里多了一個復制監視器, 當前的這台機器就可以發布、分發、訂閱了。x0dx0ax0dx0a我們再次在sql server企業管理器里[復制]-> 右鍵選擇 ->[配置發布、訂閱伺服器和分發]x0dx0ax0dx0a我們可以在 [發布伺服器和分發伺服器的屬性] 窗口-> [發布伺服器] -> [新增] -> [確定] -> [發布資料庫] -> [事務]/[合並] -> [確定] -> [訂閱伺服器] -> [新增] -> [確定]x0dx0ax0dx0a把網路上的其它sql server伺服器添加成為發布或者訂閱伺服器.x0dx0ax0dx0a新增一台發布伺服器的選項:x0dx0ax0dx0a我這里新建立的jin001發布伺服器是用管理員級別的資料庫用戶test連接的,x0dx0ax0dx0a到發布伺服器的管理鏈接要輸入密碼的可選框, 默認的是選中的,x0dx0ax0dx0a在新建的jin001發布伺服器上建立和分發伺服器fengyu/fengyu的鏈接的時需要輸入distributor_admin用戶的密碼。到發布伺服器的管理鏈接要輸入密碼的可選框,也可以不選,也就是不需要密碼來建立發布到分發伺服器的鏈接(這當然欠缺安全,在測試環境下可以使用)。x0dx0ax0dx0a2、新建立的網路上另一台發布伺服器(例如jin001)選擇分發伺服器x0dx0ax0dx0a[歡迎使用配置發布和分發向導]->[選擇分發伺服器]x0dx0ax0dx0a-> 使用下列伺服器(選定的伺服器必須已配置為分發伺服器) -> [選定伺服器](例如fengyu/fengyu)x0dx0ax0dx0a-> [下一步] -> [輸入分發伺服器(例如fengyu/fengyu)的distributor_admin用戶的密碼兩次]x0dx0ax0dx0a-> [下一步] -> [自定義配置] -> [否,使用下列的默認配置]x0dx0ax0dx0a-> [下一步] -> [完成] -> [確定]x0dx0ax0dx0a建立一個資料庫復制發布的過程:x0dx0ax0dx0a[復制] -> [發布內容] -> 右鍵選擇 -> [新建發布]x0dx0ax0dx0a-> [下一步] -> [選擇發布資料庫] -> [選中一個待發布的資料庫]x0dx0ax0dx0a-> [下一步] -> [選擇發布類型] -> [事務發布]/[合並發布]x0dx0ax0dx0a-> [下一步] -> [指定訂閱伺服器的類型] -> [運行sql server 2000的伺服器]x0dx0ax0dx0a-> [下一步] -> [指定項目] -> [在事務發布中只可以發布帶主鍵的表] -> [選中一個有主鍵的待發布的表]x0dx0ax0dx0a->[在合並發布中會給表增加唯一性索引和 rowguidcol 屬性的唯一標識符欄位[rowguid],默認值是newid()]x0dx0ax0dx0a(添加新列將: 導致不帶列列表的 insert 語句失敗,增加表的大小,增加生成第一個快照所要求的時間)x0dx0ax0dx0a->[選中一個待發布的表]x0dx0ax0dx0a-> [下一步] -> [選擇發布名稱和描述] ->x0dx0ax0dx0a-> [下一步] -> [自定義發布的屬性] -> [否,根據指定方式創建發布]x0dx0ax0dx0a-> [下一步] -> [完成] -> [關閉]x0dx0ax0dx0a發布屬性里有很多有用的選項:設定訂閱到期(例如24小時)x0dx0ax0dx0a設定發布表的項目屬性:x0dx0ax0dx0a常規窗口可以指定發布目的表的名稱,可以跟原來的表名稱不一樣。x0dx0ax0dx0a下圖是命令和快照窗口的欄目x0dx0ax0dx0a( sql server 資料庫復制技術實際上是用insert,update,delete操作在訂閱伺服器上重做發布伺服器上的事務操作x0dx0ax0dx0a看文檔資料需要把發布資料庫設成完全恢復模式,事務才不會丟失x0dx0ax0dx0a但我自己在測試中發現發布資料庫是簡單恢復模式下,每10秒生成一些大事務,10分鍾後再收縮資料庫日誌,x0dx0a這期間發布和訂閱伺服器上的作業都暫停,暫停恢復後並沒有丟失任何事務更改 )x0dx0ax0dx0a發布表可以做數據篩選,例如只選擇表裡面的部分列:x0dx0ax0dx0a例如只選擇表裡某些符合條件的記錄, 我們可以手工編寫篩選的sql語句:x0dx0ax0dx0a發布表的訂閱選項,並可以建立強制訂閱:x0dx0ax0dx0a成功建立了發布以後,發布伺服器上新增加了一個作業: [ 失效訂閱清除 ]x0dx0ax0dx0a分發伺服器上新增加了兩個作業:x0dx0a[ jin001-dack-dack-5 ] 類型[ repl快照 ]x0dx0a[ jin001-dack-3 ] 類型[ repl日誌讀取器 ]x0dx0ax0dx0a上面藍色字的名稱會根據發布伺服器名,發布名及第幾次發布而使用不同的編號x0dx0ax0dx0arepl快照作業是sql server復制的前提條件,它會先把發布的表結構,數據,索引,約束等生成到發布伺服器的os目錄下文件x0dx0a(當有訂閱的時候才會生成, 當訂閱請求初始化或者按照某個時間表調度生成)x0dx0ax0dx0arepl日誌讀取器在事務復制的時候是一直處於運行狀態。(在合並復制的時候可以根據調度的時間表來運行)x0dx0ax0dx0a建立一個資料庫復制訂閱的過程:x0dx0ax0dx0a[復制] -> [訂閱] -> 右鍵選擇 -> [新建請求訂閱]x0dx0ax0dx0a-> [下一步] -> [查找發布] -> [查看已注冊伺服器所做的發布]x0dx0ax0dx0a-> [下一步] -> [選擇發布] -> [選中已經建立發布伺服器上的資料庫發布名]x0dx0ax0dx0a-> [下一步] -> [指定同步代理程序登錄] -> [當代理程序連接到代理伺服器時:使用sql server身份驗證]x0dx0a(輸入發布伺服器上distributor_admin用戶名和密碼)x0dx0ax0dx0a-> [下一步] -> [選擇目的資料庫] -> [選擇在其中創建訂閱的資料庫名]/[也可以新建一個庫名]x0dx0ax0dx0a-> [下一步] -> [允許匿名訂閱] -> [是,生成匿名訂閱]x0dx0ax0dx0a-> [下一步] -> [初始化訂閱] -> [是,初始化架構和數據]x0dx0ax0dx0a-> [下一步] -> [快照傳送] -> [使用該發布的默認快照文件夾中的快照文件]x0dx0a(訂閱伺服器要能訪問發布伺服器的repldata文件夾,如果有問題,可以手工設置網路共享及共享許可權)x0dx0ax0dx0a-> [下一步] -> [快照傳送] -> [使用該發布的默認快照文件夾中的快照文件]x0dx0ax0dx0a-> [下一步] -> [設置分發代理程序調度] -> [使用下列調度] -> [更改] -> [例如每五分鍾調度一次]x0dx0ax0dx0a-> [下一步] -> [啟動要求的服務] -> [該訂閱要求在發布伺服器上運行sqlserveragent服務]x0dx0ax0dx0a-> [下一步] -> [完成] -> [確定]x0dx0ax0dx0a成功建立了訂閱後,訂閱伺服器上新增加了一個類別是[repl-分發]作業(合並復制的時候類別是[repl-合並])x0dx0ax0dx0a它會按照我們給的時間調度表運行資料庫同步復制的作業。x0dx0ax0dx0a3、sql server復制配置好後, 可能出現異常情況的實驗日誌:x0dx0ax0dx0a1.發布伺服器斷網,sql server服務關閉,重啟動,關機的時候,對已經設置好的復制沒有多大影響x0dx0ax0dx0a中斷期間,分發和訂閱都接收到沒有復制的事務信息x0dx0ax0dx0a2.分發伺服器斷網,sql server服務關閉,重啟動,關機的時候,對已經設置好的復制有一些影響x0dx0ax0dx0a中斷期間,發布伺服器的事務排隊堆積起來x0dx0a(如果設置了較長時間才刪除過期訂閱的選項, 繁忙發布資料庫的事務日誌可能會較快速膨脹),x0dx0ax0dx0a訂閱伺服器會因為訪問不到發布伺服器,反復重試x0dx0a我們可以設置重試次數和重試的時間間隔(最大的重試次數是9999, 如果每分鍾重試一次,可以支持約6.9天不出錯)x0dx0ax0dx0a分發伺服器sql server服務啟動,網路接通以後,發布伺服器上的堆積作業將按時間順序作用到訂閱機器上:x0dx0ax0dx0a會需要一個比較長的時間(實際上是生成所有事務的insert,update,delete語句,在訂閱伺服器上去執行)x0dx0a我們在普通的pc機上實驗的58個事務100228個命令執行花了7分28秒.x0dx0ax0dx0a3.訂閱伺服器斷網,sql server服務關閉,重啟動,關機的時候,對已經設置好的復制影響比較大,可能需要重新初試化x0dx0ax0dx0a我們實驗環境(訂閱伺服器)從18:46分意外停機以, 第二天8:40分重啟動後, 已經設好的復制在8:40分以後又開始正常運行了, 發布伺服器上的堆積作業將按時間順序作用到訂閱機器上, 但復制管理器里出現快照的錯誤提示, 快照可能需要重新初試化,復制可能需要重新啟動.(我們實驗環境的機器並沒有進行快照初試化,復制仍然是成功運行的)x0dx0ax0dx0a4、刪除已經建好的發布和定閱可以直接用delete刪除按鈕x0dx0ax0dx0a我們最好總是按先刪定閱,再刪發布,最後禁用發布的順序來操作。x0dx0ax0dx0a如果要徹底刪去sql server上面的復制設置, 可以這樣操作:x0dx0ax0dx0a[復制] -> 右鍵選擇 [禁用發布] -> [歡迎使用禁用發布和分發向導]x0dx0ax0dx0a-> [下一步] -> [禁用發布] -> [要在"@servername

⑦ sqlserver歷史記錄遷移

sqlserver資料庫遷移的幾種方式

方法一:將Microsoft SQL ServerMSSQLDATA文件夾中的syntt_data.mdf和syntt_log.ldf文件復制到安裝有資料庫伺服器的機器的文件夾中(可以是本機的Microsoft SQL ServerMSSQLDATA文件夾),然後進入企業管理器。

右鍵點擊「資料庫」,在浮動菜單中選擇「所有任務」中的「附加資料庫」。在隨後的提示頁面中選擇剛才復制過來的.MDF文件,如果想指定資料庫的所有者,在「指定資料庫所有者」選擇框中選擇你認為合適的用戶。

如果想修改資料庫的名字,可在「附加為」框中輸入新的資料庫名字(對本資料庫,不建議這么做,因為這樣的話,整個程序中所有涉及資料庫連接的代碼都要隨之修改,那將是不必要的勞動)。在進行完上述的工作之後,直接點擊「確定」就可進行數據的SQL Server 數據轉移轉移。

方法二:(方嘩帆法一)是針對資料庫中沒有本資料庫的伺服器,如果資料庫中已經建有與該資料庫名稱相同的資料庫,則直接按照備份資料庫的恢復操作就可完成數據的SQL Server 數據轉移轉移。方法如下所述:這種方法首先要在本機上建立一個備份文件,具體操作介紹如下:1、 在企業管理器中打開伺服器組以及指定的伺服器。

然後右鍵點擊需要備份的資料庫在這里是syntt,在浮動菜單中選擇「所有任務」菜單下的「備份資料庫」,打開數據備份對話框。2、 選擇「常規」選項卡,在名稱對話框中中行輸入本分 *** 名稱,在「描述」文本框中輸入備份集描述文本信息。

在「備份」組下選擇備份操作類型,共有以下幾種:資料庫—完全:完整備份資料庫。資料庫—差異:增量備份資料庫。

事務日誌:事務日誌備份。文件和文件組:資料庫文件和文件組備份。

在「目的」組中指定備份設備或者備份文件名稱,選擇「添加」按鈕添加備份設備或者文件;「刪除」按鈕用來刪除備份設備和備份文件;選擇「內容」按鈕,則可查看已經存儲在備份設備或文件中的備份信息。在「重寫」組中有兩種選項:追加到媒體:選擇該選項,表示需要保存備份設備或文件中以前的備份數據。

重寫現有媒體:要求本次被分數據覆蓋以前的備份數據,從而節省存儲空間。在「調度」組中,安排數據備份的時間。

用來指定資料庫備份在將來的某個時間執行3、 「選項」選項卡,設置資料庫備份操作選項。其中的內容主要有以下幾項:完成後驗證備份:要求在備份結束時對備份數據進行校驗。

備份後彈出磁帶:只對磁帶備份設備有效,他要求在備份結束時自動卸帶。刪除事務日誌中不活動的條目:要求在事務日誌備份結束時刪除事務日誌中的已經完成的事務日誌條目。

檢查媒體集名稱和備份集到期時間:要求在備份前檢查介質集名稱和原備份集中備份SQL Server 數賣蘆嘩據轉移的有效期,以防止意外重寫破壞原來的備份數據。備份集到期時間:設置備份集的有效期。

初始化並標識媒體:只對磁帶設備有效。選擇該選項後,SQL Server在備份時將Microsoft定義的磁帶格式信息寫入介質的開始部分。

此時,可以在「媒體集名稱」和「媒體集描述」文本框中定義介質集名稱和介質描述信息。4、 在進行完上述的操作之後,剩下的任務就是點擊「確定」,使系統開始進行資料庫的備份操作。

到目前為止,我們已經有了一個資料庫的備份文件,剩下的任務就是怎麼將這個文件還原至另外的資料庫伺服器中了。1、因為使用企業管理器進行資料庫的恢復只能是在本機進行,所以在進行數據還原之前,必須將剛才所作的備份文件復制到本機,然後在本機選擇「syntt」資料庫,右鍵點擊它,在顯示出來的浮動菜單中選擇「所有任務」下的「還原資料庫」。

2、在還原資料庫對話框中,在「常規」選項卡中的選擇「從設備」的數據恢復方法,通過「選擇設備」按鈕選擇剛才復制過來的文件。「常規」選項卡與「選項」選項卡中的具體內容如下所示:「常規」選項卡:資料庫恢復方法:包括「資料庫」、「文件組或文件」、「從設備」三種恢復方式。

「資料庫」方式:選擇該項時,從「顯示資料庫備份」列表中選擇需要顯示的指定資料庫備份 *** ,從「要還原的第一個備份」列表框中選擇首先使用哪一個備份集恢復資料庫;「文件組或文件」:選擇它時,資料庫恢復部件列出指定資料庫備份 *** 中備份的資料庫文件或文件組,管理員可從這些備份文件中選擇恢復那個資料庫文件或文件組;「從設備」:選擇它時,管理員選擇恢復資料庫或其日誌所使用的備份設備,之後再從該備份設備中選擇使用哪一次備份中的數據恢復資料庫或其日誌。3、點擊「確定」,完成恢復操作。

非原創。

sql server中有行遷移現象嗎

有的,和oracle一樣,SQL中也有行遷移行遷移記包含forwarding_stub 和forwarded 兩種類型。

這兩類記錄是因為數據頁不能容納更新後的記錄而產生的,不是因為記錄長度超過8060B引起的,所以這兩類記錄依然是行內記錄,與行溢出記錄是不同的。這兩種記錄總是成對出現的,當出現forwarding_stub時,在別的頁面中一定有與之對應的一條forwarded記錄。

forwarding記錄也叫forwarding_stub記錄,記錄頭標志為0x04,它是一條完整的數據記錄。雖然結構看起來特殊,但還是符合一般記錄的結構,記錄中主要內容就是在行中用8位元組保存了指向移出後的記錄的位置指針。

forwarded 記錄,有時直接叫做遷移記錄。記錄頭部標志為0x32. 它也是一條完整記錄,格式跟一般記錄略有差異,大體結構還是相同的。

這里是存儲了溢出前的那條記錄的真實數據。 這兩種記錄的具體存儲結構比較簡單和直觀,其邏輯結構會在下面的實例列舉中結合具體數據記錄來分析說明。

測試這種的方法太長了,不在這里具體列出,你可以到51CTO裡面找一下,搜索SQL行遷移有具體的測試方法。

sql server中有行遷移現象嗎

有的,和oracle一樣,SQL中也有行遷移

行遷移記包含forwarding_stub 和forwarded 兩種類型。這兩類記錄是因為數據頁不能容納更新後的記錄而產生的,不是因為記錄長度超過8060B引起的,所以這兩類記錄依然是行內記錄,與行溢出記錄是不同的。

這兩種記錄總是成對出現的,當出現forwarding_stub時,在別的頁面中一定有與之對應的一條forwarded記錄。

forwarding記錄也叫forwarding_stub記錄,記錄頭標志為0x04,它是一條完整的數據記錄。雖然結構看起來特殊,但還是符合一般記錄的結構,記錄中主要內容就是在行中用8位元組保存了指向移出後的記錄的位置指針。

forwarded 記錄,有時直接叫做遷移記錄。記錄頭部標志為0x32. 它也是一條完整記錄,格式跟一般記錄略有差異,大體結構還是相同的。這里是存儲了溢出前的那條記錄的真實數據。

這兩種記錄的具體存儲結構比較簡單和直觀,其邏輯結構會在下面的實例列舉中結合具體數據記錄來分析說明。

測試這種的方法太長了,不在這里具體列出,你可以到51CTO裡面找一下,搜索SQL行遷移有具體的測試方法

SQL資料庫如何自動備份和恢復

一、備份資料庫

1、打開SQL企業管理器,在控制台根目錄中依次點開Microsoft SQL Server

2、SQL Server組-->;雙擊打開你的伺服器-->;雙擊打開資料庫目錄

3、選擇你的資料庫名稱(如論壇資料庫Forum)-->;然後點上面菜單中的工具-->;選擇備份資料庫

4、備份選項選擇完全備份,目的中的備份到如果原來有路徑和名稱則選中名稱點刪除,然後點添加,如果原來沒有路徑和名稱則直接選擇添加,接著指定路徑和文件名,指定後點確定返回備份窗口,接著點確定進行備份

二、還原資料庫

1、打開SQL企業管理器,在控制台根目錄中依次點開Microsoft SQL Server

2、SQL Server組-->;雙擊打開你的伺服器-->;點圖標欄的新建資料庫圖標,新建資料庫的名字自行取

3、點擊新建好的資料庫名稱-->;然後點上面菜單中的工具-->;選擇恢復資料庫

4、在彈出來的窗口中的還原選項中選擇從設備-->;點選擇設備-->;點添加-->;然後選擇你的備份文件名-->;添加後點確定返回,這時候設備欄應該出現您剛才選擇的資料庫備份文件名,備份號默認為1(如果您對同一個文件做過多次備份,可以點擊備份號旁邊的查看內容,在復選框中選擇最新的一次備份後點確定)-->;然後點擊上方常規旁邊的選項按鈕

5、在出現的窗口中選擇在現有資料庫上強制還原,以及在恢復完成狀態中選擇使資料庫可以繼續運行但無法還原其它事務日誌的選項。在窗口的中間部位的將資料庫文件還原為這里要按照你SQL的安裝進行設置(也可以指定自己的目錄),邏輯文件名不需要改動,移至物理文件名要根據你所恢復的機器情況做改動,如您的SQL資料庫裝在D:Program FilesMicrosoft SQL ServerMSSQLData,那麼就按照您恢復機器的目錄進行相關改動改動,並且最後的文件名最好改成您當前的資料庫名(如原來是zw0001.mdf,現在的資料庫是zw0002,就改成zw0002.mdf),日誌和數據文件都要按照這樣的方式做相關的改動(日誌的文件名是.ldf結尾的),這里的恢復目錄您可以自由設置,前提是該目錄必須存在(如您可以指定d:sqldatazw0002.mdf或者d:sqldatazw0002.ldf),否則恢復將報錯

6、修改完成後,點擊下面的確定進行恢復,這時會出現一個進度條,提示恢復的進度,恢復完成後系統會自動提示成功,如中間提示報錯,請記錄下相關的錯誤內容並詢問對SQL操作比較熟悉的人員,一般的錯誤無非是目錄錯誤或者文件名重復或者文件名錯誤或者空間不夠或者資料庫正在使用中的錯誤,資料庫正在使用的錯誤您可以嘗試關閉所有關於SQL窗口然後重新打開進行恢復操作,如果還提示正在使用的錯誤可以將SQL服務停止然後重起看看,至於上述其它的錯誤一般都能按照錯誤內容做相應改動後即可恢復

如何設置才能使sql每半小時備份一次

SQL Server資料庫備份工具 2.2

資料庫使用過程中歷史表記錄的增多資料庫的增大導致以下問題的出現

1 資料庫性能大幅下降

2 報表生成等要求資料庫大數據量操作時導致資料庫響應短暫停止甚至完全停止響應

3 資料庫備份或同步等資料庫維護時間加長

本程序為綠色軟體無需安裝, 正確配置參數後即可運行,通過使用備份計劃(可配置)定時將資料庫中歷史表的歷史記錄轉移到備份機器上,減小生產機運行資料庫,轉移報表生成等大幅佔用資料庫操作到備機以減小生產機壓力

實現說明:

1 增加一台備份機器

2 備機上建立一個還原庫用以還原當前資料庫的備份和一個歷史庫用以保存歷史數據

3 根據調度計劃定時將當前生產機資料庫備份到備機

4 還原備機還原庫並將還原庫中新增或更新數據導入備機歷史庫,目的為盡量少的佔用當前資料庫而使用備機資源

5 刪除生產機資料庫中已成功轉移的歷史數據

6 刪除使用過的文件和清理資料庫日誌,減少磁碟佔用

特點:

1 所有參數可配置

2 佔用生產機資料庫資源少, 僅備份操作(歷史表數據轉移後備份時間大大減短且大多數情況下僅進行差異備份)

3 操作速度快,且費時操作部分都基本在備機,不佔用生產機資源

4 自動備份當前資料庫日誌和截斷備份機器上資料庫日誌

5 自動刪除使用過的文件,減少磁碟空間佔用

6 整個操作過程提供詳細錯誤日誌以方便維護

7 與SQL SERVER自帶的發布訂閱功能不同,歷史數據只在備機上保留一份(如需備份備機歷史數據請自行解決或定製此需求),生產機資料庫只保留有生產必須的數據量即可,可盡可能的減少當前生產機資料庫的數據量減少資源佔用,將歷史數據轉移到備機上

8 無需更改現有系統

9 和其他備份程序的區別:主要針對歷史數據轉移需求,資料庫備份只是一個前提,轉移歷史數據減小生產機資料庫壓力才是此程序的實質

升級說明:

1 去除所有標識部分,供公共使用

2 延長一次運行時間限制到30天

附:

1 如果有意請聯系public_release@sina

2 可提供源代碼(vc)和實現其他定製需求

3 此共享發布程序每次運行限制為30天(可放開),請不要相信其他的所謂破解版,實為其他非善意軟體的安裝程序包,如果不想有一次運行30天的限制,使用額外的程序在29天時關閉程序後重新啟動即可

如何查詢SQL Server備份還原歷史記錄

SQL Server在msdb數據中維護了一系列表,用來存儲執行所有備份和還原的細節信息。即使你正在使用第三方的備份應用程序,只要這個應用程序使用SQL Server的虛擬設備介面(Virtual Device Interface---VDI)來執行備份和還原執行,那麼執行細節依然被存儲在這一系列表中。

存儲細節的表包括:

backupset

backupfile

backupfilegroup (SQL Server 2005 upwards)

backupmediaset

backupmediafamily

restorehistory

restorefile

restorefilegroup

logmarkhistory

suspect_pages (SQL Server 2005 upwards)

你可以在Books Online裡面找到上面這些表的具體說明。

下面這個腳本可以幫你找出每個資料庫近期的備份信息:

SELECT b.name, a.type, MAX(a.backup_finish_date) lastbackup

FROM msdb..backupset a

INNER JOIN master..sysdatabases b ON a.database_name COLLATE DATABASE_DEFAULT = b.name COLLATE DATABASE_DEFAULT

GROUP BY b.name, a.type

ORDER BY b.name, a.type

指定資料庫最後20條事務日誌備份信息:

SELECT TOP 20 b.physical_device_name, a.backup_start_date, a.first_lsn, a.user_name FROM msdb..backupset a

INNER JOIN msdb..backupmediafamily b ON a.media_set_id = b.media_set_id

WHERE a.type = 'L'

ORDER BY a.backup_finish_date DESC

指定時間段的事務日誌備份信息:

SELECT b.physical_device_name, a.backup_set_id, b.family_sequence_number, a.position, a.backup_start_date, a.backup_finish_date

FROM msdb..backupset a

INNER JOIN msdb..backupmediafamily b ON a.media_set_id = b.media_set_id

WHERE a.database_name = 'AdventureWorks'

AND a.type = 'L'

AND a.backup_start_date > ཆ-Jan-2007'

AND a.backup_finish_date

⑧ 資料庫分區過多調度跑批寫入數據報錯

資料庫分區過多調度跑批寫入數據報錯的解決辦法:
1、指豎第一步,建分區表時,對資料庫唯岩大操作,修正groupby的錯誤。
2、查看分區。
3、刪除分區,恢復原表。
4、建立分區,需要分區的主表如果存在id主鍵,那麼分區時間欄位也應設置為第二主鍵。
5、建立觸發事件。資料庫分區是一種物理資料庫設計技術,棗衫DBA和資料庫建模人員對其相當熟悉,其主要目的是為了在特定的SQL操作中減少數據讀寫的總量以縮減響應時間。

⑨ 本地sql資料庫怎麼與遠程sql資料庫同步

MySQL

MySQL數據同步主要有三種方式:
1.利用MySQL自身的資料庫同步功能
2.利用MySQL資料庫的特性(資料庫存在固頂目錄,並且以文件形式存儲),進行資料庫目錄同步以達到數據同步目的
3.利用專用的MySQL資料庫同步軟體

1.利用MySQL自身的資料庫同步功能(下面參考自網上的文章,寫的非常詳細了)
MySQL從3.23.15版本以後提供資料庫復制功能。利用該功能可以實現兩個資料庫同步,主從模式,互相備份模式的功能.

資料庫同步復制功能的設置都在mysql的設置文件中體現。mysql的配置文件(一般是my.cnf),在unix環境下在/etc/mysql/my.cnf或者在mysql用戶的home目錄下的my.cnf。

windows環境中,如果c:根目錄下有my.cnf文件則取該配置文件。當運行mysql的winmysqladmin.exe工具時候,該工具會把c:根目錄下的my.cnf命名為mycnf.bak。並在winnt目錄下創建my.ini。mysql伺服器啟動時候會讀該配置文件。所以可以把my.cnf中的內容拷貝到my.ini文件中,用my.ini文件作為mysql伺服器的配置文件。

設置方法:
設置範例環境:
操作系統:window2000professional
mysql:4.0.4-beta-max-nt-log
Aip:10.10.10.22
Bip:10.10.10.53
A:設置
1.增加一個用戶最為同步的用戶帳號:
GRANTFILEON*.*TObackup@'10.10.10.53'IDENTIFIEDBY『1234』
2.增加一個資料庫作為同步資料庫:
createdatabasebackup
B:設置
1.增加一個用戶最為同步的用戶帳號:
GRANTFILEON*.*TObackup@'肆世10.10.10.22'IDENTIFIEDBY『1234』裂慶肢
2.增加一個資料庫作為同步資料庫:
createdatabasebackup
主從模式:A->B
A為master
修改Amysql的my.ini文件。在mysqld配置項中加入下面配置:
server-id=1
log-bin
#設置需要記錄log可以設置log-bin=c:mysqlbakmysqllog設置日誌文件的目錄,
#其中mysqllog是日誌文件的名稱,mysql將建立不同擴展名,文件名為mysqllog的幾個日誌文件。
binlog-do-db=backup#指定需要日誌的資料庫
重起資料庫服務。
用showmasterstatus命令看日誌情況。
B為slave
修改Bmysql的my.ini文件。在mysqld配置項中加入下面配置:
server-id=2
master-host=10.10.10.22
master-user=backup#同步用戶帳號
master-password=1234
master-port=3306
master-connect-retry=60預設重試間隔60秒
replicate-do-db=backup告訴slave只做backup資料庫的更新
重起資料庫
用showslavestatus看同步配置情況。
注意:由於設置了slave的配置信息,mysql在資料庫目錄下生成master.info
所以如有要修改相關slave的配置要先刪除該文件。否則修改的配置不能生效。
雙機互備模式。
如果在A加入slave設置,在B加入master設置,則可以做B->A的同步。
在A的配置文件中mysqld配置項加入以下設置:
master-host=10.10.10.53
master-user=backup
master-password=1234
replicate-do-db=backup
master-connect-retry=10
在B的配置文件中mysqld配置項加入以下設置:
log-bin=c:mysqllogmysqllog
binlog-do-db=backup
注意:當有錯誤產生時*.err日誌差滲文件。同步的線程退出,當糾正錯誤後要讓同步機制進行工作,運行slavestart
重起AB機器,則可以實現雙向的熱備。
測試:
向B批量插入大數據量表AA(1872000)條
A資料庫每秒鍾可以更新2500條數據。

2.資料庫目錄同步,方法和文件同步一樣,設置好需要同步的兩個資料庫目錄就可以了!
缺點很明顯,數據同步只能單向進行,可以作為備份方案

3.用專用的MySQL同步軟體進行同步
這方面的軟體有SQLBalance和MyReplicator,優點是方便直觀,還有很多爭強功能!
缺點和2一樣,只能單項同步!
當然你也可以修改鏡像網站的程序為提交數據到母資料庫,讀取則在當前鏡像下的數據,不過,修改起來麻煩!普通用戶修改也非常難!呵呵,大家了解一下就可以!給大家一個思路!有能力的朋友可以試試阿!

4.關於MySQL論壇的數據同步
由於數據來源的不可控制(不好表達),論壇數據是實時的,而且還要考慮來自鏡像論壇的數據,如何實現鏡像論壇與母論壇數據同步呢?
用1中介紹的MySQL自帶的資料庫同步功能互相備份模式就可以實現的!
不過,具體的應用我沒有測試!穩定性不敢保證!
有能力的朋友推薦用下面這種思路來同步,相對來說減少點效率,但能減少發生的錯誤!
比如鏡像論壇數據同步:
1.母論壇和鏡像論壇的數據全寫在母論壇資料庫里,主從模式,讀取只在本地讀取,這個需要修改程序!

2.每次寫數據,都同時提交到兩個資料庫中,安全,但是效率很差,也得修改程序!

MSSQL

MSSQL數據同步利用資料庫復制技術實現數據同步更新(來自網路,也是非常完美的教程)
復制的概念
復制是將一組數據從一個數據源拷貝到多個數據源的技術,是將一份數據發布到多個存儲站點上的有效方式。使用復制技術,用戶可以將一份數據發布到多台伺服器上,從而使不同的伺服器用戶都可以在許可權的許可的范圍內共享這份數據。復制技術可以確保分布在不同地點的數據自動同步更新,從而保證數據的一致性。
SQL復制的基本元素包括
出版伺服器、訂閱伺服器、分發伺服器、出版物、文章
SQL復制的工作原理
SQLSERVER主要採用出版物、訂閱的方式來處理復制。源數據所在的伺服器是出版伺服器,負責發表數據。出版伺服器把要發表的數據的所有改變情況的拷貝復制到分發伺服器,分發伺服器包含有一個分發資料庫,可接收數據的所有改變,並保存這些改變,再把這些改變分發給訂閱伺服器
SQLSERVER復制技術類型
SQLSERVER提供了三種復制技術,分別是:
1、快照復制(呆會我們就使用這個)
2、事務復制
3、合並復制
只要把上面這些概念弄清楚了那麼對復制也就有了一定的理解。接下來我們就一步一步來實現復制的步驟。
第一先來配置出版伺服器
(1)選中指定[伺服器]節點
(2)從[工具]下拉菜單的[復制]子菜單中選擇[發布、訂閱伺服器和分發]命令
(3)系統彈出一個對話框點[下一步]然後看著提示一直操作到完成。
(4)當完成了出版伺服器的設置以後系統會為該伺服器的樹形結構中添加一個復制監視器。同時也生成一個分發資料庫(distribution)
第二創建出版物
(1)選中指定的伺服器
(2)從[工具]菜單的[復制]子菜單中選擇[創建和管理發布]命令。此時系統會彈出一個對話框
(3)選擇要創建出版物的資料庫,然後單擊[創建發布]
(4)在[創建發布向導]的提示對話框中單擊[下一步]系統就會彈出一個對話框。對話框上的內容是復制的三個類型。我們現在選第一個也就是默認的快照發布(其他兩個大家可以去看看幫助)
(5)單擊[下一步]系統要求指定可以訂閱該發布的資料庫伺服器類型,SQLSERVER允許在不同的資料庫如ORACLE或ACCESS之間進行數據復制。但是在這里我們選擇運行"SQLSERVER2000"的資料庫伺服器
(6)單擊[下一步]系統就彈出一個定義文章的對話框也就是選擇要出版的表
(7)然後[下一步]直到操作完成。當完成出版物的創建後創建出版物的資料庫也就變成了一個共享資料庫。
第三設計訂閱
(1)選中指定的訂閱伺服器
(2)從[工具]下拉菜單中選擇[復制]子菜單的[請求訂閱]
(3)按照單擊[下一步]操作直到系統會提示檢查SQLSERVER代理服務的運行狀態,執行復制操作的前提條件是SQLSERVER代理服務必須已經啟動。
(4)單擊[完成]。完成訂閱操作。
完成上面的步驟其實復制也就是成功了。但是如何來知道復制是否成功了呢?這里可以通過這種方法來快速看是否成功。展開出版伺服器下面的復制——發布內容——右鍵發布內容——屬性——擊活——狀態然後點立即運行代理程序接著點代理程序屬性擊活調度把調度設置為每一天發生,每一分鍾,在0:00:00和23:59:59之間。接下來就是判斷復制是否成功了打開C:/ProgramFiles/MicrosoftSQLServer/MSSQL/REPLDATA/unc/XIAOWANGZI_database_database下面看是不是有一些以時間做為文件名的文件夾差不多一分中就產生一個。要是你還不信的話就打開你的資料庫看在訂閱的伺服器的指定訂閱資料庫下看是不是看到了你剛才所發布的表—
一個手工同步的方案
--定時同步伺服器上的數據
--例子:
--測試環境,SQLServer2000,遠程伺服器名:xz,用戶名為:sa,無密碼,測試資料庫:test
--伺服器上的表(查詢分析器連接到伺服器上創建)
createtable[user](idintprimarykey,numbervarchar(4),namevarchar(10))
go
--以下在區域網(本機操作)
--本機的表,state說明:null表示新增記錄,1表示修改過的記錄,0表示無變化的記錄
ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[user]')andOBJECTPROPERTY(id,N'IsUserTable')=1)
droptable[user]
GO
createtable[user](idintidentity(1,1),numbervarchar(4),namevarchar(10),statebit)
go
--創建觸發器,維護state欄位的值
createtriggert_stateon[user]
afterupdate
as
update[user]setstate=1
from[user]ajoininsertedbona.id=b.id
wherea.stateisnotnull
go
--為了方便同步處理,創建鏈接伺服器到要同步的伺服器
--這里的遠程伺服器名為:xz,用戶名為:sa,無密碼
ifexists(select1frommaster..sysserverswheresrvname='srv_lnk')
execsp_dropserver'srv_lnk','droplogins'
go
execsp_addlinkedserver'srv_lnk','','SQLOLEDB','xz'
execsp_addlinkedsrvlogin'srv_lnk','false',null,'sa'
go
--創建同步處理的存儲過程
ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[p_synchro]')andOBJECTPROPERTY(id,N'IsProcere')=1)
dropprocere[dbo].[p_synchro]
GO
createprocp_synchro
as
--setXACT_ABORTon
--啟動遠程伺服器的MSDTC服務
--execmaster..xp_cmdshell'isql/S"xz"/U"sa"/P""/q"execmaster..xp_cmdshell''netstartmsdtc'',no_output"',no_output
--啟動本機的MSDTC服務
--execmaster..xp_cmdshell'netstartmsdtc',no_output
--進行分布事務處理,如果表用標識列做主鍵,用下面的方法
--BEGINDISTRIBUTEDTRANSACTION
--同步刪除的數據
deletefromsrv_lnk.test.dbo.[user]
whereidnotin(selectidfrom[user])
--同步新增的數據
insertintosrv_lnk.test.dbo.[user]
selectid,number,namefrom[user]wherestateisnull
--同步修改的數據
updatesrv_lnk.test.dbo.[user]set
number=b.number,name=b.name
fromsrv_lnk.test.dbo.[user]a
join[user]bona.id=b.id
whereb.state=1
--同步後更新本機的標志
update[user]setstate=0whereisnull(state,1)=1
--COMMITTRAN
go
--創建作業,定時執行數據同步的存儲過程
ifexists(SELECT1frommsdb..sysjobswherename='數據處理')
EXECUTEmsdb.dbo.sp_delete_job@job_name='數據處理'
execmsdb..sp_add_job@job_name='數據處理'
--創建作業步驟
declare@sqlvarchar(800),@dbnamevarchar(250)
select@sql='execp_synchro'--數據處理的命令
,@dbname=db_name()--執行數據處理的資料庫名
execmsdb..sp_add_jobstep@job_name='數據處理',
@step_name='數據同步',
@subsystem='TSQL',
@database_name=@dbname,
@command=@sql,
@retry_attempts=5,--重試次數
@retry_interval=5--重試間隔
--創建調度
EXECmsdb..sp_add_jobschele@job_name='數據處理',
@name='時間安排',
@freq_type=4,--每天
@freq_interval=1,--每天執行一次
@active_start_time=00000--0點執行
go

⑩ 怎麼才能建立資料庫的自動備份機制.,越詳細越好//謝謝

sql server資料庫備份方案2008-08-05 13:15SQL Server 資料庫備份方案
為了保證SQL Server 數據的安全,資料庫管理員應定期備份資料庫,在不同情況下應採用不同備份資料庫備份策略,一方面維持數據的安全性,另一方面也可保持SQL Server 能順暢運行。盡最大的努力減少由於數據的損壞對客戶造成的損失。
概念
1) 備份工作規劃
計算機軟硬體的穩定性還未達到非常穩定的狀態,計算機中的數據仍有損失或毀壞的情況發生。存在於計算機內的數據不安全,即使採用容錯設備,也無法保證資料庫 100%安全。 計算機硬體的費用可能很高,但計算機數據更珍貴,做好數據備份,可保證在各種意外發生情況時,仍能保持有資料庫的完整性。 管理員必須花時間來備份資料庫,但 SQL SERVER也提供不少自動化功能。
2)備份方式
資料庫——完全
就是備份整個資料庫的內容。若將整個資料庫的內容都備份下來,需很多的存儲空間來存放備份數據,但其好處是在還原資料庫時,也只要將整個資料庫從一份資料庫備份還原到 SQL SERVER 中就可以了。它是其他備份的基礎,在做其他備份之前,必須得做此種方式的備份。
資料庫——差異 (Differential)
只備份從上一次執行「完全」資料庫備份後有改動的數據,因此所需要的備份時間和備份空間都比「完全」 方式少,所以此方式最適合作為經常性的備份方式。
事務日誌(Transaction Log)
只備份事務記錄文件的內容,由於事務日誌文件只會記錄我們在前一次資料庫備份或事務日誌記錄備份之後,對資料庫所做的變動過程,也就是只記錄某一段時間的資料庫變動情況,因此在做事務記錄備份之前,必須做一次「完全」的資料庫備份
文件和文件組:
如果資料庫的內容分散存儲於多個文件或文件組,而且資料庫已非常大,大到進行一次完整的資料庫備份會有時間和存儲空間上的問題。這時就可以使用此方式來備份資料庫的部頌扮明分文件或文件組。由於每次只備份部分的文件或文件組,因此需做數次不同的備份才能完成整個資料庫的備份。才用此方式備份也有個好處,就是當毀壞的數據只是資料庫中的某個文件或文件組時,也只要還原壞的文件或文件組備份就可以了。
3)備份方案制訂原則
規劃資料庫的備份策略,需要考慮備份的各項變數,必須同時考慮到還原作業的進行。在做備份時,可考慮以下幾點。
(1) 有多少時間以及在那些時段可進行備份
(2) 資料庫變動的頻率如何
(3) 資料庫大小
(4) 當資料庫出問題時,用戶願意等待多久野告讓資料庫還原完畢
(5) 應採用何種備份方式,做怎樣的搭配
(6) 要使用哪種存儲介質

4)備份方案
(1)完全資料庫備份配合事務日誌備份
對於資料庫數據比較大,但每天的變動的內容小,可考慮採用此方式。可定期做一次完整的資料庫備份,例如:每周或每月做一次「完全」資料庫備份。然後再以較段短的周期,如每天或每兩天做一此事務日誌備份。這樣平時備份工作負擔比較輕,發生以外時,可將數據還原到最近期的狀態。
(2)完全資料庫備份配合差異式備份
此方式是將前一種方式中的事務日誌備份方式改成差異式備份。其優點是在做還原時,只需在做完最近一次資料庫備份的還原後,再用前一天的差異備份來還原就可以了,不像使用事務記錄備份時,需一天一天還原。缺點是在比較後的日子裡,每次做差異備份所需的時間和空間會增加。
(3)三種備份方式的綜合使用
由於事務記錄備份和差異備份各有其優缺點,因此我們可以將兩種方法結合起來使用。對於數據信息非常重要,每1、2小時備份一次,可能的損失只是1、2個小時的數據。
(4)當資料庫過大,有不易備份的問題時,可以採用文件或文件組備份方式,可考慮將資料庫分開存於不同的文件和文件組中,然後以文件和文件組的方式將整個資料庫分數次備份。此外,如果資料庫中只有部分表經常變動,另一部分很少變動,也可考慮將這兩部分存於不同的文件和文件組中,然後用不同的備份頻率來備份其內容。 採用此方式備份數據的缺點是:必缺燃須數次操作才能備份完數據。
(5)使用備用伺服器
採用此方式是再准備一台伺服器,先在原伺服器上做完全的備份,再把此備份放到備份伺服器上做還原,使兩邊的數據同步,以後可以定期對原資料庫做事務日誌備份,把事務日誌放到備份伺服器上還原。當原伺服器出現問題既可使用備份伺服器接上網路提供服務。

注意:系統資料庫的備份與還原是很多用戶在定義資料庫備份方案中容易忽略的,系統資料庫中雖然不保存業務數據,但它保存了很多SQL Server的設置,如果不備份系統資料庫,那麼在伺服器發生故障導致系統損壞時,重新配置所有的SQL Server設置將是一個噩夢DEMO
方案一 資料庫備份(常用方案)
在SQL Server備份窗口,可以通過調度設置,將當前進行的備份處理設置為定時自動處理的作用。具體的步驟如下:
1. 展開一個伺服器組。
2. 展開一個伺服器( SQL Server實例)。
3. 展開【資料庫】,右單擊要備份的資料庫,在彈出的菜單中選擇【所有任務】—〉【備份資料庫】命令。
4. 在隨後打開的SQL Server備份窗口中,設置備份的相關選項。參見前面的備份方案
單擊【常規】選項卡,在【調度】項中,選中【調度】復選框,然後單擊【調度】復選框後的【…】按鈕。在隨後出現的【編輯調度】對話框中,設置時間調度安排。
5. 設置完成後,單擊【確定】按鈕,SQL Server將執行備份操作,同時在【SQL Server 代理】—〉【作業 】中自動建立對應的作業。
6. 在【SQL Server 代理】—〉【作業 】窗口中,可以像處理普通作業一樣修改或刪除資料庫備份窗口中定義的備份計劃。
演示
方案二 數據轉換法(DTS)
具體的方案就是:
1.主伺服器和備份伺服器裝載完全一樣的操作系統和資料庫軟體,以及相應編制的管理軟體;
2.事先選定需要定期更新的表、視圖、存儲過程等等,必要時可選擇全部資料庫更新;
3.使用SQL Server 提供的數據轉換服務導入/ 導出向導(以SQL Server2000 為例) ,利用復制 SQL Server 對象任務,將 Microsoft SQL Server 對象從SQL Server 的一個實例復制到另一個SQL Server 中;
4.編輯反復出現的作業調度,確定發生的頻率和具體時間,一般情況下,由於數據量較大,不提倡每日發生多次,盡量安排在網路空餘時間發生。
這個方案優點是:
1.成本低、可靠性高,操作簡單,較易維護;
2.系統轉換時間短,備份系統替換主伺服器只需幾分鍾。即使出現意外,備份系統很快就會恢復正常,只損失少量數據,重新輸入即可;
3.本地和異地備份都是利用晚上網路空閑時間進行的,沒有增加日常網路流量,不會增加網路負擔。
注意選擇傳輸對象,相同版本的SQL Server 可以相互,或者由低版本向高版本SQL Server 備份,如:
SQL Server 7.0 的實例備份到 SQLServer 2000 的實例。
SQL Server 2000 的實例備份到另一個 SQL Server 2000 的實例。
備份的操作步驟:
1.打開企業管理器,選擇SQLServer 伺服器的資料庫,單擊滑鼠右鍵,選擇「所有任務」,並點選「導入數據」或「導出數據」。 如果是在主伺服器上進行操作,選導出數據;在備份伺服器上進行操作,則選導入數據。
2.第一步操作後,調出「數據轉換服務導入/ 導出向導」界面,單擊「下一步」,進入「DTS 導入/ 導出向導」的選擇數據源界面,選擇「目的」,選擇「制定表復制或查詢」,選擇要復制的對象。 弱
做選擇時,首先根據具體的客戶端選擇數據源,如果是OLE DB客戶端,選擇「用於SQL Server的Microsoft提供的OLEDB 程序」。
然後選擇提供數據源的伺服器,接下來選擇進入資料庫的方式,可選擇「使用Windows 身份驗證」或「使用SQL Server 身份驗證」。 如果選「使用SQL Server 身份驗證」,須填寫SQL Server 認可並對數據有修改權的用戶,一般可選「SA」及其密碼。最後選擇要復制的資料庫。
3.在「制定表復制和查詢」中,選擇「在SQL Server資料庫之間復制對象和數據」,然後單擊下一步。選擇具體復制對象和相應的選項等等.。
4.通過保存調度和復制包,定製進行復制的時間和頻率。
5.全部設置完成後,提示會列出源、目的、採用的方式、資料庫等選項,由你確認完成。
6.如果設置結束後要進行定製時間修改,在企業管理器中,通過伺服器、資料庫、管理、SQL server 代理、作業,然後選擇具體的作業,調出界面進行修改。
至此,你就可以在自己的中小企業環境中,輕松實現多台資料庫伺服器間的定時自動數據備份了。
演示
方案三 資料庫維護計劃+X命令(推薦使用)
1. 展開一個伺服器組
2. 展開一個伺服器實例(SQL Server實例)。
3. 展開【管理】,右擊【資料庫維護計劃】,在彈出的快捷菜單中選擇【新建維護計劃】命令。
4. 在隨後出現的【資料庫維護計劃 —(Local)】對話框中,單擊【下一步】按鈕跳過歡迎頁,在接下來的【選擇資料庫】步驟中,定義要備份的資料庫。
5. 單擊【下一步】按鈕,跳過與資料庫備份無關的步驟,在【指定資料庫備份計劃】步驟中,選擇【作為維護計劃的一部分來備份資料庫】復選框;通過單擊【磁帶】或者【磁碟】單選按鈕來選擇備份設備;單擊【調度】選項右邊的【更改】按鈕,可以在隨後出現的【編輯反復出現的作業調度】對話框中設置維護計劃的時間安排。
6. 單擊【下一步】按鈕,如果在步驟(5)中,備份設備選擇的是【磁碟】設備,則會進入【指定備份磁碟目錄】步驟,根據實際情況,設置此步驟中的內容。
7. 單擊【下一步】按鈕,進入【指定事務日誌備份計劃】步驟,如果需要進行事務日誌備份,則選擇【作為維護計劃的一部分來備份事務日誌】復選框。備份事務日誌的其他設置步驟參考(5)~(6)。
8. 根據需要設置其他步驟,最後進入【正在完成資料庫維護計劃向導】步驟,設置好【計劃名】,單擊【完成】按鈕完成資料庫維護計劃的定義。
9. 完成步驟(1)~(8)後,單擊【資料庫維護計劃】,在企業管理器控制台右邊的詳細信息窗口中就可以看到定義好的資料庫維護計劃,同時,展開【SQL Server代理】—〉【作業】,可以【作業】右邊的詳細窗口中,可以看到維護計劃自動建立的備份出路作業。
10. 通過有機維護計劃,選擇【屬性】命令,可以修改已經定義的維護計劃。
11. 通過右擊維護計劃,選擇【刪除】命令,可以刪除已經定義的維護計劃,同時【SQL Server 代理】—〉【作業】中的相關作業也會自動刪除。
新建一個批文件 Copy.bat具體腳本如下:
@echo off
title 正在傳輸資料庫備份文件到遠程備份伺服器上!
echo 提示:開始驗證伺服器上是否存在備份文件!
echo 請稍候!
if exist F:\DBback\*.bak (goto Process ) else goto UnFound
:Process
echo 提示:在伺服器上找到了備份文件!
echo -------------------------------------------------------------------------------
echo 提示:開始刪除遠程備份伺服器上的原始文件!

rem 備註:下列IP地址為遠程備份伺服器的IP地址!
del \\192.168.244.24\DBback /q /s /f
del \\192.168.244.24\DBback\*.* /q /s /f
if errorlevel 0 goto success
:success
echo 提示:成功刪除原始文件!
echo -------------------------------------------------------------------------------
echo 提示:開始復制資料庫備份文件到遠程備份伺服器\\192.168.244.24\DBback!
echo 請稍候!
rem 備註:請具體更改\\192.168.244.1\DBback為伺服器備份文件存放的位置。\\192.168.244.24\DBback為備份伺服器上存放的位置!
x \\192.168.244.1\DBback \\192.168.244.24\DBback /y /f
rem 備註:當X命令結束後返回的Errorlevel為4說明磁碟控制項不足。當X命令返回0時說明成功完成操作!
if errorlevel 4 goto lowmemory
if errorlevel 0 goto showmessage
:lowmemory
echo 警告:請查看磁碟空間是否不足!

:UnFound
echo 警告:在伺服器上找不到備份文件,批任務將要結束。伺服器備份工作似乎沒有正常進行,請確認伺服器是否正常生成備份文件!
goto exit

:showmessage
echo 提示:批任務完成!
echo 提示:成功復制資料庫備份到遠程伺服器\\192.168.244.24\DBback!
echo 按任意鍵結束退出!
echo --------------------------------------------------------------------------------
:exit
pause
echo 成功復制PersonnelM資料庫備份到遠程伺服器\\192.168.244.24\1上!
Pause

利用Windows 任務計劃來調度批任務
1. 單擊「開始」—〉「程序」—〉「附件」—〉「系統工具」—〉「任務計劃」
2. 雙擊「新建任務計劃」,彈出「任務計劃向導」單擊「下一步」。在選擇任務窗體中選擇「瀏覽」。我們選擇要調度執行的Copy.bat文件。
3. 在接下來彈出的窗體中為我們的任務計劃起個名稱並且選擇執行頻率。這里我們選擇「每天」
4. 在密碼確認窗體中輸入本機的密碼。單擊「下一步」選擇「完成」。至此任務計劃設置完成。(有需要的話可以單擊選擇「在單擊完成時,打開此任務的高級屬性」復選框以便對此任務進行高級設置!)

方案四 同步備份伺服器(腳本)
/*該部分參考了鄒建的腳本*/
/*--說明:
下面的代碼演示了如何利用日誌還原功能,將主資料庫中的數據變化及時反饋到備用資料庫中
備用資料庫的數據可以隨時用於查詢,但不能被更新(備用資料庫只讀)。
--*/
--首先,創建一個演示用的資料庫(主資料庫)
CREATE DATABASE Db_test
ON
( NAME = Db_test_DATA,
FILENAME = 'c:\Db_test.mdf' )
LOG ON
( NAME = Db_test_LOG,
FILENAME = 'c:\Db_test.ldf')
GO
--對資料庫進行備份
BACKUP DATABASE Db_test TO DISK='c:\test_data.bak' WITH FORMAT
GO
--把資料庫還原成備用資料庫(演示主資料庫與這個備用資料庫之間的同步)
RESTORE DATABASE Db_test_bak FROM DISK='c:\test_data.bak'
WITH REPLACE,STANDBY='c:\db_test_bak.ldf'
,MOVE 'Db_test_DATA' TO 'c:\Db_test_data.mdf'
,MOVE 'Db_test_LOG' TO 'c:\Db_test_log.ldf'
GO
--啟動 SQL Agent 服務
EXEC master..xp_cmdshell 'net start sqlserveragent',no_output
GO
--創建主伺服器數據訓與備用伺服器資料庫之間同步的作業
DECLARE @jogid uniqueidentifier
EXEC msdb..sp_add_job
@job_id = @jogid OUTPUT,
@job_name = N'數據同步處理'
--創建同步處理步驟
EXEC msdb..sp_add_jobstep
@job_id = @jogid,
@step_name = N'數據同步',
@subsystem = 'TSQL',
@command = N''
--主資料庫中進行日誌備份
BACKUP LOG Db_test TO DISK="c:\test_log.bak" WITH FORMAT
--備用資料庫中還原主資料庫的日誌備份(應用主資料庫中的最新變化
--實際應該時主資料庫備份與備用資料庫的還原作業應該分別在主伺服器和備用伺服器上建立,並且備份文件應該放在主伺服器和備用都能訪問的共享目錄中
RESTORE LOG Db_test_bak FROM DISK='c:\test_log.bak' WITH STANDBY='c:\test_log.ldf',
@retry_attempts = 5,
@retry_interval = 5
--創建調度(每分鍾執行一次)
EXEC msdb..sp_add_jobschele
@job_id = @jogid,
@name = N'時間安排',
@freq_type=4,
@freq_interval=1,
@freq_subday_type=0x4,
@freq_subday_interval=1,
@freq_recurrence_factor=1
-- 添加目標伺服器
EXEC msdb.dbo.sp_add_jobserver
@job_id = @jogid,
@server_name = N'(local)'
GO

--通過上述處理,主資料庫與備用資料庫之間的同步關系已經設置完成
--下面開始測試是否能實現同步
--在主資料庫中創建一個測試用的表
CREATE TABLE Db_test.dbo.TB_test(ID int)
GO
--等待1分鍾30秒(由於同步的時間間隔設置為1分鍾,所以要延時才能看到效果)
WAITFOR DELAY '00:01:30'
GO
--查詢一下備用資料庫,看看同步是否成功
SELECT * FROM Db_test_bak.dbo.TB_test
/*--結果:
ID
-----------
(所影響的行數為 0 行)
--*/
--測試成功
GO

--最後刪除所有的測試
DROP DATABASE Db_test,Db_test_bak
EXEC msdb..sp_delete_job @job_name=N'數據同步處理'
GO
/*===========================================================*/
/*--伺服器宕機處理說明
使用這種方式建立的資料庫同步,當主資料庫不可用時(例如,主資料庫損壞或者停機檢修)
可以使用以下兩種方法使備用資料庫可用。
--*/
--1. 如果主資料庫損壞,無法備份出最新的日誌,可以直接使用下面的語句使備用資料庫可讀寫(丟失最近一次日誌還原後的所有數據)。
RESTORE LOG Db_test_bak WITH RECOVERY
--2. 如果主資料庫可以備份出最新日誌,則可以使用下面的語句。
--先備份主資料庫的最新的事務日誌
BACKUP LOG Db_test TO DISK=''c:\test_log.bak'' WITH FORMAT
--再在備用資料庫中恢復最新的事務日誌,並且使備用資料庫可讀寫(升級為主資料庫)
RESTORE LOG Db_test_bak FROM DISK='c:\test_log.bak'

方案五 復制訂閱
開始學習之前我們先搞清楚以下幾個概念:
復制(Replication)就是將數據由某處復制到一個或多個目的地,由於對資料庫分散式應用的需求日漸增加,SQL Sever也提供了復制的功能。
SQL Server 的復制功能基本上是使用「發布伺服器(Publisher) 」和「訂閱伺服器」(Subscriber)的結構,這整個結構中包含了數個不同的組件。
(1) 發布伺服器(Publisher):在復制中,發布伺服器就是負責發布資料庫內容給其他伺服器的SQL Server (一般的我們把主伺服器當作發布伺服器,形象一點比喻發布伺服器就好像是一本書的作者)
(2) 訂閱伺服器(Subscriber):訂閱伺服器就是指受發布伺服器所發布數據的SQL SERVER,通常發布伺服器只有一個,但訂閱伺服器可以有多個。(形象比喻訂閱服務就像是讀者,購買相同圖書的讀者可以有很多。)
(3) 分發伺服器(Distributor):除了發布伺服器和訂閱伺服器這兩個基本外,另一個可以由 SQL SERVER 在整個復制結構中扮演的角色就是分發伺服器。分發伺服器是負責將發布伺服器所發布的資料庫發布、傳輸到各訂閱伺服器的伺服器。在簡單的復制結構中,發布伺服器和分發伺服器通常是使用同一個 SQL SERVER。設置為分發伺服器的 SQL SERVER,會有個名為 distribution 的系統資料庫存放復制信息。
(4) 發布項(Article):發布伺服器所發布的數據稱為發布項,發布項是進行復制時的復制單位,發布項可以是表或存儲過程等資料庫對象,也可以知識表中的某幾列或某幾項數據。
(5) 發布(Publish):一組特定的發布項組合就稱為發布,也就是 SQL SERVER進行復制時所復制的數據合。當訂閱伺服器向發布伺服器訂閱數據時,是以發布為單位,而不是以發布項為單位的。即,訂閱伺服器只能接收整個發布中的所有 article。而不能只選擇其中幾個發布項類訂閱,每個發布只有來自單一資料庫的內容,但我們可以為資料庫設置多個發布。
(6) 為適應不同的復制需求,SQL SERVER提供了發送(Push)和請求(Pull)兩種不同的訂閱方式。區別如下:
(a) 發送訂閱(Push Subscription也稱為強制訂閱):所謂的發送訂閱就是由發布伺服器主動傳送發布給訂閱伺服器,也就是由發布伺服器控制復制的操作,只要指定進行復制的時間一到,不管訂閱伺服器有沒有提出要求,發布伺服器都會將數據傳送給訂閱伺服器。
(b) 請求訂閱(Pull Subscription):請求訂閱和發送訂閱相反,是由訂閱伺服器自行根據排定的日程向發布伺服器要求訂閱發布,通常在訂閱伺服器數量較多,或是不需要即時取的最新的數據內容時,可採用此種訂閱方式。

步驟:
下介紹實現復制的步驟。(以快照復制為例)
准備工作:
1.發布伺服器,訂閱伺服器都創建一個同名的windows用戶,並設置相同的密碼,做為發布快照文件夾的有效訪問用戶
--我的電腦
--控制面板
--管理工具
--計算機管理
--用戶和組
--右鍵用戶
--新建用戶
--建立一個隸屬於administrator組的登陸windows的用戶
2.在發布伺服器上,新建一個共享目錄,做為發布的快照文件的存放目錄,操作:
我的電腦--D:\ 新建一個目錄,名為: BakPUB
--右鍵這個新建的目錄
--屬性--共享
--選擇"共享該文件夾"
--通過"許可權"按紐來設置具體的用戶許可權,保證第一步中創建的用戶具有對該文件夾的所有許可權
--確定

3.設置SQL代理(SQLSERVERAGENT)服務的啟動用戶(發布/訂閱伺服器均做此設置)
開始--程序--管理工具--服務
--右鍵SQLSERVERAGENT
--屬性--登陸--選擇"此賬戶"
--輸入或者選擇第一步中創建的windows登錄用戶名
--"密碼"中輸入該用戶的密碼
4.設置SQL Server身份驗證模式,解決連接時的許可權問題(發布/訂閱伺服器均做此設置)
企業管理器
--右鍵SQL實例--屬性
--安全性--身份驗證
--選擇"SQL Server 和 Windows"
--確定
5.在發布伺服器和訂閱伺服器上互相注冊
企業管理器
--右鍵SQL Server組
--新建SQL Server注冊...
--下一步--可用的伺服器中,輸入你要注冊的遠程伺服器名--添加
--下一步--連接使用,選擇第二個"SQL Server身份驗證"
--下一步--輸入用戶名和密碼
--下一步--選擇SQL Server組,也可以創建一個新組
--下一步--完成
6.對於只能用IP,不能用計算機名的,為其注冊伺服器別名
(在連接端配置,比如,在訂閱伺服器上配置的話,伺服器名稱中輸入的是發布伺服器的IP)
開始--程序--Microsoft SQL Server--客戶端網路實用工具
--別名--添加
--網路庫選擇"tcp/ip"--伺服器別名輸入SQL伺服器名
--連接參數--伺服器名稱中輸入SQL伺服器ip地址
--如果你修改了SQL的埠,取消選擇"動態決定埠",並輸入對應的埠號
==============================================================================
正式開始:
1.配置發布伺服器
a. 選中指定 [伺服器] 節點
b. 從 [工具] 下拉菜單的 [復制] 子菜單中選擇 [發布、訂閱伺服器和分發] 命令
c. 系統彈出一個對話框點 [下一步] 然後看著提示操作
--直到"指定快照文件夾"
--在"快照文件夾"中輸入准備工作中創建的目錄: \\<伺服器名>\ BakPUB
一[下一步] 直操作到完成。
d. 當完成了出版伺服器的設置以後系統會為該伺服器的樹形結構中添加一個復制監視器
同時也生成一個分發資料庫(distribution)

---------------------------------------------------------------------------
2.創建發布
a. 選中指定的伺服器
b. 從 [工具] 菜單的 [復制] 子菜單中選擇 [創建和管理發布] 命令。此時系統會彈出
一個對話框
c. 選擇要創建發布的資料庫,然後單擊 [創建發布]
d. 在 [創建發布向導] 的提示對話框中單擊 [下一步] 系統就會彈出一個對話框。對話
框上的內容是復制的三個類型。我們現在選第一個也就是默認的快照發布(其他兩個
大家可以去看看幫助)
e. 單擊 [下一步] 系統要求指定可以訂閱該發布的資料庫伺服器類型,SQLSERVER允許在
不同的資料庫如 ORACLE或ACCESS之間進行數據復制。但是在這里我們選擇運行
"SQL SERVER 2000"的資料庫伺服器
f. 單擊 [下一步] ,選擇要發布的對象(如表,視圖,存儲過程,一般是表)
g. 然後 [下一步] 直到操作完成。當完成出版物的創建後創建出版物的資料庫也就變成了
一個共享資料庫。

---------------------------------------------------------------------------
3.設計訂閱
a. 選中指定的訂閱伺服器
b. 從 [工具] 下拉菜單中選擇 [復制] 子菜單的 [請求訂閱]
c. 按照提示單擊 [下一步] 操作直到系統會提示檢查SQL SERVER代理服務的運行狀態,執行
復制操作的前提條件是SQL SERVER代理服務必須已經啟動。
d. 單擊 [完成] 完成訂閱操作。

----------------------------------------------------------------------------
完成上面的步驟其實復制也就是成功了。但是如何來知道復制是否成功了呢?
這里可以通過這種方法來快速看是否成功。
展開出版伺服器下面的復制——發布內容——右鍵發布內容——屬性——擊活——狀態然後點立即運行代理程序接著點代理程序屬性擊活調度
把調度設置為每一天發生,每一分鍾,在0:00:00和23:59:59之間。
接下來就是判斷復制是否成功了打
開C:\Program Files\Microsoft SQL Server\MSSQL\REPLDATA\下面
看是不是有一些以時間做為文件名的文件夾差不多一分中就產生一個。