SQL Server 2008 - 第2章 創建、管理 數據庫

第2章  創建數據庫

數據庫是用來存儲數據的空間,它作爲存儲結構的最高層次是其他一切數據庫操作的基礎。用戶可以通過創建數據庫來存儲不同類別或者形式的數據。

因此,在本章用戶將詳細地學習針對數據庫的基本操作和數據庫的日常管理操作,即如何創建數據庫、對數據/日誌文件進行操作、生成數據庫快照等日常操作。

本章學習目標:

Ø 瞭解數據庫對象及構成

Ø 掌握創建數據庫的兩種方法

Ø 掌握管理數據庫的方法

Ø  瞭解數據庫快照

2.1  SQL Server數據庫概述

SQL Server中的數據庫是由數據表的集合組成的,每個數據表中包含數據以及其他數據庫對象,這些對象包括視圖、索引、存儲過程和觸發器等。

數據庫系統使用一組操作系統文件來映射數據庫管理系統中保存的數據庫,數據庫中的所有數據和對象都存儲在其映射的操作系統文件中。這些操作系統文件可以是數據文件或日誌文件。

要熟練地理解和掌握數據庫,必須對數據庫的一些基本概念及構成有一個清楚的認識。

2.1.1  常見數據庫對象

數據庫中存儲了表、視圖、索引、存儲過程、觸發器等數據庫對象,這些數據庫對象存儲在系統數據庫或用戶數據庫中,用來保存SQL Server數據庫的基本信息及用戶自定義的數據操作等。

1.表與記錄

表是數據庫中實際存儲數據的對象。由於數據庫中的其他所有對象都依賴於表,因此可以將表理解爲數據庫的基本組件。一個數據庫可以有多個行和列,並且每列包含特定類型的信息。列和行也可以稱爲字段與記錄。字段是表中縱向元素,包含同一類型的信息,例如讀者卡號(Rcert)、姓名(name)和性別(Sex)等;字段組成記錄,記錄是表中的橫向元素,包含有單個表內所有字段所保存的信息,例如讀者信息表中的一條記錄可能包含一個讀者的卡號、姓名和性別等。如圖2-1所示爲【圖書管理系統(BookDateBase)】數據庫中【讀者信息(Reader)】數據表的內容.



圖2-1  【讀者信息(Reader)】數據表

2.視圖

視圖是從一個或多個基本(數據)表中導出的表,也被稱爲虛表。視圖與表非常相似,也是由字段與記錄組成。與表不同的是,視圖不包含任何數據,它總是基於表,用來提供一種瀏覽數據的不同方式。視圖的特點是,其本身並不存儲實際數據,因此可以是連接多張數據表的虛表,還可以是使用WHERE子句限制返回行的數據查詢的結果。並且它是專用的,比數據表更直接面向用戶。如圖2-2所示是正在創建的視圖,它的結果來自【圖書管理系統(BookDateBase)】數據庫中的【讀者信息(Reader)】表、【圖書信息(Books)】表和【借閱信息(BorrowOrReturn)】表。



圖2-2  【讀者信息_借閱信息_圖書信息表】視圖

3.索引

索引是一種無須掃描整個表就能實現對數據快速訪問的途徑,使用索引可以快速訪問數據庫表中的特定信息。索引是對數據庫表中一列或多列的值進行排序的一種結構,例如【讀者信息(Reader)】數據表中的【員工卡號(Rcert)】列。如果要查找某一讀者姓名,索引會幫助用戶更快地獲得所查找的信息。

4.約束

約束是SQL Server 2008實施數據一致性和完整性的方法,是數據庫服務器強制的業務邏輯關係。約束限制了用戶輸入到指定列中值的範圍,強制了引用完整性。主鍵和外鍵就是約束的一種形式。當在數據庫設計器中創建約束時,約束必須符合創建和更改表的ANSI標準。

5.數據庫關係圖

在講述規範化和數據庫設計時會詳細講述數據庫關係圖,這裏只要清楚數據庫關係圖是數據庫設計的視覺表示,它包括各種表、每一張表的列名以及表之間的關係。在一個實體關係(Entity-Relationship,或者叫E-R關係圖)中,數據庫被分成兩部分:實體(如“生產企業”和“顧客”)和關係(“提供貨物”和“消費”)。

6.默認值

如果在向表中插入新數據時沒有指定列的值,則默認值就是指定這些列中所的值。默認可以是任何取值爲常量的對象。默認值也是SQL Server提供確保數據一致性和完整性的方法。

在SQL Server 2008中,有兩種使用默認值的方法。第一種,在創建表時,指定默認值。如果使用SQL Server Management Studio,則可以在設計表時指定默認值。如果使用Transact-SQL語言,則在CREATETABLE語句中使用DEFAULT子句。第二種,使用CREATE DEFAULT語句創建默認對象,然後使用存儲過程sp_binddefault將該默認對象綁定到列上。

7.規則

規則和約束都是限制插入到表中的數據類型的信息。如果更新或插入記錄違反了規則,則插入或更新操作被拒絕。此外,規則可用於定義自定義數據庫類型上的限制條件。與約束不同,規則不限於特定的表。它們是獨立對象,可綁定到多個表,或者甚至綁定到特定數據類型(從而間接用於表中)。

8.存儲過程

存儲過程與其他編程語言中的過程類似,原因主要有以下幾點:

l  接收輸入參數並以輸出參數的格式向調用過程或批處理返回多個值

l  包含用於在數據庫中執行操作(包括調用其他過程)的編程語句

l  向調用過程或批處理的返回狀態值,以指明成功或失敗(以及失敗的原因)

l  可以使用EXECUTE語句來運行存儲過程。但是,存儲過程與函數不同,因爲存儲過程不返回取代其名稱的值,也不能直接在表達式中使用。

9.觸發器

觸發器是一種特殊類型的存儲過程,這是因爲觸發器也包含了一組Transact-SQL語句。但是,觸發器又與存儲過程明顯不同,例如觸發器可以執行。如果希望系統自動完成某些操作,並且自動維護確定的業務邏輯和相應的數據完整,那麼可以通過使用觸發器來實現。

觸發器可以查詢其他表,而且可以包含複雜的Transact-SQL語句。他們主要用於強制服從複雜的業務規則或要求。例如,用戶可以根據商品當前的庫存狀態,決定是否需要向供應商進貨。

 

在SQL Server 2008中,一個重要的特性是允許用戶使用熟悉的CLR語言創建存儲過程和觸發器。

 

10.用戶和角色

用戶是指對數據庫有存取權限的使用者。角色是指一組數據庫用戶的集合,和Windows中用戶組類似。數據庫中的用戶組可以根據需要添加,用戶如果被加入到某一角色,則將具有該角色的所有權限。

