1. 新增範例資料庫

在這個單元中,我們將一步一步地帶領你完成一個非常基礎但極為重要的任務:成功建立一個名為 demodb 的範例資料庫。

1.1 新增 demodb 資料庫

這是建立資料庫的核心操作。在你的資料庫管理工具中新增資料庫時,請在對應欄位輸入以下兩項關鍵資訊:

  1. 資料庫名稱:  demodb
  2. 資料庫路徑:  d:\db\sql2022

當你輸入完畢並執行新增後,系統會在指定的路徑下建立兩個非常重要的檔案(.mdf 資料庫主檔、.ldf 資料庫交易記錄檔)。

操作步驟


1.2 資料庫分類

市面上有許多的資料庫,以下用 交易 及 價格、維護性、資源 等來區分為 小型資料庫、中型資料庫、大型資料庫 等。

  • 小型與中型間的區隔:
    在於中間有一叫做交易的機制,中、大型資料庫必備。
  • 中型與大型間的區隔:
    使用 價格(越便宜是中型、越貴的是大型)、維護性(維護性越好的是大型、維護性越差的是中型)、**資源(網路上可以獲取的資源,)**來區分。

1.3 核心觀念:認識資料庫實體檔案

我們在管理工具中看到的邏輯資料庫(例如 demodb),其背後是由硬碟上具體的實體檔案所構成的。對於一個基本的資料庫來說,最核心的就是以下這兩個檔案:

檔案名稱用途說明
demodb.mdf主資料庫檔案 (Primary Data File),這是存放所有資料(如資料表中的客戶資料)與資料庫物件(如索引、預存程序)的核心檔案。
demodb_log.ldf交易記錄檔案 (Transaction Log File),用來記錄所有資料的變動與交易過程,確保資料的完整性與可恢復性,例如在系統意外當機後,資料庫能藉此回復到出錯前的狀態。

資料庫剛建立之初,這兩個檔案大小一樣,就資料久了之後交易記錄檔就會變得很龐大,可用指令來清除。

1.4 總結說明

恭喜你!你已經成功完成了第一個資料庫的建立,並對資料庫的實體結構有了初步的認識。

讓我們快速回顧本次演練最重要的兩個學習成果:

  • 成功建立了名為 demodb 的資料庫。
  • 理解了資料庫是由 主資料庫檔 (.mdf) 與 交易記錄檔 (.ldf) 這兩種實體檔案所組成的。

2. 交易 (Transaction)

2.1 交易的過程

一筆交易是多個以上的過程,比如說有兩對象(鄉費者、攤販),消費者向攤販買了一把青菜,一定是付錢了,在拿到青菜,缺了其中一項(付錢或拿菜) 都不算完成交易。

重点提示
同時完成了付錢及交貨才算是完成了交易
只要有一方沒完成,都不算是交易完成,因此交易指的是交易過程的百分百完成度,全部過程皆完成才能算交易結束。。

2.2 資料庫上交易的範例

假設執行 ERP 進料驗收(IQC)確認的作業時會造造成

  1. 產生一張進貨單
  2. 產生一張入庫單
  3. 產生一筆固定資產(貴重商品)

使用無交易機制

當運作過程出現問題、例如電腦當機…等!,交易紀錄會出現許多錯誤。

使用交易機制

這種機制,資料庫會有兩個,多了一個交易紀錄檔,這時 IQC 驗收 不直接對資料庫,而改向交易紀錄檔,當所有流程跑完,執行 Commit 完成交易,通知 交易紀錄檔 在一次性把正確資料寫入資料庫內。失敗的交易紀錄也會寫在交易紀錄檔內。

2.3 交易程式執行流程

  1. 交易開始時可下達開始交易(Begin Transaction)的指令,宣布交易開始。
  2. 交易過程 中也可以下達取消交易(Rollback Transaction)的指令,直接取消整個交易。
  3. 交易结束 时可下達交易完成(Commit Transaction)的指令,宣布交易結束。

2.4 T-SQL 預存程式交易範例

CREATE PROCEDURE sp_UpdateData
 
@subtotal INT
 
AS
 
BEGIN
 
BEGIN TRY
 
BEGIN TRANSACTION;
 
UPDATE SalesData
 
SET
 
Unitprice = 15.9
 
WHERE CustomerID = 10776
 
AND subtotal = @subtotal;
 
IF @@TRANCOUNT > 0 COMMIT;
 
END TRY
 
BEGIN CATCH
 
IF @@TRANCOUNT > 0 ROLLBACK;
 
SELECT ERROR NUMBER() AS ErrorNumber;
 
SELECT ERROR_MESSAGE() AS ErrorMessage;
 
END CATCH;
 
END;

3. 資料庫備份

3.1 資料庫備份建議

  1. 資料庫的大小增加時,完整資料庫備份就需要更多的時間才能完成,同時也需要更多的儲存空間。若為大型資料庫,請考慮透過一系列的差異資料庫備份來補充充完整資料庫備份。

  2. 使用 sp_spaceused 系統預存程序來估計完整資料庫備份的大小。

  3. 根據預設,每個成功的備份作業都會在 SQL Server 錯誤認檔和系統事件記錄信中新增專案。
    如果您經常備份,成功訊息會快速累積,因而造成大量的錯誤記錄檔,讓尋找其他訊息變得因難,在這頭情況下,如果沒有任何指令碼相依於這些備份記錄項目,您就可以使用追蹤旗標 3226 來隱藏這些項目。如需詳細資訊,請參閱 Transact-SQL。

3.2 資料庫備份分類

  • 離線備份 Offline Backup
    表示執行備份時,使用者不能使用資料庫,必須離線才能執行備份程序。
  • 線上備份 Online Backup
    表示執行備份時,使用者不能使用資料庫,不需要離線也能執行備份程序。

備份執行方式

離線備份 Offline Backup線上備份 Online Backup
開啟/關閉服務手動備份/還原資料庫
卸離/附加資料庫執行備份計劃-自動備份資料庫工作
離線/線上資料庫執行備份計劃-TSQL 工作