返回列表 上一主題 發帖

[教學] (PHP+IIS+MsSQL教學第24篇) 資料庫庫的基礎觀念 上篇

[教學] (PHP+IIS+MsSQL教學第24篇) 資料庫庫的基礎觀念 上篇

資料庫的基礎觀念
資料庫乃是一群格式化資料的儲存場所,簡單的依照層級內容來概分:資料庫(Database)=>資料表(Table)=>欄位(Column)=>欄位資料,您不妨將資料庫想像成一間倉庫,則資料表就是倉庫中的庫房,欄位則是庫房中儲物架的儲物格,那資料呢?資料就等同放置於儲物架的物品。
資料庫既然如同倉庫一般,其內就會含有許多的庫房(資料表)來存放不同的物品,在SQL Server中最多可控管(建立)32,767個資料庫,在SQL資料庫中可擁有2,147,483,647個物件,其中包含資料庫、預存程序、檢視表…等。
SQL Server中的資料庫內含下列各種物件:

  • 資料表(Table)
  • 檢視表(Views)
  • 規則(Rules)
  • 預設值(Default)
  • 條件約束(Constraints)
  • 索引(Index)
  • 索引建(Keys)
  • 使用者自訂函數(User Defined Functions)
  • 使用者自定資料型態(User Defined Data Types)
  • 預存程序(Stored Procedures)
  • 觸發程序(Triggers)
小誌先聲明,這些資料庫物件在本書中不一定都會用到,如果有用到的小誌會再加以說明。
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

如何建立資料庫
在SQL Server中建立資料庫有相當多的方法,可以用精靈、TSQL、SQL-DMO、企業管理員(SQL Server Enterprise Manager)等,小誌喜歡用圖形化的企業管理員來建立資料庫:

  • 開啟企業管理員:「開始」=>「程式集」=>「Microsoft SQL Server」=>「Enterprise Manager」。

  • 展開SQL Server群組,接著展開我們要建立新資料庫的SQL Server項目。

  • 在「資料庫」項目上點選滑鼠右鍵,於快顯功能表上點選『新增資料庫』:
    CH7_13.png
    2010-5-16 16:10


  • 為新增的資料庫命名:在「名稱」欄位中填入新增資料庫的名稱(先別按確定按鈕),此名稱為SQL Server管理資料庫時的識別名稱,不得與其他已存在的資料庫同名稱。
    CH7_14.png
    2010-5-16 16:10


  • 指定主資料檔的名稱:將操作頁面切換為「資料檔案」,此時,SQL Server已經替我們預設好資料庫者資料檔的『檔案名稱』與存放的路徑,檔案名稱為步驟4我們自定的資料庫名加上「_Date」。
    在「檔案名稱」欄位中的內容為「邏輯檔案名稱」,而「位置」欄位的內容則是檔案存放的路徑與「實體檔案名稱」,「邏輯檔案名稱」為SQL Server操作辨識用,而「實體檔案名稱」則為資料檔於磁碟中的真實名稱,「實體檔案名稱」與「邏輯檔案名稱」不一定要相同,您可視需要而分別命名。

  • 設定檔案屬性:

    • 檔案自動成長:當預設的檔案大小不足以容納資料時,是否自動增加檔案大小。
    • 檔案成長率;指定增加檔案大小的方式,可以是百方比增加,也可以是固定大小增加
    • 檔案大小上限:限制檔案大小增加的最大量。

    CH7_15.png
    2010-5-16 16:11


  • 設定交易記錄檔:其設定過程如步驟5、6。
    記錄檔(Log File)的存在目的是:當資料庫發生資料異動或更新時,這些動作過程都會記錄到記錄檔中,若不幸資料庫發生毀損意外時,則我們可利用記錄檔將資料庫恢復到意外發生前的時間點狀態,以確保資料的完整安全性。
    CH7_16.png
    2010-5-16 16:11


  • 確認完成以上步驟後,請按下「確定」按鈕,此時,SQL Server即會開始建立此新增的資料庫。
    CH7_17.png
    2010-5-16 16:11

            提示!!
      資料庫的組成檔案:

      • 主資料檔:*.MDF,每個資料庫只能有一個主資料檔。
      • 次資料檔:*.NDF,當主資料檔可能超過系統單一檔案容量的限制時,即可使用次資料檔來存放資料,次資料檔是非必要的資料庫檔案,每個資料庫可以擁有多個次資料檔。
      • 記錄檔:*.LDF,記錄復原資料庫的資訊,檔案大小至少為512K。

      在上圖中,除了「dbTest」資料庫是我們自行建立的外,其餘的資料庫都是安裝SQL Server所同時內建的:
      CH7_18.png
      2010-5-16 16:11


      • model:新建資料庫的範本,當我們新增一個資料庫時,其資料庫的規格就複製於此系統資料庫。
      • tempdb:暫存資料庫,用以存放暫時性的資料表與預存程序,此資料庫建立於SQL Server啟動時,消滅於SQL Server停止時。
      • msdb:供SQL Server Agent使用,用以執行各種排程工作,若無使用任何排程工作,則此資料庫不會被使用。
      • pubs、Nothwind:此二資料庫是供我們測試使用的資料庫,與SQL Server作業無關。
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