2.1.2  數據庫構成

在SQL Server中,用於數據存儲的實用工具是數據庫。而數據庫從大的方面分,包括系統數據庫和用戶數據庫。每個SQL Server數據庫(無論是系統數據庫還是用戶數據庫)在物理上都由至少一個數據文件和至少一個日誌文件組成。出於分配和管理目的,可以將數據庫文件分成不同的文件組。

1.系統數據庫

無論SQL Server的哪一個版本,都存在一組系統數據庫。系統數據庫中保存的系統表用於系統的總體控制。系統數據庫保存了系統運行及對用戶數據的操作等基本信息。這些系統數據分別是Master、Model、Msdb和Tempdb。這些系統數據庫的文件存儲在SQL Server的默認安裝目錄的MMSQL子目錄的Data文件夾中。

l  master數據庫

master數據庫是SQL Server是最重要的數據庫,它位於SQL Server的核心,如果該數據庫被損壞,SQL Server將無法正常工作。master數據庫中包含了所有的登錄名或用戶ID所屬的角色;服務器中的數據庫的名稱及相關信息;數據庫的位置;SQLServer如何初始化四方面的重要信息。

 

定期備份master數據庫非常重要。確保備份master數據庫是備份策略的一部分。

 

l  model數據庫

創建數據庫時,總是以一套預定義的標準爲模型。例如,若希望所有的數據庫都有確定的初始大小,或者都有特定的信息集,那麼可以把這些信息放在model數據庫中,以model數據庫作爲其他數據庫的模板數據庫。如果想要使所有的數據庫都有一個特定的表,可以把該表放在model數據庫裏。

model數據庫是tempdb數據庫的基礎。對model數據庫的任何改動都將反映在tempdb數據庫中,所以,在決定對model數據庫有所改變時,必須預先考慮好並多加小心。

l  Msdb數據庫

msdb給SQL Server代理提供必要的信息來運行作業,因而,他是SQL Server中另一個十分重要的數據庫。

SQL Server代理是SQL Server中的一個Windows服務,用以運行任何已創建的計劃作業(例如包含備份處理的作業)。作業是SQLServer中定義的自動運行的一系列操作,他不需要任何手工干預來啓動。

l  Tempdb數據庫

Tempdb數據庫用作系統的臨時存儲空間,其主要作用是存儲用戶建立的臨時表和臨時存儲過程,存儲用戶說明的全局變量值,爲數據排序創建臨時表,存儲用戶利用遊標說明所篩選出來的數據。

 

因爲tempdb的大小是有限的,所以在使用他時必須當心,不要讓tempdb被來自不好的存儲過程(對於創建有太多記錄的表沒有明確限制)的表中的記錄所填滿。如果發生了這種情況,不僅當前的處理不能繼續,整個服務器都可能無法工作,從而將影響到在該服務器上的所有用戶。

 

使用數據庫的時候要記住一點,SQL Server 2008的設計是可以在必要時自動擴展數據庫的。這意味着master、model、tempdb、msdb和其他關鍵的數據庫將不會在正常的情況下缺少空間的。如表2-1中列出了這些系統數據庫在SQLServer 2008系統中的主文件、邏輯名稱、物理和文件增長比例。

表2-1  系統數據庫

系統數據庫

主文件

邏輯名稱

物理名稱

文件增長

master

主數據

master

master.mdf

按10%自動增長,直到磁盤已滿

Log

mastlog

mastlog.ldf

按10%自動增長,直到達到最大值2TB

msdb

主數據

MSDBData

MSDBData.mdf

按256KB自動增長,直到磁盤已滿

Log

MSDBLog

MSDBLog.ldf

按256KB自動增長,直到達到最大值2TB

model

主數據

modeldev

model.mdf

按10%自動增長,直到磁盤已滿

Log

modellog

modellog.ldf

按10%自動增長,直到達到最大值2TB

tempdb

主數據

tempdev

tempdb.mdf

按10%自動增長,直到磁盤已滿

Log

templog

templog.ldf

按10%自動增長,直到達到最大值2TB

2.示例數據庫

示例數據庫是Microsoft給出的用於用戶使用的數據庫。示例數據庫中包含了各種數據庫對象,使用戶可以自由地對其中的數據或者表結構進行查詢、修改等操作。

在安裝SQL Server 2008的過程中,可以在安裝組件窗口中選擇安裝示例數據庫,默認的示例數據庫有AdventureWorks和AdventureWorksDW兩個。AdventureWorks數據庫相對於以前SQLServer版本的示例數據庫更加健壯。雖然他對於初學者有一定的複雜性,但是該數據庫具有相當完成的實例,及更接近實際的數據容量、複雜的結構和部件。AdventureWorksDW數據庫是AnalysisServices(分析服務)的示例數據庫。Microsoft將分析示例數據庫與事務示例數據庫聯繫在一起,以提供展示兩者協同運行的完成示例數據庫。

2.1.3  數據庫文件和文件組

在SQL Server 2008系統中,一個數據庫至少有一個數據文件和一個事務日誌文件。當然,該數據庫也可以有多個數據文件和多個事務日誌文件。數據文件用於存放數據庫的數據和各種對象,事務日誌文件用於存放事務日誌。

數據文件又可以分成主數據文件和輔助數據文件兩種形式。主數據文件是數據庫的起點,每一個數據庫都有且僅有一個主數據文件。主數據文件名稱的默認後綴是.mdf。輔助數據文件是可選的,用來存放不在主數據文件中的其他數據和對象。數據庫可以沒有輔助數據文件,也可以有多個輔助數據文件,默認後綴是.ndf。

事務是一個單元的工作,該單元的工作要麼全部完成,要麼全部不完成。SQL Server 2008系統具有事務功能,可以保證數據庫操作的一致性和完整性。SQL Server 2008系統使用數據庫的事務日誌來實現事務的功能。通常情況下,事務日誌記錄了對數據庫的所有修改操作。事務日誌記錄了每一個事務的開始、對數據的改變和取消修改等信息。隨着對數據庫的持續不斷地操作,日誌是連續增加的。對於一些大型操作,例如創建索引,日誌只是記錄該操作的事實,而不是記錄所發生的數據。事務日誌還記錄了數據頁的分配和釋放,以及每一個事務的提交和回滾等信息。這樣就允許SQL Server系統恢復和取消事務。當事務沒有完成時,則取消該事務。事務日誌以操作系統文件的形式存在,在數據庫中被稱爲日誌文件。每一個數據庫都至少有一個日誌文件。日誌文件名稱的默認後綴是.ldf。

