用戶常常須要在T-SQL中引用SQL Server對象並對其進行操做,如對數據庫表進行查詢和數據更新等,在其所使用的T-SQL語句中須要給出對象的名稱。用戶能夠給出兩種對象名,即徹底限定名和部分限定名。數據庫
(1)徹底限定名。在SQL Server 2008中,徹底限定名是對象的全名,編程
包括4個部分:服務器名、數據庫名、數據庫架構名和對象名,服務器
其格式爲 server.database.scheme.object
在SQL Server 2008上建立的每個對象都必須有一個惟一的徹底限定名。架構
(2)部分限定名。在使用T-SQL編程時,常省略全名中的某些部分,對象全名的4個部分中的前3個部分都可以省略,當省略中間的部分時,圓點符「.」不可省略。把只包含對象徹底限定名中的一部分的對象名稱爲部分限定名。SQL Server能夠根據系統的當前工做環境肯定對象名稱中省略的部分。
在部分限定名中,未指出的部分使用如下默認值。
服務器:默認爲本地服務器。
數據庫:默認爲當前數據庫。
數據庫架構名:默認爲dbo。函數
例如,如下是一些正確的對象部分限定名: server.database..object /*省略架構名*/ server.. scheme.object /*省略數據庫名*/ database. scheme.object /*省略服務器名*/ server…object /*省略架構名和數據庫名*/ scheme.object /*省略服務器名和數據庫名*/ object /*省略服務器名、數據庫名和架構名*/
下面大體介紹一下SQL Server 2008中所包含的經常使用數據庫對象。
1 表:表是SQL Server中最主要的數據庫對象,它是用來存儲和操做數據的一種邏輯結構。表由行和列組成,所以也稱爲二維表。表是在平常工做和生活中常用的一種表示數據及其關係的形式。 post
2 視圖:視圖是從一個或多個基本表中引出的表。數據庫中只存放視圖的定義而不存放視圖對應的數據,這些數據仍存放在導出視圖的基本表中。性能
因爲視圖自己並不存儲實際數據,所以也能夠稱之爲虛表。視圖中的數據來自定義視圖的查詢所引用的基本表,並在引用時動態生成數據。當基本表中的數據發生變化時,從視圖中查詢出來的數據也隨之改變。視圖一經定義,就能夠像基本表同樣被查詢、修改、刪除和更新了。spa
3 索引:索引是一種不用掃描整個數據表就能夠對錶中的數據實現快速訪問的途徑,它是對數據表中的一列或者多列數據進行排序的一種結構。
表中的記錄一般按其輸入的時間順序存放,這種順序稱爲記錄的物理順序。爲了實現對錶記錄的快速查詢,能夠對錶的記錄按某個或某些屬性進行排序,這種順序稱爲邏輯順序。
索引是根據索引表達式的值進行邏輯排序的一組指針,它能夠實現對數據的快速訪問,索引是關係數據庫的內部實現技術,它被存放在存儲文件中。操作系統
4 約束:約束機制保障了SQL Server 2008中數據的一致性與完整性,具備表明性的約束就是主鍵和外鍵。主鍵約束當前表記錄的惟一性,外鍵約束當前表記錄與其餘表的關係。3d
5 存儲過程:存儲過程是一組爲了完成特定功能的SQL語句集合(功能函數)。這個語句集合通過編譯後存儲在數據庫中,存儲過程具備接受參數、輸出參數、返回單個或多個結果以及返回值的功能。存儲過程獨立於表存在(表不存在,存儲過程存在,可是會出錯)。存儲過程有與函數相似的地方,但它又不一樣於函數,例如,它不返回取代其名稱的值,也不能直接在表達式中使用。
① 觸發器:觸發器與表緊密關聯。它能夠實現更加複雜的數據操做,更加有效地保障數據庫系統中數據的完整性和一致性。觸發器基於一個表建立,但能夠對多個表進行操做。(學生學號改,住宿表,學費表都改的實現)
②默認值:默認值是在用戶沒有給出具體數據時,系統所自動生成的數值。它是SQL Server 2008系統確保數據一致性和完整性的方法。
③ 用戶和角色:用戶是指對數據庫有存取權限的使用者;角色是指一組數據庫用戶的集合。這兩個概念相似於Windows XP的本地用戶和組的概念。
④ 規則:規則用來限制表字段的數據範圍。
⑤ 類型:用戶能夠根據須要在給定的系統類型之上定義本身的數據類型。
⑥ 函數:用戶能夠根據須要在SQL Server 2008上定義本身的函數。
1.頁和區
SQL Server 2008中有兩個主要的數據存儲單位:頁和區。
頁是用於數據存儲的最基本單位。每一個頁的大小是8 KB。每頁的開頭是96 B的標頭,用於存儲有關頁的系統信息。緊接着標頭存放的是數據行,數據行按順序排列。數據庫表中的每一行數據都不能跨頁存儲,即表中的每一行數據字節數不能超過8192。頁的末尾是行偏移表,頁中的每一行在偏移表中都有一個對應的條目。每一個條目記錄着對應行的第一個字節與頁首部的距離。
區是用於管理空間的基本單位。每8個鏈接的頁組成一個區,大小爲64 KB,即每1 MB的數據庫就有16個區。區用於控制表和索引的存儲。
2.數據庫文件
SQL Server 2008所使用的文件包括如下三類文件。
(1)主數據文件。主數據文件簡稱主文件,正如其名字所示,該文件是數據庫的關鍵文件,包含了數據庫的啓動信息,而且存儲數據。每一個數據庫必須有且僅能有一個主文件,其默認擴展名爲.mdf。可直接拷貝
(2)輔助數據文件。輔助數據文件簡稱輔(助)文件,用於存儲未包括在主文件內的其餘數據。輔助文件的默認擴展名爲.ndf。輔助文件是可選的,根據具體狀況,能夠建立多個輔助文件,也能夠不使用輔助文件。通常當數據庫很大時,有可能須要建立多個輔助文件。而當數據庫較小時,則只須要建立主文件而不須要建立輔助文件。
(3)日誌文件。日誌文件用於保存恢復數據庫所需的事務日誌信息。每一個數據庫至少有一個日誌文件,也能夠有多個,日誌文件的擴展名爲.ldf。日誌文件的存儲與數據文件不一樣,它包含一系列記錄,這些記錄的存儲不以頁爲存儲單位。
3.文件組
使用文件組能夠提升表中數據的查詢性能。在SQL Server 2008中有兩類文件組。
(1)主文件組。主文件組包含主要數據文件和任何沒有明確指派給其餘文件組的其餘文件。管理數據庫的系統表的全部頁均分配在主文件組中。
(2)用戶定義文件組。用戶定義文件組是指在CREATE DATABASE或ALTER DATABASE語句中使用FILEGROUP關鍵字指定的文件組。
每一個數據庫中都有一個文件組做爲默認文件組運行。若在SQL Server 2008中建立表或索引時沒有爲其指定文件組,那麼將從默認文件組中進行存儲頁分配、查詢等操做。用戶能夠指定默認文件組,若是沒有指定默認文件組,則主文件組是默認文件組。
系統數據庫存儲有關SQL Server的系統信息,它們是SQL Server 2008管理數據庫的依據。若是系統數據庫遭到破壞,那麼SQL Server將不能正常啓動。在安裝SQL Server 2008時,系統將建立4個可見的系統數據庫:master、model、msdb和tempdb。
(1)master數據庫包含了SQL Server 2008的登陸帳號、系統配置、數據庫位置及數據庫錯誤信息等,控制用戶數據庫和SQL Server的運行。
(2)model數據庫爲新建立的數據庫提供模板。
(3)msdb數據庫爲「SQL Server代理」調度信息和做業記錄提供存儲空間。
(4)tempdb數據庫爲臨時表和臨時存儲過程提供存儲空間,全部與系統鏈接的用戶的臨時表和臨時存儲過程都存儲於該數據庫中。
每一個系統數據庫都包含主數據文件和主日誌文件。擴展名分別爲.mdf 和.ldf,例如master數據庫的兩個文件分別爲master.mdf和master.ldf。
下面以建立學生成績管理系統的數據庫(名爲PXSCJ)爲例,說明使用SQL Server Management Studio窗口圖形化嚮導建立數據庫的過程。
【例2.1】 建立數據庫PXSCJ,數據文件和日誌文件的屬性按默認值設置。
建立該數據庫的主要過程以下。
第1步:以系統管理員身份登陸計算機,在桌面上單擊「開始→全部程序→Microsoft SQL Server 2008」,選擇並啓動SQL Server Management Studio。如圖2.1所示,使用默認的系統配置鏈接到數據庫服務器。
第2步:選擇「對象資源管理器」中服務器目錄下的「數據庫」目錄,右擊鼠標,在彈出的快捷菜單中選擇「新建數據庫」菜單項,打開「新建數據庫」窗口。
第3步:「新建數據庫」窗口的左上方共有三個選項卡——「常規」、「選項」和「文件組」,這裏只配置「常規」選項卡,其餘選項卡使用系統默認設置。
在「新建數據庫」窗口的左上方選擇「常規」選項卡,在「數據庫名稱」文本框中填寫要建立的數據庫名稱「PXSCJ」,也能夠在「全部者」文本框中指定數據庫的全部者,如sa。這裏使用默認值,其餘屬性也按默認值設置,如圖2.2所示。
圖2.2 新建數據庫屬性
另外,能夠經過單擊自動增加標籤欄下面的 ... 按鈕,彈出圖2.3所示的對話框,在該對話框中能夠設置數據庫是否自動增加、增加方式、數據庫文件最大文件大小。數據日誌文件的自動增加設置對話框與數據文件的相似。
圖2.3 自動增加設置
配置路徑的方式與配置自動增加方式相似,能夠經過單擊路徑標籤欄下面的 按鈕來自定義路徑,默認路徑爲C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008 \MSSQL\DATA。這裏,數據庫文件大小、增加方式和路徑都使用默認值,確認後單擊「肯定」按鈕。
至此數據庫PXSCJ已經建立完成了,此時,能夠在對象資源管理器的「數據庫」目錄下找到該數據庫所對應的圖標,如圖2.4所示。
圖2.4 建立後的PXSCJ數據庫
在數據庫成功建立後,數據文件名和日誌文件名就不能改變了。對已存在的數據庫能夠進行的修改包括如下幾項。
下面以對數據庫PXSCJ的修改成例,說明在SQL Server Management Studio中對數據庫的定義進行修改的操做方法。
在進行任何界面操做之前,都要啓動SQL Server Management Studio,後面啓動SQL Server Management Studio的步驟將被省略,只介紹其主要的操做步驟。
第1步:選擇須要進行修改的數據庫PXSCJ,右擊鼠標,在出現的快捷菜單中選擇「屬性」菜單項,如圖2.5所示。
第2步:選擇「屬性」菜單項後,出現如圖2.6所示的「數據庫屬性-PXSCJ」窗口。從圖中的選項卡列表中能夠看出,它包括9個選項卡。
下面詳細介紹一下對已經存在的數據庫能夠進行的修改操做。
(1)改變數據文件的大小和增加方式。在圖2.6所示的「數據庫屬性-PXSCJ」窗口中的選項卡列表中選擇「文件」,在右邊的「初始大小」列中輸入要修改的數據庫的初始大小,如圖2.7所示。
(2)增長或刪除數據文件。當原有數據庫的存儲空間不夠大時,除了能夠採用擴大原有數據文件存儲量的方法以外,還能夠增長新的數據文件。或者,從系統管理的需求出發,採用多個數據文件來存儲數據,以免數據文件過大。此時,會用到向數據庫中增長數據文件的操做。
【例2.2】 在PXSCJ數據庫中增長數據文件PXSCJ_2,其屬性均取系統默認值。
操做方法以下:
打開「數據庫屬性-PXSCJ」窗口,在選項卡列表中選擇「文件」,單擊窗口右下角的「添加」按鈕,數據庫文件下方會新增長一行文件項,如圖2.8所示。
刪除輔助數據文件的操做方法以下。
打開「數據庫屬性」窗口,選擇「文件」選項卡。選中需刪除的輔助數據文件PXSCJ_2,單擊對話框右下角的「刪除」按鈕,而後單擊「肯定」按鈕即完成刪除。
(3)增長或刪除文件組。數據庫管理員(DBA)從系統管理策略角度出發,有時可能須要增長或刪除文件組。這裏經過示例說明操做方法。
【例2.3】 假設要在數據庫PXSCJ中增長一個名爲FGroup的文件組。
操做方法以下。
打開「數據庫屬性」窗口,選擇「文件組」選項卡。單擊右下角的「添加」按鈕,這時在PRIMARY行的下面會出現新的一行。在該行的「名稱」列輸入「FGroup」,單擊「肯定」按鈕,如圖2.9所示。
例如,在PXSCJ數據庫新增的文件組FGroup中增長數據文件PXSCJ2。操做方法以下。
選擇「文件」選項卡,按增長數據文件的操做方法添加數據文件。在「文件組」下拉框中選擇「FGroup」,如圖2.10所示,單擊「肯定」按鈕。
刪除文件組的操做方法以下。
選擇「文件組」選項卡。選中需刪除的文件組,單擊對話框右下角的「刪除」按鈕,再單擊「肯定」按鈕便可刪除。
(4)數據庫的重命名。使用圖形界面修改數據庫名稱的方法是:啓動「SQL Server Management Studio」,在「對象資源管理器」窗口中,展開「數據庫」,選擇要重命名的數據庫,右擊鼠標,在彈出的快捷菜單中選擇「重命名」菜單項,輸入新的數據庫名稱,便可更改數據庫的名稱。在通常狀況下,不建議用戶更改已經建立好的數據庫名稱,由於許多應用程序可能已經使用了該名稱,在更改了數據庫名稱以後,還須要修改相應的應用程序。
一般的作法是,把一些不須要的數據庫刪除,以釋放被其佔用的系統空間和消耗。用戶能夠利用圖形嚮導方式輕鬆地完成數據庫系統的刪除工做。
【例2.4】 刪除PXSCJ數據庫。
啓動SQL Server Management Studio,在對象資源管理器中選擇要刪除的數據庫「PXSCJ」,右擊鼠標,在彈出的快捷菜單中選擇「刪除」菜單項,打開如圖2.11所示的「刪除對象」對話框,單擊右下角的「肯定」按鈕,便可刪除數據庫PXSCJ。
命令方式建立數據庫使用CREATE DATABASE命令,建立前要確保用戶具備建立數據庫的權限。
語法格式。
說明:
在對語法格式進行解釋以前,先介紹本書的Transact-SQL語法格式中使用的約定。表2.1列出了這些約定,並進行了說明。這些約定在本書介紹T-SQL語法格式時都適用。
表2.1 本書Transact-SQL語法的約定和說明
CREATE DATABASE database_name [ ON [ PRIMARY ] [ <filespec> [ ,...n ] [ , <filegroup> [ ,...n ] ] [ LOG ON { <filespec> [ ,...n ] } ] ] [ COLLATE collation_name ] [ WITH <external_access_option> ] [FOR { ATTACH | ATTACH_REBUILD_LOG }] ] [;] 其中, <filespec> ::= {( NAME = logical_file_name , FILENAME = { 'os_file_name' | 'filestream_path' } [ , SIZE = size [ KB | MB | GB | TB ] ] [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ] [ , FILEGROWTH = growth_increment [ KB | MB | GB | TB | % ] ] ) [ ,...n ] } <filegroup> ::= { FILEGROUP filegroup_name [ CONTAINS FILESTREAM ] [ DEFAULT ] <filespec> [ ,...n ] } <external_access_option> ::= { [ DB_CHAINING { ON | OFF } ] [ , TRUSTWORTHY { ON | OFF } ] }
下面對CREATE DABASE命令的語法格式進行說明。
(1)database_name:所建立的數據庫邏輯名稱,該名稱在SQL Server實例中必須惟一。其命名須遵循SQL Server 2008的命名規則,最大長度爲128個字符。
(2)ON子句:指定了數據庫的數據文件和文件組,其中,PRIMARY用來指定主文件。若不指定主文件,則各數據文件中的第一個文件將成爲主文件。
(3)<filespec>:指定數據庫文件的屬性,主要給出文件的邏輯名、存儲路徑、大小及增加特性。這些特徵能夠與以界面方式建立數據庫時對數據庫特徵的設置相聯繫。
① logical_file_name:邏輯文件名,是數據庫建立後在全部T-SQL語句中引用文件時所使用的名字。
② os_file_name:操做系統文件名,是操做系統在建立物理文件時使用的路徑和文件名。對於FILESTREAM文件組,FILENAME選項指向將存儲FILESTREAM數據的路徑「filestream_path」。在最後一個文件夾以前的路徑必須存在,但不能存在最後一個文件夾。例如,若是指定路徑C:\Filestream\Data,則C:\Filestream必須存在才能運行CREATE DATABASE語句,但 Data文件夾不能存在。有關FILESTREAM的內容將在第3章中介紹。
③ size:是數據文件的初始容量大小。對於主文件,若不指出大小,則默認爲model數據庫主文件的大小。對於輔助數據文件,自動設置爲3 MB。UNLIMITED關鍵字表示指定文件將增加到磁盤滿。
④ max_size:指定文件的最大大小。UNLIMITED關鍵字表示文件大小不受限制,但實際上受磁盤可用空間限制。若是不指定MAXSIZE選項,則文件將增加到磁盤空間滿。
⑤ growth_increament:指出文件每次的增量,有百分比和空間值兩種格式,前者如10%,即每次在原來空間大小的基礎上增加10%;後者如5 MB,即每次增加5 MB,而無論原來空間大小是多少。但要注意,FILEGROWTH的值不能超過MAXSIZE的值。
(4)<filegroup>:定義文件組的屬性。filegroup_name爲定義的文件組的名稱,CONTAINS FILESTREAM選項指定文件組在文件系統中存儲FILESTREAM二進制大型對象(BLOB)。DEFAULT關鍵字指定命名文件組爲數據庫中的默認文件組。<filespec>用於指定屬於該文件組的文件。文件組中各文件的描述和數據文件描述相同。
(5)LOG ON子句:用於指定數據庫事務日誌文件的屬性,其定義格式與數據文件的格式相同。若是沒有指定該子句,則將自動建立一個日誌文件。
(6)COLLATE collation_name:指定數據庫的默認排序規則。排序規則名稱既能夠是 Windows 排序規則名稱,也能夠是 SQL 排序規則名稱。若是沒有指定排序規則,則將SQL Server實例的默認排序規則分配爲數據庫的排序規則。
(7)WITH子句:用於控制外部與數據庫之間的雙向訪問。
① DB_CHAINING { ON | OFF }
當指定爲ON時,數據庫能夠爲跨數據庫全部權鏈的源或目標。當爲OFF時,數據庫不能參與跨數據庫全部權連接。默認值爲OFF。
② TRUSTWORTHY { ON | OFF }
當指定爲ON時,使用模擬上下文的數據庫模塊(如視圖、用戶定義函數或存儲過程)能夠訪問數據庫之外的資源。當爲OFF時,模擬上下文中的數據庫模塊不能訪問數據庫之外的資源。默認值爲OFF。
(8)FOR子句:
① FOR ATTACH子句:指定經過附加一組現有的操做系統文件來建立數據庫,使用FOR ATTACH子句時必須指定數據庫的主文件。若是有多個數據和日誌文件,則必須確保全部的.mdf文件和.ndf文件可用,不然操做將失敗。
② FOR ATTACH_REBUILD_LOG子句:指定經過附加一組現有的操做系統文件來建立數據庫,使用這一選項將再也不須要全部日誌文件。
由語法格式可知,最簡單的一句建立數據庫的語句爲
CREATE DATABASE database_name
【例2.5】 建立一個名爲TEST1的數據庫,其初始大小爲5 MB,最大大小爲50 MB,容許數據庫自動增加,增加方式是按10%比例增加。日誌文件初始爲2 MB,最大可增加到5 MB,按1 MB增加。數據文件和日誌文件的存放位置爲SQL Server的數據庫目錄「C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\ MSSQL\DATA」。假設SQL Server服務已啓動,並以系統管理員身份登陸計算機。
在「SQL Server Management Studio」窗口中單擊「新建查詢」按鈕新建一個查詢窗口,如圖2.12所示。
在「查詢分析器」窗口中輸入以下T-SQL語句: CREATE DATABASE TEST1 ON ( NAME= 'TEST1_DATA', FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\TEST1.mdf', SIZE=5 MB, MAXSIZE=50 MB, FILEGROWTH=10% ) LOG ON ( NAME='TEST1_log', FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\TEST1.ldf', SIZE=2 MB, MAXSIZE=5 MB, FILEGROWTH=1 MB );
輸入完畢後,單擊SSMS面板上的「!執行」按鈕,如圖2.13所示。從圖中能夠看到,CREATE DATABASE命令執行時,在結果窗口中將顯示命令執行的進展狀況。
當命令成功執行後,在「對象資源管理器」中展開「數據庫」目錄,能夠看到,新建的數據庫「TEST1」就顯示於其中。若是沒有發現「TEST1」,則選擇「數據庫」,右擊鼠標,在彈出的快捷菜單中選擇「刷新」菜單項便可。
經過數據庫屬性對話框能夠看到,新創建TEST1數據庫的各項屬性徹底符合預約要求。
【例2.6】 建立一個名爲TEST2的數據庫,它有兩個數據文件,其中,主數據文件爲20 MB,最大大小不限,按10%增加。 1個輔數據文件爲20 MB,最大大小不限,按10%增加;有1個日誌文件,大小爲50 MB,最大大小爲100 MB,按10 MB增加。
在查詢分析器中輸入以下T-SQL語句並執行.
CREATE DATABASE TEST2 ON PRIMARY /*主文件*/ ( NAME = 'TEST2_data1', FILENAME = 'D:\data\test2_data1.mdf', SIZE = 20 MB, MAXSIZE = UNLIMITED, FILEGROWTH = 10% ), /*有逗號* ( NAME = 'TEST2_data2', FILENAME = 'D:\data\test2_data2.ndf', SIZE = 20 MB, MAXSIZE = UNLIMITED, FILEGROWTH = 10% ) /* 無逗號*/ LOG ON ( NAME = 'TEST2_log1', FILENAME = 'D:\data\test2_log1.ldf', SIZE = 50 MB, MAXSIZE = 100 MB, FILEGROWTH = 10 MB );
【例2.7】 建立一個具備2個文件組的數據庫TEST3。要求:
(1)主文件組包括文件TEST3_dat1,文件初始大小爲20 MB,最大爲60 MB,按5 MB增加;
(2)有1個文件組名爲TEST3Group1,包括文件TEST3_dat2,文件初始大小爲10 MB,最大爲30 MB,按10%增加。
CREATE DATABASE TEST3 ON PRIMARY ( NAME = 'TEST3_dat1', FILENAME = 'D:\data\TEST3_dat1.mdf', SIZE = 20 MB, MAXSIZE = 60 MB, FILEGROWTH = 5 MB ), FILEGROUP TEST3Group1 ( NAME = 'TEST3_dat2', FILENAME = 'D:\data\TEST3_dat2.ndf', SIZE = 10 MB, MAXSIZE = 30 MB, FILEGROWTH = 10% )
使用ALTER DATABASE命令可對數據庫進行如下修改:
增長或刪除數據文件;
改變數據文件的大小和增加方式;
改變日誌文件的大小和增加方式;
增長或刪除日誌文件;
增長或刪除文件組。
語法格式。
ALTER DATABASE database_name { ADD FILE <filespec>[,…n][ TO FILEGROUP filegroup_name ] /*在文件組中增長數據文件*/ | ADD LOG FILE <filespec>[,…n] /*增長日誌文件*/ | REMOVE FILE logical_file_name /*刪除數據文件*/ | ADD FILEGROUP filegroup_name [CONTAINS FILESTREAM] /*增長文件組*/ | REMOVE FILEGROUP filegroup_name /*刪除文件組*/ | MODIFY FILE <filespec> /*更改文件屬性*/ | MODIFY NAME = new_dbname /*數據庫改名*/ | MODIFY FILEGROUP filegroup_name { <filegroup_updatability_option> | DEFAULT | NAME = new_filegroup_name } /*更改文件組屬性*/ | SET <optionspec> [ ,...n ] [ WITH <termination> ] /*設置數據庫屬性*/ | COLLATE collation_name /*指定數據庫排序規則*/ } [;] 其中, <filegroup_updatability_option>::= { { READONLY | READWRITE } | { READ_ONLY | READ_WRITE } }
【例2.8】 假設已經建立了例2.5中的數據庫TEST1,它只有一個主數據文件,其邏輯文件名爲TEST1_DATA,大小爲5 MB,最大爲50 MB,增加方式爲按10%增加。
要求:修改數據庫TEST1現有數據文件TEST1_DATA的屬性,將主數據文件的最大大小改成100 MB,增加方式改成按每次5 MB增加。
在「查詢分析器」窗口中輸入以下Transact-SQL語句: ALTER DATABASE TEST1 MODIFY FILE ( NAME = TEST1_DATA, MAXSIZE =100 MB, /*將主數據文件的最大大小改成100 MB*/ FILEGROWTH = 5 MB /*將主數據文件的增加方式改成按5 MB增加*/ ) GO
單擊「執行」按鈕執行輸入的T_SQL語句,右擊「對象資源管理器」中的「數據庫」,選擇「刷新」菜單項,以後右擊數據庫TEST1的圖標,選擇「屬性」菜單項,在「文件」頁上查看修改後的數據文件。
【例2.9】 先爲數據庫TEST1增長數據文件TEST1BAK。而後刪除該數據文件。
ALTER DATABASE TEST1 ADD FILE ( NAME = 'TEST1BAK', FILENAME = 'D:\data\TEST1BAK.ndf', SIZE = 10 MB, MAXSIZE = 50 MB, FILEGROWTH = 5% )
經過查看「數據庫屬性」窗口中的文件屬性來觀察數據庫「TEST1」是否增長數據文件TEST1BAK。
刪除數據文件TEST1BAK的命令以下:
ALTER DATABASE TEST1 REMOVE FILE TEST1BAK GO
【例2.10】 爲數據庫TEST1添加文件組FGROUP,併爲此文件組添加兩個大小均爲10 MB的數據文件。
ALTER DATABASE TEST1 ADD FILEGROUP FGROUP GO ALTER DATABASE TEST1 ADD FILE ( NAME = 'TEST1_DATA2', FILENAME = 'D:\data\TEST1_Data2.ndf', SIZE = 10 MB ), ( NAME = 'TEST1_DATA3', FILENAME = 'D:\data\TEST1_Data3.ndf', SIZE = 10 MB ) TO FILEGROUP FGROUP GO
【例2.11】 從數據庫中刪除文件組,將例2.10中添加到TEST1數據庫中的文件組FGROUP刪除。
注意:被刪除的文件組中的數據文件必須先刪除,且不能刪除主文件組。
在查詢分析器中輸入以下Transact-SQL語句並執行:
ALTER DATABASE TEST1 REMOVE FILE TEST1_DATA2 GO ALTER DATABASE TEST1 REMOVE FILE TEST1_DATA3 GO ALTER DATABASE TEST1 REMOVE FILEGROUP FGROUP GO
【例2.12】 爲數據庫TEST1添加一個日誌文件。
在查詢分析器中輸入以下Transact-SQL語句並執行:
ALTER DATABASE TEST1 ADD LOG FILE ( NAME = 'TEST1_LOG2', FILENAME = 'D:\data\TEST1_Log2.ldf', SIZE = 5 MB, MAXSIZE =10 MB, FILEGROWTH = 1 MB ) GO
【例2.13】 從數據庫TEST1中刪除一個日誌文件,將日誌文件TEST1_LOG2刪除。注意,不能刪除主日誌文件。
將數據庫TEST1的名稱改成JUST_TEST。進行此操做時必須保證該數據庫此時沒有被其餘任何用戶使用。
在查詢分析器中輸入以下Transact-SQL語句並執行:
ALTER DATABASE TEST1 REMOVE FILE TEST1_LOG2 GO ALTER DATABASE TEST1 MODIFY NAME = JUST_TEST GO
刪除數據庫使用DROP DATABASE命令。
語法格式:
DROP DATABASE database_name[,…n][;]
其中,database_name是要刪除的數據庫名。例如,要刪除數據庫TEST2,使用命令:
DROP DATABASE TEST2 GO
快照可用於報表。另外,若是源數據庫出現用戶錯誤,還可將源數據庫恢復到建立快照時的狀態。丟失的數據僅限於建立快照後數據庫更新的數據。
在SQL Server 2008中,建立數據庫快照也使用CREATE DATABASE命令。語法格式以下:
CREATE DATABASE database_snapshot_name ON ( NAME = logical_file_name, FILENAME = 'os_file_name' ) [ ,...n ] AS SNAPSHOT OF source_database_name [;]
【例2.14】 建立PXSCJ數據庫的快照PXSCJ_01。
CREATE DATABASE PXSCJ_01 ON ( NAME=PXSCJ, FILENAME='D:\data\PXSCJ_01.mdf' ) AS SNAPSHOT OF PXSCJ GO
命令執行成功以後,在對象資源管理器中刷新「數據庫」菜單欄,在「數據庫」中展開「數據庫快照」,就能夠看見剛剛建立的數據庫快照PXSCJ_01了。
刪除數據庫快照的方法和刪除數據庫的方法徹底相同,可使用界面方式刪除,也可使用命令方式刪除,例如,
DROP DATABASE PXSCJ_01;