麻辣家族討論版版's Archiver

小誌 發表於 2010-5-16 16:02

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

[color=DarkOrange][size=5][b]資料庫的基礎觀念[/b][/size][/color]
資料庫乃是一群格式化資料的儲存場所,簡單的依照層級內容來概分:資料庫(Database)=>資料表(Table)=>欄位(Column)=>欄位資料,您不妨將資料庫想像成一間倉庫,則資料表就是倉庫中的庫房,欄位則是庫房中儲物架的儲物格,那資料呢?資料就等同放置於儲物架的物品。
資料庫既然如同倉庫一般,其內就會含有許多的庫房(資料表)來存放不同的物品,在SQL Server中最多可控管(建立)32,767個資料庫,在SQL資料庫中可擁有2,147,483,647個物件,其中包含資料庫、預存程序、檢視表…等。
SQL Server中的資料庫內含下列各種物件:
[list]
[*]資料表(Table)
[*]檢視表(Views)
[*]規則(Rules)
[*]預設值(Default)
[*]條件約束(Constraints)
[*]索引(Index)
[*]索引建(Keys)
[*]使用者自訂函數(User Defined Functions)
[*]使用者自定資料型態(User Defined Data Types)
[*]預存程序(Stored Procedures)
[*]觸發程序(Triggers)
[/list]小誌先聲明,這些資料庫物件在本書中不一定都會用到,如果有用到的小誌會再加以說明。

小誌 發表於 2010-5-16 16:06

[color=Green][size=4][b]如何建立資料庫[/b][/size][/color]
在SQL Server中建立資料庫有相當多的方法,可以用精靈、TSQL、SQL-DMO、企業管理員(SQL Server Enterprise Manager)等,小誌喜歡用圖形化的企業管理員來建立資料庫:
[list=1]
[*]開啟企業管理員:「開始」=>「程式集」=>「Microsoft SQL Server」=>「Enterprise Manager」。

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

[*]在「資料庫」項目上點選滑鼠右鍵,於快顯功能表上點選『新增資料庫』:
[attach]493[/attach]

[*]為新增的資料庫命名:在「名稱」欄位中填入新增資料庫的名稱(先別按確定按鈕),此名稱為SQL Server管理資料庫時的識別名稱,不得與其他已存在的資料庫同名稱。
[attach]494[/attach]

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

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

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

[*]確認完成以上步驟後,請按下「確定」按鈕,此時,SQL Server即會開始建立此新增的資料庫。
[attach]497[/attach][list]
     [color=Red] 提示!![/color]
資料庫的組成檔案:
[list]
[*]主資料檔:*.MDF,每個資料庫只能有一個主資料檔。
[*]次資料檔:*.NDF,當主資料檔可能超過系統單一檔案容量的限制時,即可使用次資料檔來存放資料,次資料檔是非必要的資料庫檔案,每個資料庫可以擁有多個次資料檔。
[*]記錄檔:*.LDF,記錄復原資料庫的資訊,檔案大小至少為512K。
[/list]
在上圖中,除了「dbTest」資料庫是我們自行建立的外,其餘的資料庫都是安裝SQL Server所同時內建的:
[attach]498[/attach]
[list]
[*]model:新建資料庫的範本,當我們新增一個資料庫時,其資料庫的規格就複製於此系統資料庫。
[*]tempdb:暫存資料庫,用以存放暫時性的資料表與預存程序,此資料庫建立於SQL Server啟動時,消滅於SQL Server停止時。
[*]msdb:供SQL Server Agent使用,用以執行各種排程工作,若無使用任何排程工作,則此資料庫不會被使用。
[*]pubs、Nothwind:此二資料庫是供我們測試使用的資料庫,與SQL Server作業無關。
[/list]

小誌 發表於 2010-5-16 16:22

[color=Green][size=4][b]卸離與附加資料庫[/b][/size][/color]
當我們在某個SQL Server中建立新資料庫後,SQL Server就對此資料有全部的控制權,其他的SQL Server就無法掌控此一資料庫,當我們需要將資料庫移交給另一個SQL Server管理時該怎辦?此時我們應將資料庫從原先的SQL Server中「卸離(Detach)」。
[attach]500[/attach]

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

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

當出現下圖的訊息視窗時,資料庫即已完成卸離,當我們卸離該資料庫後,「系統資料庫master」也會清除該資料庫的相關資訊。
[attach]502[/attach]

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


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

當我們點選『附加資料庫』項目命令後會出現如下圖的「附加資料庫」視窗。
[attach]504[/attach]


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


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

按下「附加資料庫」視窗中的「確定」按鈕,當出現圖7-26的訊息視窗時,資料庫即已完成附加工作。
[attach]507[/attach]


同樣地,如果您熟悉SQL Server操作與Transact-SQL程式語法,亦可使用下列預存程序敘述附加資料。[code][code]sp_attach_db [ @dbname = ] 'dbname' ,
    [ @filename1 = ] 'filename_n' [ ,...16 ][/code][/code]『[@dbname=]'dbname'』:是指定要卸離的資料庫名稱。
『[@filename1 =] 'filename_n'』:資料庫檔案的實體名稱,包括路徑,請依序加入資料庫的資料檔與記錄檔路徑與實體檔名。

頁: [1]

麻辣家族討論版版為 麻辣學園 網站成員  由 昱得資訊工作室 © Since 1993 所提供