在操作系統中,數據庫是作爲數據文件和日誌文件而存在的,明確地指明瞭這些文件的位置和名稱。但是,在SQL Server系統內部,例如在Transact-SQL語言中,由於物理文件名稱比較長,使用起來非常不方便。爲此,數據庫又有邏輯文件的概念。每一個物理文件都對應一個邏輯文件。在使用Transact-SQL語句的過程中,引用邏輯文件非常快捷和方便。

文件組就是文件的邏輯集合。文件組可以把一些指定的文件組合在一起,以方便管理和分配數據。例如,在某個數據庫中,3個文件(如data1.ndf、data2.ndf和data3.ndf)分別創建在3個不同的磁盤驅動器中,並且爲他們指定了一個文件組group1。以後,所創建的表可以明確指定存放在文件組group1中。對該表中數據的查詢將分佈在這3個磁盤上同時進行,因此可以通過執行並行訪問而提高查詢性能。在創建表時,不能指定將表放在某個文件中,只能指定將表放在某個文件組中。因此,如果希望將某個表放在特定的文件中,必須通過創建文件組來實現。使用文件和文件組時,應該考慮下列因素:

l  一個文件或者文件組只能用於一個數據庫,不能用於多個數據庫。

l  一個文件只能是某一個文件組的成員,不能是多個文件組的成員。

l  數據庫的數據信息和日誌信息不能放在同一個文件或文件組中,數據文件和日誌文件總是分開的。

l  日誌文件永遠也不能是任何文件組的一部分。

在SQL Server 2008系統中,可管理的最小物理空間以頁爲單位,每一個頁的大小是8KB,即8192字節。在表中,每一行數據都不能跨頁存儲。這樣,表中每一行的字節數不能超過8192個字節。在每一個頁上,由於系統佔用了一部分空間用來記錄與該頁有關的系統信息,所以每一個頁可用的空間是8060個字節。但是,包含了varhcar、nvarchar、varbinary等數據類型的列的表則不受這種規則限制。每8個連續頁稱爲一個區,即區的大小是64KB。這意味着1MB的數據庫有16個區。區用於控制表、索引的存儲。

通過理解數據庫的空間管理,可以估算數據庫的設計尺寸。數據庫的大小等於所有表大小與索引大小之和。假設某個數據庫只有一個表,該表的數據行字節是800Byte。這時,一個數據頁上最多隻能放10行數據。如果該表大約有100萬行的數據,那麼該表佔用10萬個數據頁的空間。因此,該數據庫的大小估計爲:100000×8KB=800000KB=781.25MB。根據數據庫大小的估計值,再考慮其他的因素,就可以得到數據庫的設計值。

 

SQL Server不強制這主數據文件、輔助數據文件和日誌文件類型的文件必須帶mdf、ndf和ldf擴展名,但使用擴展名指出文件類型是個良好的文件命名習慣。

2.2  創建數據庫

創建數據庫就是爲數據庫確定名稱、大小、存放位置、文件名和所在文件組的過程。在一個SQL Server 2008實例中,最多可以創建32767個數據庫,數據庫的名稱必須滿足系統的標識符規則。在命名數據庫時,一定要使數據庫名稱簡短並有一定的含義。

在SQL Server 2008中創建數據庫的方法主要有兩種:一是在SQL Server Management Studio窗口中使用現有命令和功能,通過方便的圖形化嚮導創建;二是通過編寫Transact-SQL語句創建。

2.2.1  使用圖形化嚮導創建

SQL ServerManagement Studio是SQL Server系統運行的核心窗口,它提供了用於數據庫管理的圖形工具和功能豐富的開發環境,方便數據庫管理員及用戶進行操作。

首先來介紹如何使用SQL Server Management Studio來創建自己的用戶數據庫。在SQL Server 2008中,通過SQL ServerManagement Studio創建數據庫是最容易的方法,對初學者來說簡單易用。下面以創建本書的示例數據庫【圖書管理系統(BookDateBase)】數據庫爲例,對這種方法作詳細介紹。具體的操作步驟如下所示:

(1)從【開始】菜單中選擇【程序】|Microsoft SQL Server 2008|SQL Server Management Studio命令,打開Microsoft SQL Server ManagementStudio窗口,並使用Windows或SQL Server身份驗證建立連接。如圖2-3所示。


圖2-3  連接服務器身份驗證

(2)在【對象資源管理器】窗格中展開服務器,然後選擇【數據庫】節點。

(3)在【數據庫】節點上右擊,從彈出的快捷菜單中選擇【新建數據庫】命令,如圖2-4所示。


圖2-4  選擇【新建數據庫】命令

(4)執行上述操作後,會彈出【新建數據庫】對話框,如圖2-5所示。

在這個對話框中有三個頁,分別是【常規】、【選項】和【文件組】頁。完成這三個選項中的內容之後,就完成了數據庫的創建工作。


圖2-5  【新建數據庫】對話框

(5)在【數據庫名稱】文本框中輸入要新建數據庫的名稱,例如這裏輸入“工資管理系統”。

(6)在【所有者】文本框中輸入新建數據庫的所有者,如sa。根據數據庫的使用情況,選擇啓用或者禁用【使用全文索引】複選框。

(7)在【數據庫文件】列表中,包括兩行:一行是數據文件,而另一行是日誌文件。通過單擊下面相應按鈕,可以添加或者刪除相應的數據文件。該列表中各字段值的含義如下:

l  邏輯名稱  指定該文件的文件名,其中數據文件與SQL Server 2000不同,在默認情況下不再爲用戶輸入的文件名添加下劃線和Data字樣,相應的文件擴展名並未改變。

l  文件類型  用於區別當前文件是數據文件還是日誌文件。

l  文件組  顯示當前數據庫文件所屬的文件組。一個數據庫文件只能存在於一個文件組裏。

 

在創建數據庫時,系統自動將model數據庫中的所有用戶自定義的對象都複製到新建的數據庫中。用戶可以在model系統數據庫中創建希望自動添加到所有新建數據庫中的對象,例如表、視圖、數據類型、存儲過程等。

 

l  初始大小  制定該文件的初始容量,在SQL Server 2008中數據文件的默認值爲3MB,日誌文件的默認值爲1MB.

l  自動增長  用於設置在文件的容量不夠用時,文件根據何種增長方式自動增長。通過單擊【自動增長】列中的省略號按鈕,打開【更改自動增長設置】窗口進行設置。如圖2-6和圖2-7所示分別爲數據文件、日誌文件的自動增長設置窗口。

         


圖2-6 數據文件自動增長設置         


圖2-7  日誌文件自動增長設置

