版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章SQLServer數(shù)據(jù)庫及其管理4.1SQLServer數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)和對(duì)象4.2系統(tǒng)數(shù)據(jù)庫和示例數(shù)據(jù)庫4.3數(shù)據(jù)庫的查看4.4數(shù)據(jù)庫的建立4.5數(shù)據(jù)庫的刪除4.6數(shù)據(jù)庫的移動(dòng)4.7數(shù)據(jù)庫的其他操作4.8實(shí)戰(zhàn)訓(xùn)練小結(jié)思考題
數(shù)據(jù)庫是本課程的主要對(duì)象,那么數(shù)據(jù)庫是如何來操作和管理的呢?本章任務(wù):?認(rèn)識(shí)SQLServer數(shù)據(jù)庫,操作SQLServer數(shù)據(jù)庫,并掌握SQLServer數(shù)據(jù)庫的管理。
SQLServer數(shù)據(jù)庫是有組織的數(shù)據(jù)的集合。在SQLServer中,數(shù)據(jù)庫是作為一個(gè)整體集中管理的。在企業(yè)管理器中展開控制臺(tái)根目錄“服務(wù)器/數(shù)據(jù)庫”,選擇“數(shù)據(jù)庫”節(jié)點(diǎn),可以看到SQLServer2000系統(tǒng)中已有的數(shù)據(jù)庫,如圖4-1所示。在邏輯上,SQLServer數(shù)據(jù)庫由數(shù)據(jù)庫對(duì)象組成,數(shù)據(jù)庫是存放數(shù)據(jù)庫對(duì)象的容器;在物理上,SQLServer數(shù)據(jù)庫以文件的形式存放在物理磁盤上,數(shù)據(jù)庫中的對(duì)象沒有對(duì)應(yīng)的磁盤文件。圖4-1在企業(yè)管理器中看到的數(shù)據(jù)庫4.1SQLServer數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)和對(duì)象數(shù)據(jù)庫在磁盤上是以文件為單位存儲(chǔ)的,它由數(shù)據(jù)庫文件和事務(wù)日志文件組成。一個(gè)數(shù)據(jù)庫至少應(yīng)該包含一個(gè)數(shù)據(jù)庫文件和一個(gè)事務(wù)日志文件。
SQLServer2000將一個(gè)數(shù)據(jù)文件中的空間以塊的形式分配給表格和索引,每塊有64KB空間,叫做擴(kuò)展盤區(qū)。每個(gè)擴(kuò)展盤區(qū)由8個(gè)連續(xù)的“頁面”組成。擴(kuò)展盤區(qū)有兩種類型:由單個(gè)對(duì)象所擁有的是統(tǒng)一擴(kuò)展盤區(qū);由8個(gè)對(duì)象所共享的是混合擴(kuò)展盤區(qū)。
頁面是SQLServer2000中數(shù)據(jù)存儲(chǔ)的基本單元,每個(gè)頁面的大小為8KB。通常情況下,數(shù)據(jù)頁面以行的方式存儲(chǔ)數(shù)據(jù)。一行數(shù)據(jù)最多達(dá)8060字節(jié)。每個(gè)頁面的開始有96個(gè)字節(jié)的報(bào)頭,用于存儲(chǔ)系統(tǒng)信息。下面我們來看看數(shù)據(jù)庫文件是什么。4.1.1數(shù)據(jù)庫文件
SQLServer2000中的每個(gè)數(shù)據(jù)庫由多個(gè)操作系統(tǒng)中的文件所組成,數(shù)據(jù)庫的所有數(shù)據(jù)、對(duì)象和數(shù)據(jù)庫操作日志均存儲(chǔ)在這些操作系統(tǒng)文件中。根據(jù)這些文件的作用不同,可以將它們劃分為數(shù)據(jù)文件和日志文件,數(shù)據(jù)文件又分為主數(shù)據(jù)文件和輔助數(shù)據(jù)文件。1.主數(shù)據(jù)文件(PrimaryDatabaseFile)
數(shù)據(jù)文件是存放數(shù)據(jù)庫數(shù)據(jù)和數(shù)據(jù)庫對(duì)象的文件。一個(gè)數(shù)據(jù)庫可以有一個(gè)或多個(gè)數(shù)據(jù)文件,一個(gè)數(shù)據(jù)文件只能屬于一個(gè)數(shù)據(jù)庫。當(dāng)有多個(gè)數(shù)據(jù)文件時(shí),有一個(gè)文件被定義為主數(shù)據(jù)文件(簡(jiǎn)稱為主文件),其擴(kuò)展名為mdf。主數(shù)據(jù)文件用來存儲(chǔ)數(shù)據(jù)庫的啟動(dòng)信息以及部分或全部數(shù)據(jù),是所有數(shù)據(jù)文件的起點(diǎn),包含指向其他數(shù)據(jù)文件的指針。一個(gè)數(shù)據(jù)庫必須有一個(gè)主數(shù)據(jù)文件,也只能有一個(gè)主數(shù)據(jù)文件。2.輔助數(shù)據(jù)文件(SecondaryDatabaseFile)
輔助數(shù)據(jù)文件用于存儲(chǔ)主數(shù)據(jù)文件中未存儲(chǔ)的剩余數(shù)據(jù)和數(shù)據(jù)庫對(duì)象。一個(gè)數(shù)據(jù)庫可以沒有輔助數(shù)據(jù)文件,也可以同時(shí)擁有多個(gè)輔助數(shù)據(jù)文件。使用輔助數(shù)據(jù)文件的優(yōu)點(diǎn)在于:可以在不同的物理磁盤上創(chuàng)建輔助數(shù)據(jù)文件并將數(shù)據(jù)存儲(chǔ)在文件中,這樣可以提高數(shù)據(jù)處理的效率。另外,當(dāng)數(shù)據(jù)龐大時(shí),如果主數(shù)據(jù)文件的大小超過操作系統(tǒng)對(duì)單一文件大小的限制,則也需要使用輔助數(shù)據(jù)文件來存儲(chǔ)更多的數(shù)據(jù)。輔助數(shù)據(jù)文件的擴(kuò)展名為ndf(簡(jiǎn)稱為輔助文件)。3.事務(wù)日志文件事務(wù)日志文件用于存儲(chǔ)數(shù)據(jù)庫的更新情況等事務(wù)日志信息。當(dāng)使用INSERT、DELETE、UPDATE等語句對(duì)數(shù)據(jù)庫進(jìn)行更改時(shí),操作都會(huì)記錄在此文件中,而其他對(duì)數(shù)據(jù)庫內(nèi)容沒有影響的操作則不作記錄。當(dāng)數(shù)據(jù)庫損壞時(shí),管理員可以使用事務(wù)日志恢復(fù)數(shù)據(jù)庫。每一個(gè)數(shù)據(jù)庫必須至少擁有一個(gè)事務(wù)日志文件,允許擁有多個(gè)日志文件。事務(wù)日志文件的擴(kuò)展名為ldf,日志文件的大小至少是512KB。為保證所有對(duì)數(shù)據(jù)庫的更新操作都能寫入日志,SQLServer事務(wù)日志采用提前寫入的方式,即對(duì)數(shù)據(jù)庫的修改先寫入事務(wù)日志,然后再寫入數(shù)據(jù)庫。其具體操作是:系統(tǒng)先將更改操作寫入事務(wù)日志,然后更改存儲(chǔ)在計(jì)算機(jī)緩存中的數(shù)據(jù)。為了提高執(zhí)行效率,此更改不會(huì)立即寫到硬盤的數(shù)據(jù)庫中,而是由系統(tǒng)以固定的時(shí)間間隔執(zhí)行CHECKPOINT命令,將更改過的數(shù)據(jù)庫批量寫入硬盤。SQLServer在執(zhí)行數(shù)據(jù)更改時(shí)會(huì)設(shè)置一個(gè)開始點(diǎn)和一個(gè)結(jié)束點(diǎn),如果尚未到達(dá)結(jié)束點(diǎn)而因某種原因使操作中斷,則在SQLServer重新啟動(dòng)時(shí)會(huì)自動(dòng)恢復(fù)已修改的數(shù)據(jù),使其返回未被修改的狀態(tài)。由此可見,當(dāng)數(shù)據(jù)庫被破壞時(shí),可以用事務(wù)日志恢復(fù)數(shù)據(jù)庫中的內(nèi)容。注意:由于SQLServer2000中的數(shù)據(jù)和事務(wù)日志文件隨著數(shù)據(jù)的不斷操作而變化,同時(shí)又需要系統(tǒng)反應(yīng)靈敏,因此,這些文件不能存放在壓縮文件系統(tǒng)或共享網(wǎng)絡(luò)目錄等遠(yuǎn)程的網(wǎng)絡(luò)驅(qū)動(dòng)器上。SQLServer2000的文件擁有兩個(gè)名稱:邏輯文件名和物理文件名。物理文件名是操作系統(tǒng)中的路徑加文件名,而邏輯文件名是物理文件名的一個(gè)簡(jiǎn)稱或別名。當(dāng)使用Transact-SQL命令語句訪問某一個(gè)文件時(shí),必須使用該文件的邏輯名。邏輯名必須符合SQLServer的命名規(guī)則,而且各個(gè)數(shù)據(jù)庫的邏輯文件名不能相同。物理文件名是文件的實(shí)際存儲(chǔ)在磁盤上的文件名,而且可包含完整的磁盤目錄路徑。例如,對(duì)于Master系統(tǒng)數(shù)據(jù)庫,Master為主數(shù)據(jù)文件的邏輯名,而其對(duì)應(yīng)的物理文件名為Master.mdf,其日志文件的邏輯名為Mastlog,物理文件名為Master.ldf。這些文件名都可以在安裝好的SQL服務(wù)器上驗(yàn)證。4.1.2數(shù)據(jù)庫文件組為了便于管理,SQLServer允許將多個(gè)文件歸納為一組,并賦予一個(gè)名稱,這就是文件組。利用文件組可以使服務(wù)器的性能得到提高。例如,可以在不同的硬盤上創(chuàng)建多個(gè)數(shù)據(jù)文件,并將這些文件指派到某個(gè)文件組中。如果在該文件組上創(chuàng)建了一個(gè)數(shù)據(jù)表,則當(dāng)查詢?cè)摂?shù)據(jù)表中的數(shù)據(jù)時(shí),可以在不同的硬盤上同時(shí)進(jìn)行,提高查詢效率。
QLServer中的數(shù)據(jù)庫文件組分為主文件組(PrimaryFileGroup)和用戶定義文件組(User_definedGroup)。
(1)主文件組:由系統(tǒng)創(chuàng)建,包含主數(shù)據(jù)文件和任何沒有明確指派給其他文件組的數(shù)據(jù)文件。數(shù)據(jù)庫的系統(tǒng)表都包含在主文件組中。(2)用戶定義文件組:由用戶創(chuàng)建,是在CREATEDATABASE或ALTERDATABASE語句中使用FILEGROUP關(guān)鍵字指定的文件組。主文件組中包含了所有的系統(tǒng)表。當(dāng)建立數(shù)據(jù)庫時(shí),主文件組包括主數(shù)據(jù)文件和未指定組的其他數(shù)據(jù)文件。在用戶定義文件組和主文件組之間,有一個(gè)默認(rèn)文件組指向其中一個(gè)文件組。在創(chuàng)建數(shù)據(jù)庫對(duì)象時(shí),如果沒有指定將其放在哪一個(gè)文件組中,則會(huì)將它放在默認(rèn)文件組中。如果沒有指定默認(rèn)文件組的指向,則默認(rèn)文件組指向主文件組。一個(gè)文件只能存在于一個(gè)文件組中,一個(gè)文件組也只能被一個(gè)數(shù)據(jù)庫使用;文件組只包含數(shù)據(jù)文件(主數(shù)據(jù)文件和輔助數(shù)據(jù)文件),這些文件可以存放在不同的物理磁盤上。
事實(shí)上,SQLServer2000在沒有文件組時(shí)也能有效地工作。在沒有指定用戶定義文件組的情況下,所有文件都包含在主文件組中。在SQLServer2000中,使用文件組可以提高輸入/輸出性能,但它不是唯一的手段。4.1.3SQLServer的數(shù)據(jù)庫對(duì)象數(shù)據(jù)庫的邏輯存儲(chǔ)結(jié)構(gòu)指數(shù)據(jù)庫由哪些性質(zhì)的信息組成。SQLServer的數(shù)據(jù)庫不只可以存儲(chǔ)數(shù)據(jù),還可以存儲(chǔ)所有與數(shù)據(jù)處理操作相關(guān)的信息。實(shí)際上,SQLServer的數(shù)據(jù)庫由諸如表、視圖、索引等各種不同的數(shù)據(jù)庫對(duì)象組成,它們分別用來存儲(chǔ)特定信息并支持特定功能,構(gòu)成數(shù)據(jù)庫的邏輯存儲(chǔ)結(jié)構(gòu)。SQLServer2000的數(shù)據(jù)庫中的數(shù)據(jù)及信息在邏輯上組成一系列對(duì)象,用戶打開某個(gè)數(shù)據(jù)庫時(shí),所看到的是邏輯對(duì)象,而不是存放在磁盤上的物理數(shù)據(jù)文件。數(shù)據(jù)庫中的邏輯對(duì)象如下:
(1)表(Table):一種二維數(shù)據(jù)對(duì)象,由行和列組成,用于存儲(chǔ)關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)。每個(gè)表存儲(chǔ)有關(guān)由數(shù)據(jù)庫建模的一類對(duì)象的信息。
(2)視圖(View):可以使用與表相同的方式在SQL語句中引用的數(shù)據(jù)庫對(duì)象。
(3)存儲(chǔ)過程(Storedprocedures):Transact-SQL語句的預(yù)編譯集合,這些語句在一個(gè)名稱下存儲(chǔ)并作為一個(gè)單元運(yùn)行。(4)觸發(fā)器(Triggers):當(dāng)修改指定表中的數(shù)據(jù)時(shí)自動(dòng)執(zhí)行的存儲(chǔ)過程。
(5)用戶自定義數(shù)據(jù)類型(User-defineddatatypes):由用戶創(chuàng)建、用于自定義數(shù)據(jù)存儲(chǔ)、基于SQLServer數(shù)據(jù)類型的一種數(shù)據(jù)類型。
(6)用戶自定義函數(shù)(User-definedfunctions):由用戶定義的Transact-SQL函數(shù)。
(7)索引(Indexes):關(guān)系數(shù)據(jù)庫中基于鍵值提供的對(duì)表的行中數(shù)據(jù)進(jìn)行快速訪問的數(shù)據(jù)庫對(duì)象。
(8)規(guī)則(Rule):綁定到列或用戶定義的數(shù)據(jù)類型,并指定列可接受哪些數(shù)據(jù)值的數(shù)據(jù)庫對(duì)象。(9)默認(rèn)值(Defaults):當(dāng)用戶未指定時(shí)由系統(tǒng)自動(dòng)指派的數(shù)據(jù)值、選項(xiàng)設(shè)置、排序規(guī)則或名稱。
(10)全文目錄(Full-textcatalog):存儲(chǔ)數(shù)據(jù)庫內(nèi)表的全部全文索引。
(11)約束(Constraint):指派給表列的屬性,用于防止將某些類型的無效數(shù)值放到該列中。4.2系統(tǒng)數(shù)據(jù)庫和示例數(shù)據(jù)庫
SQLServer2000安裝成功后,系統(tǒng)會(huì)自動(dòng)創(chuàng)建6個(gè)數(shù)據(jù)庫,它們分別是master、model、msdb、tempdb、pubs和northwind。其中,前四個(gè)是系統(tǒng)數(shù)據(jù)庫,后兩個(gè)為示例數(shù)據(jù)庫。這些系統(tǒng)數(shù)據(jù)庫的文件存儲(chǔ)在MicrosoftSQLServer默認(rèn)安裝目錄下的MSSQL子目錄的Data文件夾中。例如,master數(shù)據(jù)庫的數(shù)據(jù)文件和日志文件的文件名分別為“master.mdf”和“master.ldf”。各數(shù)據(jù)庫的主要功能如下:●?master數(shù)據(jù)庫:是SQLServer系統(tǒng)最重要的數(shù)據(jù)庫。它記錄了SQLServer系統(tǒng)的所有系統(tǒng)信息。這些系統(tǒng)信息包括所有的登錄信息、系統(tǒng)設(shè)置信息、SQLServer的初始化信息和其他系統(tǒng)數(shù)據(jù)庫及用戶數(shù)據(jù)庫的相關(guān)信息。因此,在創(chuàng)建一個(gè)數(shù)據(jù)庫,更改系統(tǒng)的配置,添加個(gè)人登錄帳戶以及進(jìn)行任何會(huì)更改系統(tǒng)數(shù)據(jù)庫master的操作之后,應(yīng)當(dāng)及時(shí)備份Master系統(tǒng)數(shù)據(jù)庫?!?model數(shù)據(jù)庫:是所有用戶數(shù)據(jù)庫和tempdb數(shù)據(jù)庫的模板數(shù)據(jù)庫。它含有master數(shù)據(jù)庫的所有系統(tǒng)表子集,這些系統(tǒng)數(shù)據(jù)庫是每個(gè)用戶定義數(shù)據(jù)庫時(shí)都需要的。當(dāng)創(chuàng)建新的數(shù)據(jù)庫時(shí),SQLServer便會(huì)復(fù)制model數(shù)據(jù)庫并以此作為新數(shù)據(jù)庫的基礎(chǔ),因此利用它可以大大簡(jiǎn)化數(shù)據(jù)庫及其對(duì)象的創(chuàng)建和設(shè)置工作,為用戶節(jié)省大量的時(shí)間?!?msdb數(shù)據(jù)庫:是代理服務(wù)數(shù)據(jù)庫。它為報(bào)警、任務(wù)調(diào)度和記錄操作員的操作提供存儲(chǔ)空間?!?tempdb數(shù)據(jù)庫:是一個(gè)臨時(shí)數(shù)據(jù)庫。它為所有的臨時(shí)表、臨時(shí)存儲(chǔ)過程及其他臨時(shí)操作提供存儲(chǔ)空間。tempdb數(shù)據(jù)庫由整個(gè)系統(tǒng)的所有數(shù)據(jù)庫使用,不管用戶使用哪個(gè)數(shù)據(jù)庫,他們建立的所有臨時(shí)表和存儲(chǔ)過程都存儲(chǔ)在tempdb中。每次啟動(dòng)SQLServer時(shí),tempdb數(shù)據(jù)庫被重新建立。當(dāng)用戶與SQLServer斷開聯(lián)接時(shí),其臨時(shí)表和存儲(chǔ)過程被自動(dòng)刪除。●?pubs和northwind數(shù)據(jù)庫:是SQLServer自帶的兩個(gè)實(shí)例數(shù)據(jù)庫,可以作為SQLServer學(xué)習(xí)的輔助工具,它們是否存在與整個(gè)數(shù)據(jù)庫系統(tǒng)的運(yùn)行無關(guān)。pubs數(shù)據(jù)庫存儲(chǔ)了一個(gè)虛構(gòu)的圖書出版公司的基本情況;northwind數(shù)據(jù)庫則包含了一個(gè)公司的銷售數(shù)據(jù),該公司是一個(gè)虛構(gòu)的公司,從事食品進(jìn)出口業(yè)務(wù)。4.3數(shù)據(jù)庫的查看查看是數(shù)據(jù)庫的常用操作,通常可以在兩種界面上查看:企業(yè)管理器和查詢分析器。4.3.1用企業(yè)管理器查看數(shù)據(jù)庫信息在企業(yè)管理器的控制臺(tái)根目錄中選中所要查看的數(shù)據(jù)庫,并選擇“查看”菜單中的“任務(wù)板”命令,右邊窗口中就會(huì)顯示該數(shù)據(jù)庫的相關(guān)信息,如圖4-2所示,其中包括:
(1)數(shù)據(jù)庫信息:數(shù)據(jù)庫擁有者、創(chuàng)建時(shí)間、大小、用戶個(gè)數(shù)等。
(2)維護(hù)信息:關(guān)于備份和維護(hù)的信息。
(3)已分配空間信息:所有數(shù)據(jù)文件和日志文件的空間使用情況。圖4-2Pubs數(shù)據(jù)庫的信息
要查看pubs數(shù)據(jù)庫的屬性,設(shè)置和修改pubs數(shù)據(jù)庫的屬性及選項(xiàng),可以進(jìn)行如下操作:雙擊pubs數(shù)據(jù)庫圖標(biāo)或用鼠標(biāo)右鍵單擊該數(shù)據(jù)庫名或圖標(biāo),在彈出的快捷菜單中選擇“屬性”命令,即可打開該數(shù)據(jù)庫的屬性窗口。在該窗口中可以查看數(shù)據(jù)庫屬性信息,并可設(shè)置和修改數(shù)據(jù)庫的屬性和選項(xiàng)設(shè)置,如圖4-3所示。數(shù)據(jù)庫屬性窗口有“常規(guī)”、“數(shù)據(jù)文件”、“事務(wù)日志”、“文件組”、“選項(xiàng)”和“權(quán)限”等6個(gè)選項(xiàng)卡。
(1)“常規(guī)”選項(xiàng)卡:可以查看數(shù)據(jù)庫、備份、維護(hù)等方面的基本信息,如圖4-4所示。圖4-3數(shù)據(jù)庫屬性圖4-4“常規(guī)”選項(xiàng)卡(2)“數(shù)據(jù)文件”選項(xiàng)卡:可對(duì)數(shù)據(jù)文件(主數(shù)據(jù)文件和輔助數(shù)據(jù)文件)的初始容量、最大容量、增長(zhǎng)量進(jìn)行設(shè)置修改,也可以設(shè)置在哪一個(gè)文件組中進(jìn)行文件的增刪(這將影響文件組中包含文件的數(shù)量),確定新增文件的名稱和物理位置,如圖4-5所示。
(3)“事務(wù)日志”選項(xiàng)卡:可對(duì)日志文件的初始容量、最大容量、增長(zhǎng)量進(jìn)行設(shè)置和修改,也可以新增或刪除日志文件,但不影響文件組,如圖4-6所示。
(4)“文件組”選項(xiàng)卡:可增刪文件組,對(duì)文件組名稱、組內(nèi)文件數(shù)、只讀屬性及默認(rèn)值進(jìn)行查詢、設(shè)置和修改,如圖4-7所示。圖4-5“數(shù)據(jù)文件”選項(xiàng)卡圖4-6“事務(wù)日志”選項(xiàng)卡圖4-7“文件組”選項(xiàng)卡(5)“選項(xiàng)”選項(xiàng)卡:可對(duì)數(shù)據(jù)庫的訪問權(quán)限及多項(xiàng)屬性進(jìn)行設(shè)置和修改,如圖4-8所示。(6)“權(quán)限”選項(xiàng)卡:該選項(xiàng)卡以后再作介紹。圖4-8“選項(xiàng)”選項(xiàng)卡4.3.2用查詢分析器查看數(shù)據(jù)庫信息在查詢分析器中查看數(shù)據(jù)庫要使用系統(tǒng)存儲(chǔ)過程sp_helpdb。語法:
[EXECUTE]sp_helpdb[數(shù)據(jù)庫名]EXECUTE可以縮寫為EXEC,如果它是一個(gè)批處理中的第一個(gè)語句,則可全部省略。如省略數(shù)據(jù)庫名,則可查看所有數(shù)據(jù)庫信息。
【例4-1】在查詢分析器中用sp_helpdb語句查看所有數(shù)據(jù)庫信息。在查詢分析器中輸入代碼:
execsp_helpdb
單擊“運(yùn)行”按鈕,運(yùn)行結(jié)果如圖4-9所示。圖4-9查看所有數(shù)據(jù)庫信息
【例4-2】在查詢分析器中用sp_helpdb語句查看pubs數(shù)據(jù)庫信息。在查詢分析器中輸入代碼:
execsp_helpdbpubs
按“F5”鍵或單擊“運(yùn)行”按鈕,運(yùn)行結(jié)果如圖4-10所示。另外,使用系統(tǒng)存儲(chǔ)過程sp_databases可以查看所有可用數(shù)據(jù)庫的名稱和大??;使用系統(tǒng)存儲(chǔ)過程sp_helpfile可以查看當(dāng)前數(shù)據(jù)庫中某個(gè)文件的名稱、位置和大小;使用系統(tǒng)存儲(chǔ)過程sp_helpfilegroup可以查看當(dāng)前數(shù)據(jù)庫中某個(gè)文件組的名稱、編號(hào)和包含的文件數(shù)。圖4-10查看pubs數(shù)據(jù)庫信息4.4數(shù)據(jù)庫的建立創(chuàng)建數(shù)據(jù)庫的一般原則是:將與業(yè)務(wù)相關(guān)的數(shù)據(jù)集合放在一個(gè)數(shù)據(jù)庫中,以方便使用者的管理,不要把無關(guān)的多個(gè)數(shù)據(jù)集合放在一個(gè)數(shù)據(jù)庫中。創(chuàng)建數(shù)據(jù)庫需要一定的許可,在默認(rèn)情況下,只有系統(tǒng)管理員和數(shù)據(jù)庫擁有者可以創(chuàng)建數(shù)據(jù)庫。當(dāng)然,也可以把這種許可授權(quán)給其他用戶。數(shù)據(jù)庫被創(chuàng)建后,創(chuàng)建數(shù)據(jù)庫的用戶自動(dòng)成為該數(shù)據(jù)庫的所有者。每個(gè)數(shù)據(jù)庫都由以下幾個(gè)部分組成:關(guān)系圖、表、視圖、存儲(chǔ)過程、用戶、角色、規(guī)則、默認(rèn)值、用戶自定義數(shù)據(jù)類型和用戶自定義函數(shù)。SQLServer使用一個(gè)公共模板來創(chuàng)建數(shù)據(jù)庫,每個(gè)服務(wù)器中最多可以創(chuàng)建32767個(gè)數(shù)據(jù)庫。數(shù)據(jù)庫的名稱必須滿足系統(tǒng)規(guī)定的標(biāo)識(shí)符命名規(guī)則,最好使用有意義的名稱命名數(shù)據(jù)庫。每個(gè)數(shù)據(jù)庫必須有一個(gè)唯一的數(shù)據(jù)庫名,以對(duì)其進(jìn)行標(biāo)識(shí)(在所在的數(shù)據(jù)庫實(shí)例中唯一即可)。數(shù)據(jù)庫名稱必須符合SQLServer標(biāo)識(shí)符的構(gòu)成規(guī)則:(1)由字母、漢字、數(shù)字、下劃線組成。(2)不能以數(shù)字開頭,不能是關(guān)鍵字。(4)最長(zhǎng)不超過128個(gè)字符。
創(chuàng)建數(shù)據(jù)庫除了為數(shù)據(jù)庫設(shè)計(jì)名稱外,還要設(shè)計(jì)數(shù)據(jù)庫所占用的存儲(chǔ)空間大小和存放文件位置等。數(shù)據(jù)庫的基本信息存儲(chǔ)在master數(shù)據(jù)庫中的sysdatabases系統(tǒng)表中,因而可以使用SELECT語句來查詢數(shù)據(jù)庫信息。創(chuàng)建數(shù)據(jù)庫的方法有以下三種:使用向?qū)?、使用企業(yè)管理器和使用Transact-SQL語言。4.4.1使用向?qū)?chuàng)建數(shù)據(jù)庫使用向?qū)?chuàng)建數(shù)據(jù)庫的步驟如下:
(1)在企業(yè)管理器中,首先選中欲創(chuàng)建數(shù)據(jù)庫的服務(wù)器節(jié)點(diǎn),然后從“工具”菜單中選擇“向?qū)А边x項(xiàng),或在工具欄中選擇圖標(biāo),將出現(xiàn)如圖4-11所示的“選擇向?qū)А睂?duì)話框。圖4-11“選擇向?qū)А睂?duì)話框(2)在圖4-11中雙擊“注冊(cè)服務(wù)器向?qū)А泵?,或者選擇“注冊(cè)服務(wù)器向?qū)А泵詈髥螕簟按_定”按鈕,出現(xiàn)“歡迎使用創(chuàng)建數(shù)據(jù)庫向?qū)А睂?duì)話框,如圖4-12所示。
(3)單擊“下一步”按鈕,出現(xiàn)“命名數(shù)據(jù)庫并指定它的位置”對(duì)話框,如圖4-13所示。在該對(duì)話框中,在第一個(gè)文本框中要填寫即將創(chuàng)建的數(shù)據(jù)庫名稱,在第二個(gè)文本框中填寫該數(shù)據(jù)庫文件的存放位置,在第三個(gè)文本框中填寫數(shù)據(jù)庫事務(wù)日志文件的存放位置。輸入數(shù)據(jù)庫名稱時(shí)要注意符合系統(tǒng)的命名規(guī)則。選擇文件的存儲(chǔ)位置時(shí),可以單擊文本框右端的“”按鈕來選擇對(duì)應(yīng)的文件路徑。圖4-12“歡迎使用創(chuàng)建數(shù)據(jù)庫向?qū)А睂?duì)話框圖4-13“命名數(shù)據(jù)庫并指定它的位置”對(duì)話框(4)單擊“下一步”按鈕,出現(xiàn)“命名數(shù)據(jù)庫文件”對(duì)話框,如圖4-14所示。在該對(duì)話框中可以修改數(shù)據(jù)庫文件的文件名和該文件的大小。在默認(rèn)情況下,數(shù)據(jù)庫文件的文件名為:數(shù)據(jù)庫名_Data,初始大小為1MB。
(5)單擊“下一步”按鈕,出現(xiàn)“定義數(shù)據(jù)庫文件的增長(zhǎng)”對(duì)話框,如圖4-15所示。在該對(duì)話框中可以定義是否允許數(shù)據(jù)庫自動(dòng)增長(zhǎng)以及數(shù)據(jù)庫增長(zhǎng)的比例。如果選擇“數(shù)據(jù)庫文件自動(dòng)增長(zhǎng)”選項(xiàng),則需要選擇其增長(zhǎng)的方式,是以兆字節(jié)為單位增長(zhǎng)還是按照數(shù)據(jù)庫的百分比增長(zhǎng)。另外,在該對(duì)話框中還可以限制數(shù)據(jù)庫文件增長(zhǎng)的最大尺寸。如果不限制數(shù)據(jù)庫文件的最大尺寸,那么數(shù)據(jù)庫文件就會(huì)一直增長(zhǎng),直到把整個(gè)磁盤空間占滿為止。圖4-14“命名數(shù)據(jù)庫文件”對(duì)話框圖4-15“定義數(shù)據(jù)庫文件的增長(zhǎng)”對(duì)話框(6)單擊“下一步”按鈕,出現(xiàn)“命名事務(wù)日志文件”對(duì)話框,如圖4-16所示。在該對(duì)話框中,除了可以指定日志文件的名稱外,還可以指定該日志文件的初始大小。在默認(rèn)情況下,初始文件大小為1MB。
(7)在圖4-16中單擊“下一步”按鈕,出現(xiàn)“定義事務(wù)日志文件的增長(zhǎng)”對(duì)話框,如圖4-17所示。在該對(duì)話框中可以定義是否允許數(shù)據(jù)庫的事務(wù)日志文件自動(dòng)增長(zhǎng)及其增長(zhǎng)的比例。如果選擇“事務(wù)日志文件自動(dòng)增長(zhǎng)”選項(xiàng),則需要選擇其增長(zhǎng)方式,是以兆字節(jié)為單位增長(zhǎng)還是按照數(shù)據(jù)庫的百分比增長(zhǎng)。另外,該對(duì)話框還可以限制數(shù)據(jù)庫日志文件增長(zhǎng)的最大尺寸。如果不限制數(shù)據(jù)庫日志文件的最大尺寸,那么數(shù)據(jù)庫日志文件就會(huì)一直增長(zhǎng),直到把整個(gè)磁盤空間占滿為止。圖4-16“命名事務(wù)日志文件”對(duì)話框圖4-17“定義事務(wù)日志文件的增長(zhǎng)”對(duì)話框(8)在圖4-17中單擊“下一步”按鈕,就會(huì)出現(xiàn)“正在完成創(chuàng)建數(shù)據(jù)庫向?qū)А睂?duì)話框,如圖4-18所示,此時(shí)系統(tǒng)并沒有真正創(chuàng)建數(shù)據(jù)庫。如果前面的定義有問題或者需要更改,則可以單擊“上一步”按鈕返回修改;如果確認(rèn)沒有問題,則單擊“完成”按鈕即可創(chuàng)建該數(shù)據(jù)庫。圖4-18完成創(chuàng)建數(shù)據(jù)庫4.4.2使用企業(yè)管理器創(chuàng)建數(shù)據(jù)庫使用企業(yè)管理器創(chuàng)建數(shù)據(jù)庫的步驟如下:
(1)在企業(yè)管理器中,單擊工具欄中的圖標(biāo),也可在數(shù)據(jù)庫文件夾或其下屬任一數(shù)據(jù)庫圖標(biāo)上右擊,從彈出的快捷菜單中選擇“新建數(shù)據(jù)庫”選項(xiàng),出現(xiàn)如圖4-19所示的“數(shù)據(jù)庫屬性”窗口。
(2)在“常規(guī)”選項(xiàng)卡中,要求用戶輸入數(shù)據(jù)庫名稱以及排序規(guī)則名稱(通常為默認(rèn))。
(3)單擊“數(shù)據(jù)文件”選項(xiàng)卡,該選項(xiàng)卡用來輸入數(shù)據(jù)庫文件的名稱、存儲(chǔ)位置、初始容量大小和所屬文件組名稱,如圖4-20所示。選項(xiàng)卡的下方是設(shè)置文件增長(zhǎng)信息的部分,首先選擇是否允許文件自動(dòng)增長(zhǎng),然后設(shè)置文件的增長(zhǎng)方式和允許的數(shù)據(jù)文件的最大尺寸。圖4-19“數(shù)據(jù)庫屬性”窗口圖4-20“數(shù)據(jù)文件”選項(xiàng)卡(4)單擊“事務(wù)日志”選項(xiàng)卡,該選項(xiàng)卡用來設(shè)置事務(wù)日志文件信息,如圖4-21所示。在“文件名”列表框中可以輸入事務(wù)日志文件的信息,包括事務(wù)日志文件名稱、存儲(chǔ)位置、初始大小。最下面的部分是設(shè)置事務(wù)日志文件增長(zhǎng)信息的部分,首先選擇是否允許文件自動(dòng)增長(zhǎng),然后設(shè)置文件的增長(zhǎng)方式和允許的事務(wù)日志文件的最大尺寸。
(5)單擊圖4-21中的“確定”按鈕,就開始創(chuàng)建新的數(shù)據(jù)庫。圖4-21“事務(wù)日志”選項(xiàng)卡4.4.3使用Transact-SQL語言創(chuàng)建數(shù)據(jù)庫
Transact-SQL語言使用CREATEDATABASE命令來創(chuàng)建數(shù)據(jù)庫。該命令的語法如下:CREATEDATABASEdatabase_name[ON[<filespec>[,...n]][,<filegroup>[,...n]]][LOGON{<filespec>[,...n]}][COLLATEcollation_name][FORLOAD|FORATTACH]<filespec>::=[PRIMARY]([NAME=logical_file_name,]FILENAME='os_file_name'[,SIZE=size][,MAXSIZE={max_size|UNLIMITED}][,F(xiàn)ILEGROWTH=growth_increment])[,...n]<filegroup>::=FILEGROUPfilegroup_name<filespec>[,...n]
說明:在Transact-SQL語言的命令格式中,用[]括起來的內(nèi)容表示是可選的;[,…n]表示重復(fù)前面的內(nèi)容;用<>括起來的表示在實(shí)際編寫語句時(shí)用相應(yīng)的內(nèi)容替代;用{}括起來的表示是必選的;類似A|B的格式,表示A和B只能選擇一個(gè),不能同時(shí)都選。CREATEDATABASE命令中各參數(shù)的說明如下:●?database_name:新數(shù)據(jù)庫的名稱。數(shù)據(jù)庫名稱在數(shù)據(jù)庫服務(wù)器中必須唯一,最長(zhǎng)為128個(gè)字符,并且要符合標(biāo)識(shí)符的命名規(guī)則。每個(gè)服務(wù)器管理的數(shù)據(jù)庫最多為32767個(gè)。●?ON:指定存放數(shù)據(jù)庫的數(shù)據(jù)文件信息。該關(guān)鍵字后面可以包含用逗號(hào)分隔的filespec列表,filespec列表用于定義主文件組的數(shù)據(jù)文件。主文件組的文件列表后可以包含用逗號(hào)分隔的filegroup列表,filegroup列表用于定義用戶文件組及其中的文件。●?PRIMARY:用于指定主文件組中的文件。主文件組不僅包含數(shù)據(jù)庫系統(tǒng)表中的全部?jī)?nèi)容,而且還包含用戶文件組中沒有包含的全部對(duì)象。主文件組的第一個(gè)由filespec指定的文件是主文件,該文件包含數(shù)據(jù)庫的邏輯起點(diǎn)及其系統(tǒng)表。一個(gè)數(shù)據(jù)庫只能有一個(gè)主文件,默認(rèn)情況下,如果不指定PRIMARY關(guān)鍵字,則在命令中列出的第一個(gè)文件將被默認(rèn)為主文件?!?LOGON:指明事務(wù)日志文件的明確定義。如果沒有本選項(xiàng),則系統(tǒng)會(huì)自動(dòng)產(chǎn)生一個(gè)文件名前綴與數(shù)據(jù)庫名相同,容量為所有數(shù)據(jù)庫文件大小1/4的事務(wù)日志文件?!?FORLOAD:表示計(jì)劃將備份直接裝入新建的數(shù)據(jù)庫,主要是為了和過去的SQLServer版本兼容?!?FORATTACH:表示在一組已經(jīng)存在的操作系統(tǒng)文件中建立一個(gè)新的數(shù)據(jù)庫?!?NAME:指定數(shù)據(jù)庫的邏輯名稱。這是在SQLServer系統(tǒng)中使用的名稱,是數(shù)據(jù)庫在SQLServer中的標(biāo)識(shí)符?!?FILENAME:指定數(shù)據(jù)庫所在文件的操作系統(tǒng)文件名稱和路徑,該操作系統(tǒng)文件名稱和NAME的邏輯名稱一一對(duì)應(yīng)。●?SIZE:指定數(shù)據(jù)庫的初始容量大小。如果沒有指定主文件的大小,則SQLServer默認(rèn)其與模板數(shù)據(jù)庫中的主文件大小一致,其他數(shù)據(jù)庫文件和事務(wù)日志文件則默認(rèn)為1MB。指定大小的數(shù)字其SIZE可以使用KB、MB、GB和TB后綴,默認(rèn)的后綴為MB。SIZE中不能使用小數(shù),其最小值為512KB,默認(rèn)值為1MB。主文件的SIZE不能小于模板數(shù)據(jù)庫中的主文件?!?MAXSIZE:指定操作系統(tǒng)文件可以增長(zhǎng)到的最大尺寸。如果沒有指定,則文件可以不斷增長(zhǎng)直到充滿磁盤?!?FILEGROWTH:指定文件每次增加容量的大小。當(dāng)指定數(shù)據(jù)為0時(shí),表示文件不自動(dòng)增長(zhǎng);當(dāng)容量不夠時(shí),需由人工增加。增加量是由數(shù)字和后綴(KB、MB、%)表示的,后綴%表示該文件可增加百分之多少。默認(rèn)后綴為MB。如果沒有指定FILEGROWTH,則默認(rèn)值為10%。每次增加容量的最小值為64KB,計(jì)算后的增加容量值是64K的倍數(shù)。
在使用CREATEDATABASE命令創(chuàng)建數(shù)據(jù)庫的過程中,SQLServer用模板數(shù)據(jù)庫(model)來初始化新建的數(shù)據(jù)庫。在模板數(shù)據(jù)庫中,所有用戶定義的對(duì)象和數(shù)據(jù)庫的設(shè)置都會(huì)被復(fù)制到新數(shù)據(jù)庫中。在理想的情況下,只有有限的用戶可以被授權(quán)創(chuàng)建數(shù)據(jù)庫。系統(tǒng)安裝后,只有系統(tǒng)管理員有這個(gè)特權(quán),系統(tǒng)管理員可以將這個(gè)特權(quán)授予其他用戶。數(shù)據(jù)庫的創(chuàng)建者被默認(rèn)為該數(shù)據(jù)庫的所有者,可以通過sp_changedbowner系統(tǒng)存儲(chǔ)過程來更改數(shù)據(jù)庫所有者。
【例4-3】使用CREATEDATABASE創(chuàng)建一個(gè)Sales數(shù)據(jù)庫,所有參數(shù)均取默認(rèn)值。程序清單如下:
CREATEDATABASESales
系統(tǒng)輸出結(jié)果如下:
CREATEDATABASE進(jìn)程正在磁盤'Sales'上分配0.75MB的空間。
CREATEDATABASE進(jìn)程正在磁盤‘Sales_log’上分配0.49MB的空間。說明:這是最簡(jiǎn)單的創(chuàng)建數(shù)據(jù)庫的命令。由于沒有指定主文件和日志文件,因此在默認(rèn)情況下,命名主文件為Sales.mdf,日志文件為Sales_log.ldf。同時(shí),由于是按照model數(shù)據(jù)庫的方式來創(chuàng)建的數(shù)據(jù)庫,因此主文件和日志文件的大小與model數(shù)據(jù)庫的主文件和日志文件的大小相同。由于沒有指定主文件和日志文件的最大長(zhǎng)度,因此主文件和日志文件都可以自由增長(zhǎng),直到充滿整個(gè)硬盤空間。
【例4-4】創(chuàng)建一個(gè)Student數(shù)據(jù)庫。該數(shù)據(jù)庫的主文件邏輯名稱為Student_data,物理文件名為Student.mdf,初始大小為10MB,最大尺寸為無限大,增長(zhǎng)速度為10%;數(shù)據(jù)庫的日志文件邏輯名稱為Student_log,物理文件名為Student.ldf,初始大小為1MB,最大尺寸為5MB,增長(zhǎng)速度為每次1MB。程序清單如下:
CREATEDATABASEStudent0NPRIMARY(NAME=Student_data,
FILENAME='e:\data\Student.mdf',SIZE=10,MAXSIZE=unlimited,--最大尺寸為無限大,一般要設(shè)置一個(gè)有限數(shù)值FILEGROWTH=10%)LOGON(NAME=Student_log,
FILENAME='e:\data\Student.ldf',
SIZE=1,
MAXSIZE=5,
FILEGROWTH=1)
系統(tǒng)輸出結(jié)果如下:
CREATEDATABASE進(jìn)程正在磁盤‘student_data’上分配10.00MB的空間。
CREATEDATABASE進(jìn)程正在磁盤'student_log'上分配1.00MB的空間。
注意:“e:\data”必須事先創(chuàng)建好,F(xiàn)ILENAME項(xiàng)要用單引號(hào)。【例4-5】創(chuàng)建一個(gè)指定多個(gè)數(shù)據(jù)文件和日志文件的數(shù)據(jù)庫。該數(shù)據(jù)庫名稱為students,有一個(gè)10MB和一個(gè)20MB的數(shù)據(jù)文件及兩個(gè)10MB的事務(wù)日志文件。數(shù)據(jù)文件指定在主文件組中,邏輯名稱為student1和student2,物理文件名為student1.mdf和student2.ndf,兩個(gè)數(shù)據(jù)文件的最大尺寸分別為80MB和100MB,增長(zhǎng)速度分別為10%和1MB。事務(wù)日志文件的邏輯名為studentlog1和studentlog2,物理文件名為studentlog1.ldf和studentlog2.ldf,最大尺寸均為50MB,文件增長(zhǎng)速度為1MB。程序清單如下:
CREATEDATABASEstudentsONPRIMARY(NAME=student1,F(xiàn)ILENAME='e:\data\student1.mdf',
SIZE=10,
MAXSIZE=80,F(xiàn)ILEGROWTH=10%),--注意這里要有“,”,因?yàn)橄旅媸恰?”(NAME=student2,
FILENAME='f:\data\student2.ndf',
SIZE=20,
MAXSIZE=100,
FILEGROWTH=1)--注意這里不要“,”,因?yàn)橄旅娌皇恰?”LOGON(NAME=studentlog1,
FILENAME='j:\data\studentlog1.ldf',
SIZE=10,MAXSIZE=50,
FILEGROWTH=1),
(NAME=studentlog2,
FILENAME='k:\data\studentlog2.ldf',
SIZE=10,
MAXSIZE=50,
FILEGROWTH=1)
注意:如果磁盤空間足夠大,則可以將日志文件和數(shù)據(jù)文件放在同一磁盤上,但從安全和性能上考慮,日志文件和數(shù)據(jù)文件應(yīng)分別放在不同的物理磁盤上。4.5數(shù)據(jù)庫的刪除對(duì)于那些不再需要的數(shù)據(jù)庫,可以刪除它以釋放在磁盤上占用的空間。刪除數(shù)據(jù)庫有兩種方式,即利用企業(yè)管理器和利用DROP語句。4.5.1利用企業(yè)管理器刪除數(shù)據(jù)庫在企業(yè)管理器中,找到所要?jiǎng)h除的數(shù)據(jù)庫并右擊,從彈出的快捷菜單中選擇“刪除”選項(xiàng),或單擊所要?jiǎng)h除的數(shù)據(jù)庫,再按下鍵盤上的Delete鍵,即可刪除數(shù)據(jù)庫,也可以選擇數(shù)據(jù)庫文件夾或圖標(biāo)后單擊工具欄中表示刪除的圖標(biāo)來刪除數(shù)據(jù)庫。系統(tǒng)會(huì)彈出“確認(rèn)是否要?jiǎng)h除數(shù)據(jù)庫”對(duì)話框,單擊“是”按鈕,則刪除該數(shù)據(jù)庫。刪除數(shù)據(jù)庫一定要慎重,因?yàn)橄到y(tǒng)無法輕易恢復(fù)被刪除的數(shù)據(jù),除非做過數(shù)據(jù)庫備份。使用這種方法每次只能刪除一個(gè)數(shù)據(jù)庫。4.5.2利用DROP語句刪除數(shù)據(jù)庫利用DROP語句可以從SQLServer中一次刪除一個(gè)或多個(gè)數(shù)據(jù)庫。其語法如下:
DROPDATABASEdatabase_name[,…n]【例4-6】使用DROP語句刪除已創(chuàng)建的數(shù)據(jù)庫students。程序清單如下:
DROPDATABASEstudents
系統(tǒng)輸出結(jié)果為
正在刪除數(shù)據(jù)庫文件'k:\data\studentlog2.ldf'。正在刪除數(shù)據(jù)庫文件'f:\data\student2.ndf'。正在刪除數(shù)據(jù)庫文件'j:\data\studentlog1.ldf'。正在刪除數(shù)據(jù)庫文件'e:\data\student1.mdf'。說明:不是所有的數(shù)據(jù)庫在任何時(shí)候都可以被刪除,只有處于正常狀態(tài)下的數(shù)據(jù)庫才能使用DROP語句刪除。當(dāng)數(shù)據(jù)庫處于以下狀態(tài)時(shí)不能被刪除:數(shù)據(jù)庫正在使用;數(shù)據(jù)庫正在恢復(fù);數(shù)據(jù)庫包含用于復(fù)制的、已經(jīng)出版的對(duì)象。4.6數(shù)據(jù)庫的移動(dòng)如果要把數(shù)據(jù)庫從一個(gè)SQLServer系統(tǒng)中移動(dòng)到另一個(gè)SQLServer系統(tǒng),或者把數(shù)據(jù)文件從一個(gè)磁盤移到另一個(gè)磁盤上,則可以先將數(shù)據(jù)庫與SQLServer系統(tǒng)分離,然后把數(shù)據(jù)庫文件復(fù)制到其他磁盤上,再將數(shù)據(jù)庫重新附加到原來的系統(tǒng)中或附加到另一個(gè)系統(tǒng)中。數(shù)據(jù)庫的附加是數(shù)據(jù)庫物理文件在數(shù)據(jù)庫系統(tǒng)中重新掛鉤的過程。分離數(shù)據(jù)庫實(shí)際上只是從SQLServer系統(tǒng)中把某數(shù)據(jù)庫與其對(duì)應(yīng)的數(shù)據(jù)文件和事務(wù)日志文件脫鉤,組成該數(shù)據(jù)庫的數(shù)據(jù)文件和事務(wù)日志文件依然完好無損地保存在磁盤上。分離后的數(shù)據(jù)庫可以再附加到任何SQLServer系統(tǒng)中,而且數(shù)據(jù)庫在新系統(tǒng)中的使用狀態(tài)與它分離時(shí)的狀態(tài)完全相同。分離前,數(shù)據(jù)庫文件和日志文件不可以復(fù)制或者刪除,分離后就可以了。4.6.1使用企業(yè)管理器分離數(shù)據(jù)庫
使用企業(yè)管理器分離數(shù)據(jù)庫的過程如下:
(1)選中要分離的數(shù)據(jù)庫,選擇“操作”菜單中的“所有任務(wù)”,或者直接右擊要分離的數(shù)據(jù)庫,在彈出的快捷菜單中選擇“所有任務(wù)”,然后再選擇其子菜單中的“分離數(shù)據(jù)庫”命令,將出現(xiàn)“分離數(shù)據(jù)庫”對(duì)話框。
(2)在“分離數(shù)據(jù)庫”對(duì)話框中,檢查數(shù)據(jù)庫的狀態(tài),包括與當(dāng)前數(shù)據(jù)庫的聯(lián)接數(shù)和是否正在執(zhí)行復(fù)制數(shù)據(jù)庫操作。
注意:如果有用戶正在聯(lián)接數(shù)據(jù)庫或者正在執(zhí)行復(fù)制數(shù)據(jù)庫操作,則不能分離數(shù)據(jù)庫,此時(shí)若要執(zhí)行分離操作,則必須先單擊“清除”按鈕清除聯(lián)接。在此對(duì)話框中還可以選擇是否“在分離前更新數(shù)據(jù)庫統(tǒng)計(jì)信息”。(3)單擊“確定”按鈕完成數(shù)據(jù)庫的分離。已分離的數(shù)據(jù)庫將不再出現(xiàn)在SQLServer系統(tǒng)中,但是此數(shù)據(jù)庫的相關(guān)文件仍然可以從數(shù)據(jù)庫文件原先的文件夾中找到。4.6.2使用sp_detach_db語句分離數(shù)據(jù)庫使用sp_detach_db語句分離數(shù)據(jù)庫的語法格式如下:
execsp_detach_db數(shù)據(jù)庫名稱[,true|false]
其中,“數(shù)據(jù)庫名稱”指定要分離的數(shù)據(jù)庫;第二個(gè)參數(shù)指定是否在分離數(shù)據(jù)庫前更新數(shù)據(jù)庫統(tǒng)計(jì)信息,取false為指定更新數(shù)據(jù)庫統(tǒng)計(jì)信息,取true或省略則不更新數(shù)據(jù)庫統(tǒng)計(jì)信息。下面的語句用來從系統(tǒng)中分離Sales數(shù)據(jù)庫,不更新數(shù)據(jù)庫統(tǒng)計(jì)信息。
execsp_detach_db'Sales','true'4.6.3使用企業(yè)管理器附加數(shù)據(jù)庫使用企業(yè)管理器附加數(shù)據(jù)庫的過程如下:
(1)在企業(yè)管理器中選中數(shù)據(jù)庫節(jié)點(diǎn),選擇“操作”菜單中的“所有任務(wù)”,或者直接右擊數(shù)據(jù)庫節(jié)點(diǎn),在彈出的快捷菜單中選擇“所有任務(wù)”,然后再選擇其子菜單中的“附加數(shù)據(jù)庫”命令,彈出如圖4-22所示的“附加數(shù)據(jù)庫”對(duì)話框。
(2)在“附加數(shù)據(jù)庫”對(duì)話框的“要附加數(shù)據(jù)庫的MDF文件”文本框中直接輸入要附加到SQLServer系統(tǒng)的數(shù)據(jù)庫主數(shù)據(jù)文件的路徑與文件名,或者單擊該文本框右側(cè)的“”按鈕,在彈出的“瀏覽現(xiàn)有的文件”對(duì)話框中展開路徑查找并選中數(shù)據(jù)庫主數(shù)據(jù)文件。圖4-22“附加數(shù)據(jù)庫”對(duì)話框(3)如果要附加數(shù)據(jù)庫的事務(wù)日志文件或輔助數(shù)據(jù)文件與主數(shù)據(jù)文件不在一個(gè)磁盤或一個(gè)文件夾內(nèi),則該文件的“當(dāng)前文件位置”前面出現(xiàn)錯(cuò)誤符號(hào),可以修改為正確路徑(或者把它們與主數(shù)據(jù)文件存放在一個(gè)文件夾中),在出現(xiàn)正確符號(hào)后,單擊“確定”就可以把指定數(shù)據(jù)庫附加到當(dāng)前的SQLServer系統(tǒng)中。4.6.4使用sp_attach_db語句附加數(shù)據(jù)庫下面的示例將pubs中的兩個(gè)文件附加到當(dāng)前服務(wù)器。在查詢分析器中輸入:
execsp_attach_db@dbname=N'pubs',
@filename1=N'c:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\pubs.mdf',
@filename2=N'c:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\pubs_log.ldf'
就可以把已經(jīng)分離的pubs數(shù)據(jù)庫的文件重新附加到數(shù)據(jù)庫系統(tǒng)中。4.7數(shù)據(jù)庫的其他操作除了前面章節(jié)講到的數(shù)據(jù)庫操作外,還有一些其他操作。4.7.1數(shù)據(jù)庫的選項(xiàng)修改利用企業(yè)管理器的數(shù)據(jù)庫屬性中的“選項(xiàng)”選項(xiàng)卡可對(duì)數(shù)據(jù)庫的訪問權(quán)限及多項(xiàng)屬性進(jìn)行設(shè)置和修改。其中,常用選項(xiàng)如下:●限制訪問:可選擇僅允許db_owner、dbcreator或sysadmin成員訪問數(shù)據(jù)庫,也可選擇“單用戶”,即只允許一個(gè)用戶訪問,一個(gè)用戶退出后另一個(gè)用戶才能登錄,這樣管理員可以保證除了自己沒有其他用戶在使用系統(tǒng)?!裰蛔x:數(shù)據(jù)庫中的數(shù)據(jù)只能讀取,不能修改?!褡詣?dòng)關(guān)閉:當(dāng)最后一個(gè)用戶退出后,系統(tǒng)自動(dòng)關(guān)閉該數(shù)據(jù)庫,釋放占用的資源;當(dāng)又有新的用戶要求聯(lián)接時(shí),數(shù)據(jù)庫自動(dòng)打開?!褡詣?dòng)收縮:數(shù)據(jù)刪除后若文件中的未用空間超過文件的25%,則將自動(dòng)縮小文件,但不會(huì)小于設(shè)定的初始容量。如果設(shè)置只讀,則這個(gè)選項(xiàng)無效。通常這個(gè)選項(xiàng)設(shè)為“不選中”,當(dāng)未用空間超過文件的25%時(shí),需要數(shù)據(jù)庫管理員手工縮小,其好處是可以避免在系統(tǒng)忙時(shí)自動(dòng)縮小文件?!馎NSINULL默認(rèn)設(shè)置:允許在數(shù)據(jù)庫表的列中輸入空(NULL)值?!襁f歸觸發(fā)器:允許觸發(fā)器遞歸調(diào)用。最多為32層。●自動(dòng)更新統(tǒng)計(jì)信息:允許使用S
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- java課程設(shè)計(jì)效果圖
- 戶外戲劇課程設(shè)計(jì)
- 石油化工塔吊租賃合同
- 幼兒園設(shè)施租賃合同范本
- 建筑制冷外協(xié)隊(duì)施工合同
- 鐵路網(wǎng)絡(luò)平臺(tái)建設(shè)合同
- 應(yīng)用地理課程設(shè)計(jì)論文
- 2024年父子間股權(quán)分配合同:家族企業(yè)的傳承
- 2024年度土地儲(chǔ)備及開發(fā)建設(shè)合同范本3篇
- 2024年度外架工程勞務(wù)分包與施工風(fēng)險(xiǎn)管理合同3篇
- 《全國較大事故案例》課件
- 2024-2025學(xué)年上學(xué)期天津初中地理七年級(jí)期末模擬卷1
- 病理學(xué)知到智慧樹章節(jié)測(cè)試課后答案2024年秋溫州醫(yī)科大學(xué)
- 2023年湖北交投智能檢測(cè)股份有限公司社會(huì)招聘筆試真題
- 2024企業(yè)所得稅培訓(xùn)
- 眼科考試題含答案
- 共話五千年傳承根與魂主題團(tuán)日活動(dòng)
- 國開汽車學(xué)院《項(xiàng)目管理》形考作業(yè)1-4答案
- 歌唱語音智慧樹知到期末考試答案章節(jié)答案2024年齊魯師范學(xué)院
- 健康膳食解碼智慧樹知到期末考試答案章節(jié)答案2024年佳木斯大學(xué)
- 《中國心力衰竭診斷和治療指南2024》解讀
評(píng)論
0/150
提交評(píng)論