TOP

卸離與附加資料庫
當我們在某個SQL Server中建立新資料庫後,SQL Server就對此資料有全部的控制權,其他的SQL Server就無法掌控此一資料庫,當我們需要將資料庫移交給另一個SQL Server管理時該怎辦?此時我們應將資料庫從原先的SQL Server中「卸離(Detach)」。
CH7_19.png
2010-5-16 16:19


要卸離資料庫,於企業管理員中,在要卸離的資料庫項目上點選滑鼠右鍵,於快顯功能表上點選「所有工作」=>『卸離資料庫』,如上圖。

當我們點選『卸離資料庫』項目命令後會出現如圖7-20的「卸離資料庫」視窗,其內顯示著目前資料庫的狀態,如果資料庫有使用者連線使用的話是不可以卸離的,不過,您可以按下「清除」按鈕,強制切斷全部的連線使用,以便進行資料庫卸離的動作。
CH7_20.png
2010-5-16 16:19


當出現下圖的訊息視窗時,資料庫即已完成卸離,當我們卸離該資料庫後,「系統資料庫master」也會清除該資料庫的相關資訊。
CH7_21.png
2010-5-16 16:20


如果您熟悉Transact-SQL程式語法,亦可使用下列敘述卸離資料。
  1. sp_detach_db [ @dbname = ] 'dbname'
  2.     [ , [ @skipchecks = ] 'skipchecks' ]
複製代碼
『[@dbname=]'dbname'』:是指定要卸離的資料庫名稱。
『[@skipchecks=]'skipchecks'』:skipchecks為nvarchar(10),其預設值為NULL。若是為true,則會略過UPDATESTATISTICS。若是為false,則執行UPDATESTATISTICS。


哇!資料庫卸離了,那如何將它再附加到SQL Server中呢?
於企業管理員中,在「資料庫」項目上點選滑鼠右鍵,於快顯功能表上點選「所有工作」=>『附加資料庫』:
CH7_22.png
2010-5-16 16:20


當我們點選『附加資料庫』項目命令後會出現如下圖的「附加資料庫」視窗。
CH7_23.png
2010-5-16 16:20



還記得您的資料庫檔案放在那裡嗎?如果您在新增資料庫時跟小誌一樣採用SQL Server的預設路徑,那麼資料庫檔案應該是在:『C:\Program Files\Microsoft SQL Server\MSSQL\Data\』。
點選「附加資料庫」視窗中的「…」按鈕來開啟「瀏覽現有的檔案」視窗,選取我們要附加的資料庫主資料檔「*.MDF」:
CH7_24.png
2010-5-16 16:21



回到「附加資料庫」視窗中,請先確定資料庫的檔案都齊全的參考到了,如果在「目前的檔案位置」欄位項目中有出現「X」打叉的圖示,代表該檔案未完成正確的位置參考,此時您應該自行修正檔案在磁碟中的正確存放位置。
如果您希望為附加進來的資料庫變更名稱,請在「附加為」欄位輸入新的資料庫名稱。
CH7_25.png
2010-5-16 16:22


按下「附加資料庫」視窗中的「確定」按鈕,當出現圖7-26的訊息視窗時,資料庫即已完成附加工作。
CH7_26.png
2010-5-16 16:22



同樣地,如果您熟悉SQL Server操作與Transact-SQL程式語法,亦可使用下列預存程序敘述附加資料。
  1. [code]sp_attach_db [ @dbname = ] 'dbname' ,
  2.     [ @filename1 = ] 'filename_n' [ ,...16 ]
複製代碼
[/code]『[@dbname=]'dbname'』:是指定要卸離的資料庫名稱。
『[@filename1 =] 'filename_n'』:資料庫檔案的實體名稱,包括路徑,請依序加入資料庫的資料檔與記錄檔路徑與實體檔名。
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

TOP

        靜思自在 : 脾氣嘴巴不好,心地再好也不能算是好人。
返回列表 上一主題