l  路徑  指定存放該文件的目錄。在默認情況下,SQL Server 2008將存放路徑設置爲SQL Server 2008安裝目錄下的data子目錄。單擊該列中的按鈕可以打開【定位文件夾】對話框更改數據庫的存放路徑。

(8)單擊【選項】按鈕,設置數據庫的排序規則、恢復模式、兼容級別和其他需要設置的內容,如圖2-8所示。


圖2-8  新建數據庫【選項】頁

(9)單擊【文件組】可以設置數據庫文件所屬的文件組,還可以通過【添加】或者【刪除】按鈕更改數據庫文件所屬的文件組。如圖2-9所示。


圖2-9  新建數據庫【文件組】頁

(10)完成以上操作後,就可以單擊【確定】關閉【新建數據庫】對話框。至此,成功創建了一個數據庫,可以通過【對象資源管理器】窗格查看新建的數據庫。

 

在SQL Server 2008中創建新的對象時,他可能不會立即出現在【對象資源管理器】窗格中,可右擊對象所在位置的上一層,並選擇【刷新】命令,即可強制SQL Server 2008重新讀取系統表並顯示數據中的所有新對象。

2.2.2  使用Transact-SQL語句創建

使用SQL Server Management Studio創建數據庫可以方便應用程序對數據的直接調用。但是,有些情況下,不能使用圖形化方式創建數據庫。比如,在設計一個應用程序時,開發人員會直接使用Transact-SQL在程序代碼中創建數據庫及其他數據庫對象,而不用在製作應用程序安裝包時再放置數據庫或讓用戶自行創建。

SQL Server 2008使用的Transact-SQL是標準SQL(結構化查詢語言)的增強版本,使用他提供的CREATE DATABASE語句同樣可以完成新建數據庫操作。下面同樣以創建【圖書管理系統(BookDateBase)】數據庫爲例來介紹如何使用Transact-SQL語句創建一個數據庫。

使用CREATE DATABASE語句創建數據庫最簡單的方式如下所示:

CREATEDATABASE databaseName

按照方式只需指定databaseName參數即可,他表示要創建的數據庫的名稱,其他與數據庫有關的選項都採用系統的默認值。例如,創建【圖書管理系統(BookDateBase)】數據庫,則語句爲:

CREATEDATABASE  BookDateBase

1.CREATE DATABASE語法格式

如果希望在創建數據庫時明確的指定數據庫的文件和這些文件的大小以及增長的方式。首先就需要了解CREATE DATABASE語句的語法,其完整的格式如下:

CREATEDATABASE database_name

[ON[PRIMARY]

[<filespec>[1,…n]]

[,<filegroup>[1,…n]]

]

[

[LOG ON{<filespec> [1,…n]}]

[COLLATEcollation_name]

[FOR{ATTACH [WITH <service_broker_option>]|ATTACH_REBUILD_LOG}]

[WITH<external_access_option>]

]

[;]

<filespec>::=

{

[PRIMARY]

(

[NAME=logical_file_name,]

FILENAME='os_file_name'

[,SIZE=size[KB|MB|GB|TB]]

[,MAXSIZE={max_size[KB|MB|GB|TB]|UNLIMITED}]

[,FILEGROWTH=growth_increment[KB|MB|%]]

)[1,…n]

}

<filegroup>::=

{

FILEGROUPfilegroup_name

<filespec>[1,…n]

}

<external_access_option>::=

{

DB_CHAINING{ON|OFF}|TRUSTWORTHY{ON|OFF}

}

<service_broke_option>::=

{

ENABLE_BROKE|NEW_BROKE|ERROR_BROKER_CONVERSATIONS

}

2.CREATE DATABASE語法格式說明

在語法格式中,每一種特定的符號都表示有特殊的含義,其中:

l  方括號[]中的內容表示可以省略的選項或參數,[1,…n]表示同樣的選項可以重複1到n遍。

l  如果某項的內容太多需要額外的說明,可以用<>括起來,如句法中的<filespec>和<filegroup>,而該項的真正語法在::=後面加以定義。

l  大括號{}通常會與符號|連用,表示{}中的選項或參數必選其中之一,不可省略。

例如,MAXSIZE ={ max_size [ KB | MB | GB | TB ] | UNLIMITED }表示定義數據庫文件的最大容量,或者指定一個具體的容量max_size [KB | MB | GB | TB ],或者指定容量沒有限制UNLIMITED,但是不能空缺。下面表2-2列出了關於語法中主要參數的說明。

表2-2 語法參數說明

參數

說明

database_name

數據庫名稱

Logical_file_name

邏輯文件名稱

os_file_name

操作系統下的文件名和路徑

size

文件初始容量

max_size

文件最大容量

growth_increment

自動增長值或比例

filegroup_name

文件組名

3.CREATE DATABASE關鍵字和參數說明

l  CREATE DATABASE database_name 用於設置數據庫的名稱,可長達128個字符,需要將database_name替換爲需要的數據庫名稱,如【工資管理系統】數據庫。在同一個數據庫中,數據庫名必須具有惟一性,並符合標識命名標準。

l  NAME=logical_file_name  用來定義數據庫的邏輯名稱,這個邏輯名稱將用來在Transact_SQL代碼中引用數據庫。該名稱在數據庫中應保持惟一,並符合標識符的命名規則。這個選項在使用了FORATTACH時不是必須的。

l  FILENAME=os_file_name  用於定義數據庫文件在硬盤上的存放路徑與文件名稱。這必須是本地目錄(不能是網絡目錄),並且不能是壓縮目錄。

l  SIZE=size[KB|MB|GB|TB]  用來定義數據文件的初始大小,可以使用KB、MB、GB或TB爲計量單位。如果沒有爲主數據文件指定大小,那麼SQL Server將創建與model系統數據庫相同大小的文件。如果沒有爲輔助數據庫文件指定大小,那麼SQL Server將自動爲該文件指定1MB大小。

l  MAXSIZE={max_size[KB|MB|GB|TB]UNLIMITED}  用於設置數據庫允許達到的最大大小,可以使用KB、MB、GB、TB爲計量單位,也可以爲UNLIMTED,或者省略整個子句,使文件可以無限制增長。

l  FILEGROWTH=growth_increment[KB|MB|%] 用來定義文件增長所採用的遞增量或遞增方式。他可以使用KB、MB或百分比(%)爲計量單位。如果沒有指定這些符號之中的任一符號,則默認MB爲計量單位。

l  FILEGROUP filegroup_name  用來爲正在創建的文件所基於的文件組指定邏輯名稱。

4.使用CREATE DATABASE創建數據庫

在掌握了上述內容後,接下來介紹如何使用CREATE DATABASE語句創建【工資管理系統】數據庫。

(1)打開MicrosoftSQL Server Management Studio窗口,並連接到服務器。

(2)選擇【文件】|【新建】|【數據庫引擎查詢】命令或者單擊標準工具欄上的【新建查詢】按鈕(),創建一個查詢輸入窗口。

 

通過選擇【文件】|【新建】|【數據庫引擎查詢】命令創建查詢輸入窗口會彈出【連接到數據庫引擎】對話框需要身份驗證連接到服務器,而通過單擊【新建查詢】按鈕()不會出現該對話框。

 

(3)在窗口內輸入語句,創建【圖書管理系統(BookDateBase)】數據庫,保存位置爲“E:\張帥\zs SQL2008shugao\SQL2008\第3章 管理數據庫 代碼”。CREATE DATABASE語句如下所示:

CREATEDATABASE  BookDateBase

ON

(

NAME=BookDateBase_DAT,

FILENAME='E:\張帥\zs SQL2008 shugao\SQL2008\第3章管理數據庫 代碼\BookDateBase_DAT.mdf',

SIZE=3MB,

MAXSIZE=50MB,

FILEGROWTH=10%

)

LOGON

(

NAME=BookDateBase_LOG,

FILENAME='E:\張帥\zs SQL2008 shugao\SQL2008\第3章管理數據庫 代碼\BookDateBase_LOG.ldf',

SIZE=1MB,

MAXSIZE=10MB,

FILEGROWTH=10%

)

 GO

(4)單擊【執行】按鈕()執行語句。如果執行成功,在查詢窗口內的【查詢】窗格中,可以看到一條“命令已成功完成。”的消息。然後在【對象資源管理器】窗格中刷新,展開數據庫節點就能看到剛創建的【圖書管理系統】數據庫。如圖2-10所示。


圖2-10  CREATE DATABASE創建數據庫

在上述的例子中,創建了【圖書管理系統(BookDateBase)】數據庫,其中NAME關鍵字指定了數據文件的邏輯名稱是“BookDateBase_DAT”,日誌文件的邏輯名稱是“BookDateBase_LOG”,而他的數據文件的物理名稱是通過FILENAME關鍵字指定的。在【工資管理系統(BookDateBase)】數據庫中,通過SIZE關鍵字把數據文件的大小設置爲3MB,最大值爲50MB,按10%的比例增長,日誌文件的大小設置爲1MB,最大值爲10MB,按10%的方式增長。整個數據庫的大小爲:數據文件大小(3MB)+日誌文件大小(1MB)=4MB。

 

如果感覺以後數據庫會不斷增長,那麼就指定其自動增長方式。反之,最好不要指定其自動增長,以提高數據的使用效率。

5.創建文件組的【圖書管理系統(BookDateBase)】數據庫

如果數據庫中的數據文件或日誌文件多於1個,則文件之間使用逗號隔開。當數據庫有兩個或兩個以上的數據文件時,需要指定哪一個數據文件是主數據文件。默認情況下,第一個數據文件就是主數據文件,也可以使用PRIMARY關鍵字來指定主數據文件。

下面重新創建【圖書管理系統(BookDateBase)】數據庫,讓該數據庫包含3個數據文件和2個日誌文件。並將後兩個數據文件存儲在名稱爲group1的文件組中。代碼如下所示:

CREATE DATABASE  BookDateBase

ON PRIMARY

(

NAME= BookDateBase _DAT,

FILENAME='E:\張帥\zs SQL2008 shugao\SQL2008\第3章 管理數據庫 代碼\ BookDateBase _DAT.mdf',

SIZE=3MB,

MAXSIZE=50MB,

FILEGROWTH=10%

),

FILEGROUP group1

(

NAME= BookDateBase _DAT1,

FILENAME='E:\張帥\zs SQL2008 shugao\SQL2008\第3章 管理數據庫 代碼\ BookDateBase _DAT1.ndf',

SIZE=2MB,

MAXSIZE=10MB,

FILEGROWTH=5%

),

(

NAME= BookDateBase _DAT2,

FILENAME='E:\張帥\zs SQL2008 shugao\SQL2008\第3章 管理數據庫 代碼\ BookDateBase _DAT2.ndf',

SIZE=2MB,

MAXSIZE=20MB,

FILEGROWTH=15%

)

LOG ON

(

NAME= BookDateBase _LOG,

FILENAME='E:\張帥\zs SQL2008 shugao\SQL2008\第3章 管理數據庫 代碼\ BookDateBase _LOG.ldf',

SIZE=1MB,

MAXSIZE=10MB,

FILEGROWTH=10%

),

(

NAME= BookDateBase _LOG1,

FILENAME='E:\張帥\zs SQL2008 shugao\SQL2008\第3章 管理數據庫 代碼\ BookDateBase _LOG1.ldf',

SIZE=1MB,

MAXSIZE=5MB,

FILEGROWTH=5%

)

 

重新創建【圖書管理系統(BookDateBase)】數據庫時必須先刪除之前創建的那個【圖書管理系統(BookDateBase)】數據庫。右鍵單擊要刪除的數據庫,選擇“刪除”命令,單擊“確定”按鈕。

 

上述代碼中,創建了3個數據文件和2個日誌文件分別爲:BookDateBase_DAT,BookDateBase_DAT1,BookDateBase_DAT2和BookDateBase_LOG,BookDateBase_LOG1,將“BookDateBase_DAT”設爲了主數據文件。創建之後,就可以在“E:\張帥\zsSQL2008shugao\SQL2008\第3章管理數據庫代碼”目錄下看到所創建的文件。

2.3  管理數據庫

在創建完成數據庫之後,就可以對數據庫進行管理操作,主要包括查看、修改和刪除。查看是指可以瀏覽數據庫的各種屬性和狀態;修改是指可以修改數據庫的名稱、大小、自動增長等;刪除數據庫是對不需要的數據庫進行刪除,以釋放多餘的磁盤空間。

2.3.1  查看數據庫信息

Microsoft SQL Server2008系統中,查看數據庫信息有很多種方法,例如,可以使用目錄視圖、函數和存儲過程等查看有關數據庫的基本信息。下面分別來介紹這幾種查看數據庫信息的基本方式。

1.使用目錄視圖

常見的查看數據庫基本信息的操作有:

l  使用sys.databases數據庫和文件目錄視圖查看有關數據庫的基本信息

l  使用sys.database_files查看有關數據庫文件的信息

l  使用sys.filegroups查看有關數據庫組的信息

l  使用sys.maste_files查看數據庫文件的基本信息和狀態信息

2.使用函數

可以使用DATABASEPROPERTYEX函數來查看指定數據庫中的指定選項的信息,該函數一次只能返回一個選項的設置。例如,要查看【圖書管理系統(BookDateBase)】數據庫中的Version選項的設置信息,可以使用如下語句:

select DATABASEPROPERTYEX(' BookDateBase','Version')

代碼的執行結果如圖2-11所示:


圖2-11  查看數據庫選項設置

3.使用存儲過程

使用sp_spaceused存儲過程可以顯示數據庫使用和保留的空間。下面來查看【圖書管理系統(BookDateBase)】數據庫的空間大小和已經使用的空間等信息。如圖2-12所示。


圖2-12  使用sp_spaceused存儲過程

可以查看所有數據庫的基本信息,仍然來查看【圖書管理系統(BookDateBase)】數據庫的信息,如圖2-13所示。


圖2-13  使用sp_helpdb存儲過程

除上面介紹的幾種方法外,還可以利用Microsoft SQL Server Management Studio窗口來查看數據庫信息。在【對象資源管理器】窗格中右擊要查看信息的數據庫,選擇【屬性】命令,在彈出的【數據庫屬性】對話框中就可以查看到數據庫的常規信息、文件信息、文件組信息、選項信息等,如圖2-14所示。


圖2-14  【數據庫屬性】對話框

2.3.2  修改數據庫的大小

修改數據庫的大小,其實就是修改數據文件和日誌文件的長度,或者增加/刪除文件。修改數據庫最常用的兩種方法爲:通過ALTER DATABASE語句和圖形界面。下面分別來介紹這兩種修改數據庫大小的方法。

1.使用ALTER DATABASE語句

下面使用ALTER DATABASE語句將【圖書管理系統(BookDateBase)】數據庫擴大5MB,可以通過爲該數據庫添加一個大小爲5MB的數據文件來實現。語句如下所示:

ALTER DATABASE  BookDateBase

ADD FILE

(

NAME= BookDateBase_DAT3,

FILENAME='E:\張帥\zs SQL2008 shugao\SQL2008\第3章 管理數據庫代碼\ BookDateBase _DAT3.mdf',

SIZE=5MB,

MAXSIZE=30MB,

FILEGROWTH=20%

)

上述語句代碼將添加一個名稱爲工資管理系統_DAT3,大小爲5MB的數據文件,最大值爲30MB,並可按20%自動增長。

 

如果要增加日誌文件,可以使用ADD LOG FILE子句,在一個ALTER DATABASE語句中,一次可以增加多個數據文件或日誌文件,多個文件之間需要使用,分開。

 

2.使用圖形界面

下面來介紹如何在圖形界面下修改數據庫的大小:

(1)在【對象資源管理器】窗格中,右擊要修改大小的數據庫(如圖書管理系統數據庫BookDateBase),選擇【屬性】命令。

(2)在【數據庫屬性】對話框的【選擇頁】下選擇【文件】選項。

(3)在【工資管理系統】數據文件行的【初始大小】列中,輸入要修改的值。同樣在日誌文件行的【初始大小】列中,輸入要修改的值。

(4)單擊【自動增長】列中的按鈕(),打開【自動增長設置】窗口,可設置自動增長的方式及大小。如圖2-15所示。


圖2-15  【自動增長設置】窗口

(5)如果要添加文件,可以直接在【數據庫屬性】對話框中單擊【添加】按鈕,進行相應大小設置即可。

(6)完成修改後,單擊【確定】按鈕完成修改數據庫大小的操作。

2.3.3  刪除數據庫

數據庫在使用中,隨着數據庫數量的增加,系統的資源消耗越來越多,運行速度也會越來越慢。這時,就需要調整數據庫,調整方法有很多種。例如,將不再需要的數據庫刪除,以此釋放被佔用的磁盤空間和系統消耗。在SQL Server 2008中,有兩種刪除數據庫的方法:使用圖形界面和DROP DATABASE語句。

1.使用圖形界面

(1)在【對象資源管理器】窗格中選中要刪除的數據庫,右擊選擇【刪除】命令。

(2)在彈出的【刪除對象】對話框中,單擊【確定】按鈕確認刪除。刪除操作完成後會自動返回SQL Server Management Studio窗口,如圖2-16所示。


圖2-16  【刪除對象】窗口

2.DROP DATABASE語句

使用DROP DATABASE語句刪除數據庫的語法如下:

DROPDATABASE database_name [,…n]

其中,database_name爲要刪除的數據庫名,[,…n]表示可以有多於一個數據庫名。例如,要刪除數據庫“圖書管理系統(BookDateBase)”,可使用如下的DROP DATABASE語句:

DROPDATABASE  BookDateBase

 

使用DROP DATABASE刪除數據庫不會出現確認信息,所以使用這種方法時要小心謹慎。此外,千萬不能刪除系統數據庫,否則會導致SQL Server 2008服務器無法使用。

2.3.4  其他數據庫操作

到目前爲此,已經學習了基本的數據庫操作形式,除這些操作以外,數據的操作還包括分離數據庫、附加數據庫和收縮數據庫等。下面就分別來簡單介紹一下他們是怎樣操作的。

1.分離數據庫

分離數據庫就是指將數據庫從SQL Server 2008的實例中分離出去,但是不會刪除該數據庫的文件和事務日誌文件,這樣,該數據庫可以再附加到其他的SQL Server 2008的實例上去。

首先,可以使用sp_detach_db存儲過程來執行分離數據庫操作。例如,要分離【圖書管理系統(BookDateBase)】數據庫,則該執行語句如下所示:

EXECsp_detach_db BookDate

不過,並不是所有的數據庫都可以分離的,如果要分離的數據庫出現下列任何一種情況都將無法分離數據庫:

l  已複製併發布數據庫。如果進行復制,則數據庫必須是未發佈的。如果要分離數據庫,必須先通過執行sp_replicationdboption存儲過程禁用發佈後再進行分離。

l  數據庫中存在數據庫快照。此時,必須首先刪除所有數據庫快照,然後才能分離數據庫。

l  數據庫處於未知狀態。在SQLServer 2008中,無法分離可疑和未知狀態的數據庫,必須將數據庫設置爲緊急模式,才能對其進行分離操作。

當然,也可以使用圖開界面來執行分離數據庫的操作。步驟如下:

(1)在【對象資源管理器】窗格中右擊想要分離的數據庫(如,圖書管理系統BookDateBase),選擇【任務】|【分離】命令。

(2)在打開的【分離數據庫】對話框,查看在【數據庫名稱】列中的數據庫名稱,驗證這是否爲要分離的數據庫,如圖2-17所示。


圖2-17  【分離數據庫】對話框

(3)在【狀態】列中的是如果顯示的是“未就緒”,則【消息】列將顯示有關數據庫的超鏈接信息。當數據庫涉及複製時,【消息】列將顯示Database replicated。

(4)數據庫有一個或多個活動連接時,【消息】列將顯示“<活動連接數>個活動連接”。在可以分離數據列之前,必須啓用【刪除連接】複選框來斷開與所有活動連接的連接。

(5)分離數據庫準備就緒後,單擊【確定】按鈕。

2.附加數據庫

附加數據庫是指將當前數據庫以外的數據庫附加到當前數據庫實例中。在附加數據庫時,所有數據庫文件(.mdf和.ndf文件)都必須是可用的。如果任何數據文件的路徑與創建數據庫或上次附加數據庫時的路徑不同,則必須指定文件的當前路徑。在附加數據庫的過程中,如果沒有日誌文件,系統將創建一個新的日誌文件。

下面就將剛分離後的【圖書管理系統(BookDateBase)】數據庫再附加到當前數據庫實例中。可以執行下列語句進行數據庫附加操作,附加時會加載該數據庫所有的文件,包括主數據文件、輔助數據文件和事務日誌文件。執行語句如下所示:

CREATEDATABASE  BookDateBase

ON

(

    NAME='BookDateBase_DATA',

    FILENAME = 'E:\張帥\zs SQL2008 shugao\SQL2008\第3章管理數據庫 代碼\BookDateBase_DAT.mdf'

)

LOGON

(

    NAME=BookDateBase_LOG,

    FILENAME='E:\張帥\zs SQL2008 shugao\SQL2008\第3章 管理數據庫代碼\BookDateBase_LOG.ldf'

)

FORATTACH

同樣,附加數據庫也可以使用圖形界面窗口。具體操作步驟如下所示:

(1)在【對象資源管理器】窗格中,右擊【數據庫】節點並選擇【附加】命令。

(2)在打開的【附加數據庫】對話框中單擊【添加】按鈕,從彈出的【定位數據庫文件】對話框中選擇要附加的數據庫所在的位置,再依次單擊【確定】按鈕返回,如圖2-18所示。


圖2-18  【附加數據庫】對話框

(3)回到【對象資源管理器】中,展開【數據庫】節點,將看到【工資管理系統(BookDateBase)】數據庫已經成功附加到了當前的實例數據庫。

3.收縮數據庫

如果數據庫的設計尺寸過大,或者刪除了數據庫中的大量數據,這時數據庫依然會耗費大量的磁盤資源。根據用戶的實際需要,可以對數據庫進行收縮。在Microsoft SQL Server 2008系統中,收縮數據庫有以下3種方式。

l  使用AUTO_SHRINK數據庫選項設置自動收縮數據庫

將AUTO_SHRINK選項設置爲ON後,數據庫引擎將自動收縮具有可用空間的數據庫。此選項可以使用ALTER DATABASE語句來進行設置。默認情況下,此選項設置爲OFF。數據庫引擎會定期檢查每個數據庫的空間使用情況。如果某個數據庫的AUTO_SHRINK選項設置爲ON時,則數據庫引擎將自動減小數據庫中的文件。設置AUTO_SHRINK選項的語法格式如下所示:

ALTERDATABASE database_name SET AUTO_SHRINK ON

l  使用DBCC SHRINKDATABASE命令收縮數據庫

使用這種方式,要求手動的來收縮數據庫的大小,他是一種比自動收縮數據庫更加靈活的收縮數據庫的方式,可以對整個數據庫進行收縮。DBCC SHRINKDATABASE命令的基本語法格式如下所示:

DBCCSHRINKDATABASE ('database_name',target_percent)

l  使用DBCC SHRINKDFILE命令收縮數據庫文件

此命令可以收縮指定的數據庫文件,還可以將文件收縮至小於其初始創建的大小,並且重新設置當前的大小爲其初始創建的大小。DBCC SHRINKDFILE命令的基本語法形式如下所示:

DBCCSHRINKDFILE ('file_name',target_size)

2.4  創建數據庫快照

數據庫快照是源數據庫的只讀、靜態視圖。一個源數據庫可以有多個數據庫快照。數據庫快照的主要作用是:維護歷史數據以用於製作各種報表,可以使用數據庫快照將出現錯誤的源數據庫恢復到創建快照時的狀態。例如,在財務年度結束時,通過創建數據庫快照可以有效地製作各種財務報表。

3.4.1  數據庫快照簡介

簡單的說,快照就是數據庫在某一指定時刻的照片。顧名思義,數據庫快照(Database Snapshot)就像是爲數據庫照了相片一樣。相片實際是照相時刻被照對象的靜態呈現,而數據庫快照則提供了源數據庫在創建快照時刻的只讀、靜態視圖。一旦爲數據庫建立了快照後,這個數據庫快照就是創建快照那時刻數據庫的情況,雖然數據庫還在不斷變化,但是這個快照不會再改變。

數據庫快照在數據頁級別上進行。當創建了某個數據庫的數據庫快照後,數據庫快照使用一種稀疏文件維護源數據頁。如果源數據庫中的數據頁上的數據沒有更改,那麼對數據庫快照的讀操作實際上就是讀源數據庫中的這些未更改的數據頁。如果源數據庫中的某些數據頁上的數據被更改,則更改前的源數據頁已經複製到數據快照的稀疏文件中去,對這些數據的讀操作實際上就是讀取稀疏文件中複製過來的數據頁。如果源數據庫中的數據更改頻繁,會導致數據庫快照中稀疏文件的大小增長的很快。爲了避免數據庫快照中的稀疏文件過大,可以通過創建新的數據庫快照來解決這一問題。

3.4.2  創建數據庫快照

在Microsoft SQL Server 2008系統中,使用CREATE DATABASE語句創建數據庫快照。創建數據庫快照的基本語法格式如下所示:

CREATEDATABASE database_snapshot_name

ON

(

NAME=logical_file_name,

FILENAME='os_file_name'

)[,…n]

ASSNAPSHOT OF source_database_name

在上述語法中,database_snapshot_name參數是將要創建的數據庫快照的名稱,該名稱必須符合數據庫名稱的標識符規範,並且在數據庫名稱中是惟一的。數據庫快照的稀疏文件由NAME和FILENAME兩個關鍵字來指定。AS SNAPSHOT OF子句用於指定該數據庫快照的源數據庫名稱。

下面來對【圖書管理系統(BookDateBase)】數據庫創建一個名稱“BookDAteBase_snapshot”的數據庫快照。代碼如下所示:

CREATEDATABASE  BookDateBase_snapshot

ON

(

NAME=BookDateBase_DAT,

FILENAME='E:\張帥\zs SQL2008 shugao\SQL2008\第3章管理數據庫 代碼\BookDateBase_snapshot.snp'

),

(

NAME=BookDateBase_DAT1,

FILENAME='E:\張帥\zs SQL2008 shugao\SQL2008\章 管理數據庫 代碼\BookDateBase_snapshot1.snp'

),

(

NAME=BookDateBase_DAT2,

FILENAME='E:\張帥\zs SQL2008 shugao\SQL2008\章 管理數據庫 代碼\BookDateBase_snapshot2.snp'

),

(

NAME=BookDateBase_DAT3,

FILENAME='E:\張帥\zs SQL2008 shugao\SQL2008\第3章管理數據庫 代碼\BookDateBase_snapshot3.snp'

)

ASSNAPSHOT OF  BookDateBAse

上述代碼語句中,爲【圖書管理系統(BookDateBase)】數據庫中的數據文件創建數據庫快照,在創建數據庫快照時,必須對每個數據文件建立快照,否則將提示缺少某個數據文件的快照。語句執行結果如圖2-19所示。


圖2-19  創建數據庫快照

 

如圖3-21所示,創建快照後在【對象資源管理器】窗格的【數據庫快照】節點下即可看到剛創建的【BookDateBase_snapshot】數據庫快照,展開後可以看到其內容與源數據庫完全相同。數據庫快照的擴展名爲.snp。

 

雖然數據庫快照和源數據庫的內容完全相同,但他與源數據庫相比,數據庫快照還是存在着一些限制:

l  必須在與源數據庫相同的服務器實例上創建數據庫快照。

l  數據庫快照捕獲開始創建快照的時間點,去掉所有未提交的事務。未提交的事務將在創建數據庫快照期間回滾。

l  數據庫快照爲只讀的,不能在數據庫中執行修改操作。

l  禁止對model數據庫、master數據庫和tempdb數據庫創建快照。

l  不能從數據庫快照中刪除文件。

l  不能備份或還原數據庫快照。

l  不能附加或分離數據庫快照。

l  不能在FAT32文件系統或RAW分區中創建快照。數據庫快照所用的稀疏文件由NTFS文件系統提供。

l  數據庫快照不支持全文索引,不能從源數據庫傳播全文目錄。

l  數據庫快照將繼承快照創建時其源數據庫的安全約束。由於快照是隻讀的,因此無法更改繼承的權限,對源數據庫的更改權限將不反映在現有快照中。

l  快照始終反映創建該快照時的文件組狀態,即在線文件組將保持在線狀態,離線文件組將保持離線狀態。

l  只讀文件組和壓縮文件組不支持恢復。嘗試恢復到這兩類文件組將失敗。

當源數據庫發生損壞或出錯時,就可以通過數據庫快照來將數據庫恢復到創建數據庫快照時的狀態。此時恢復的數據庫會覆蓋原來的數據庫。執行恢復操作要求對源數據庫具有RESTORE DATABASE權限,恢復時的語法格式如下所示:

RESTOREDATABASE database_name FROM DATABASE_SNAPSHOT=database_snapshot_name

代碼中,database_name是源數據庫的名稱,database_snapshot_name是對應源數據庫的快照名稱。例如,要將【BookDateBase_snapshot】數據庫快照恢復到【圖書管理系統(BookDateBase)】數據庫中,其語句如下所示:

RESTOREDATABASE BookDateBase from DATABASE_SNAPSHOT=' BookDateBase_snapshot '

GO

 

使用上述命令時,會話中不能使用當前要恢復的數據庫,否則會出錯,建議在執行時使用master 數據庫。也可以在工具欄上的【可用數據庫】下拉框()中選擇其他的數據庫。

 

接下來來介紹一下如何刪除數據庫快照,刪除數據庫快照的方法和其實和刪除數據庫的方法完全相同,也是使用DROP DATABASE語句。同樣,不能刪除當前正在使用的數據庫快照。下面是刪除【BookDateBase_snapshot】數據庫快照的語句代碼:

DROPDATABASE  BookDateBase_snapshot

GO

2.5  擴展練習

擴展練習2-1:附加數據庫

如果用戶從外部獲得一個SQL Server數據庫,並需要將該數據庫添加到現在的服務器上,然後對其進行各種操作。

(1)從【開始】菜單上選擇【程序】|Microsoft SQL Server 2008 R2 | SQLServer Management Studio,打開SQL Server Management Studio,打開連接服務器窗口,登錄服務器類型爲“數據庫引擎”,並使用Windows或SQL Server 身份驗證建立連接,如圖2-20所示。


圖2-20 【連接到服務器】窗口

(2)連接服務器,選中【數據庫】節點並右擊,從彈出的快捷菜單中選擇【附加】命令,找開【附加服務器】窗口。

(3)單擊窗口中的【添加】按鈕,在彈出的【定位數據庫文件】窗口中選擇要附加的數據庫文件,如圖2-21所示。


圖2-21 【定位數據庫文件】

(4)選中要附加的數據庫文件,單擊【確定】按鈕,返回【附加數據庫】窗口,如圖2-22所示。


圖2-22 【附加數據庫】窗口

(5)另外,還可以通過【添加】按鈕同時附加多個數據庫。全部添加完畢後,單擊【確定】按鈕

(6)在【對象資源管理器】窗口中,右擊【數據庫】節點,然後從快捷菜單中選擇【刷新】命令,就可以看到附加的數據庫存在於列表中了。

(7)選中附加的數據庫,通過展開數據庫下的節點可以查看數據庫中的關係圖、表、視圖等數據庫對象。右擊該數據庫,從快捷菜單中選擇【屬性】命令,在彈出的【數據庫屬性】

擴展練習2-1:附加數據庫

當有些數據庫不再被使用時,可以對其進行分離操作。分離後的數據庫依然存儲在其物理目錄下,用戶還可以重新附加並使用。

(1)從【開始】菜單上選擇【程序】|Microsoft SQL Server 2008 R2 | SQLServer Management Studio,打開SQL Server Management Studio,打開連接服務器窗口,登錄服務器類型爲“數據庫引擎”,並使用Windows或SQL Server 身份驗證建立連接。

(2)在保證該數據庫與服務器無連接的前提下,選中要分離的數據庫並右擊,在彈出的快捷菜單中選擇【任務】|【分離】命令,隨後打開【分離數據庫】窗口。

(3)在【分離數據庫】窗口中,啓用【刪除連接】和【更新統計信息】兩列選項,單擊【確定】按鈕即可實現數據庫的分離,如圖2-23所示。


圖2-23  【分離數據庫】窗口


發佈了26 篇原創文章 · 獲贊 8 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章