第一篇:數(shù)據(jù)庫原理實(shí)驗(yàn)報(bào)告
南 京 曉 莊 學(xué) 院
《數(shù)據(jù)庫原理與應(yīng)用》
課程實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)一 SQL Server 2005常用服務(wù)與實(shí)用工具實(shí)驗(yàn)
所在院(系): 數(shù)學(xué)與信息技術(shù)學(xué)院 班級(jí):
學(xué)號(hào):
姓名:
1.實(shí)驗(yàn)?zāi)康?/p>
(1)了解Microsoft 關(guān)系數(shù)據(jù)庫管理系統(tǒng)SQL Server的發(fā)展歷史及其特性。(2)了解SQL Server 2005的主要組件、常用服務(wù)和系統(tǒng)配置。
(3)掌握Microsoft SQL Server Management Studio 圖形環(huán)境的基本操作方法。了解使用“SQL Server 2005 聯(lián)機(jī)從書”獲取幫助信息的方法;了解“查詢編輯器”的使用方法;了解模板的使用方法。
2.實(shí)驗(yàn)要求
(1)收集整理Microsoft關(guān)系數(shù)據(jù)庫管理系統(tǒng)SQL Server的相關(guān)資料,總結(jié)其發(fā)展歷史及SQL Server 2005主要版本類別和主要功能特性。
(2)使用SQL Server配置管理器查看和管理SQL Server 2005服務(wù)。
(3)使用Microsoft SQL Server Management Studio連接數(shù)據(jù)庫;使用SQL Server幫助系統(tǒng)獲得所感興趣的相關(guān)產(chǎn)品主題/技術(shù)文檔。
(4)使用Microsoft SQL Server Management Studio“查詢編輯器”編輯并執(zhí)行Transact-SQL查詢語句。
(5)查看Microsoft SQL Server 2005模板,了解模板的使用方法。(6)按要求完成實(shí)驗(yàn)報(bào)告。
3.實(shí)驗(yàn)步驟、結(jié)果和總結(jié)實(shí)驗(yàn)步驟/結(jié)果
(1)簡要總結(jié)SQL Server系統(tǒng)發(fā)展歷史及SQL Server 2005主要版本類別與主要功能特性。
(2)總結(jié)SQL Server Management Studio的主要操作方法。
(3)總結(jié)查詢編輯器的功能和主要操作方法,并舉例說明。
(4)總結(jié)“模板”的使用方法,并舉例說明。
4.實(shí)驗(yàn)思考:
查詢相關(guān)資料,簡要描述SQL Server 2005的主要服務(wù)。
第二篇:數(shù)據(jù)庫原理實(shí)驗(yàn)報(bào)告
南 京 曉 莊 學(xué) 院
《數(shù)據(jù)庫原理與應(yīng)用》
課程實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)二 數(shù)據(jù)庫的創(chuàng)建、管理、備份及還原實(shí)驗(yàn)
所在院(系): 數(shù)學(xué)與信息技術(shù)學(xué)院 班級(jí):
學(xué)號(hào):
姓名:
1.實(shí)驗(yàn)?zāi)康?/p>
(1)掌握分別使用SQL Server Management Studio圖形界面和Transact-SQL語句創(chuàng)建和修改數(shù)據(jù)庫的基本方法;
(2)學(xué)習(xí)使用SQL Server查詢分析窗口接收Transact-SQL語句和進(jìn)行結(jié)果分析。
(3)了解SQL Server的數(shù)據(jù)庫備份和恢復(fù)機(jī)制,掌握SQL Server中數(shù)據(jù)庫備份與還原的方法。
2.實(shí)驗(yàn)要求
(1)使用SQL Server Management Studio創(chuàng)建“教學(xué)管理”數(shù)據(jù)庫。
(2)使用SQL Server Management Studio修改和刪除“教學(xué)管理”數(shù)據(jù)庫。(3)使用Transact-SQL語句創(chuàng)建“教學(xué)管理”數(shù)據(jù)庫。
(4)使用Transact-SQL語句修改和刪除“教學(xué)管理”數(shù)據(jù)庫。(5)使用SQL Server Management Studio創(chuàng)建“備份設(shè)備”;使用SQL Server Management Studio對(duì)數(shù)據(jù)庫“教學(xué)管理”進(jìn)行備份和還原。(6)SQL Server 2005數(shù)據(jù)庫文件的分離與附加。(7)按要求完成實(shí)驗(yàn)報(bào)告
3.實(shí)驗(yàn)步驟、結(jié)果和總結(jié)實(shí)驗(yàn)步驟/結(jié)果
(1)總結(jié)使用SQL Server Management Studio創(chuàng)建、修改和冊(cè)除“TM”(教學(xué)管理)數(shù)據(jù)庫的過程。
一、使用SQL Server Management Studio創(chuàng)建數(shù)據(jù)庫的步驟如下:
a.在磁盤上新建一個(gè)目錄,如在C:盤中新建“MyDB“目錄
b.在wimdows系統(tǒng)“開始“菜單中,依次選取”程序->Microsoft SQL Server 2005->SQL Management Studio” ,打開SQL Server Management Studio并連接到SQL Server 2005服務(wù)。
c.在“對(duì)象資源管理器“中單擊SQL Server服務(wù)器前面的“+”號(hào)或直接雙擊數(shù)據(jù)庫名稱,展開該服務(wù)器對(duì)象資源樹形結(jié)構(gòu),然后右鍵點(diǎn)擊“數(shù)據(jù)庫”文件夾,在彈出的快捷菜單上選擇“新建數(shù)據(jù)庫”選項(xiàng)
d.在打開的“新建數(shù)據(jù)庫”對(duì)話窗口中輸入數(shù)據(jù)庫名稱“教學(xué)管理”,在該窗口中“數(shù)據(jù)庫文件”設(shè)置部分可以修改數(shù)據(jù)文件和日志文件的文件名、初始大小、保存路徑等。
e.單擊“確定”按鈕,創(chuàng)建“教學(xué)管理”數(shù)據(jù)庫。
二、使用SQL Server Management Studio修改和刪除“教學(xué)管理”數(shù)據(jù)庫
1、使用SQL Server Management Studio圖形界面直接修改“教學(xué)管理”數(shù)據(jù)庫名為“TM”
2、使用SQL Server Management Studio圖形界面查看和修改數(shù)據(jù)庫屬性 a.在快捷菜單中選擇“屬性”項(xiàng)進(jìn)入
使用
3.使用SQL Server Management Studio圖形界面刪除數(shù)據(jù)庫 在第一幅圖中的快捷菜單中選擇“刪除”項(xiàng)
(2)總結(jié)在實(shí)驗(yàn)中為創(chuàng)建、修改和刪除“教學(xué)管理”數(shù)據(jù)庫所編寫的各條T-SQL語句及其完成了什么功能。
1、創(chuàng)建:
CREATE DATABASE 教學(xué)管理 ON PRIMARY(Name=JXGL, FileName='C:MyDBJXGL_Data.mdf', Size=3MB, MaxSize=100MB, filegrowth=1MB)LOG ON(Name=JXGL_Log, FileName='C:MyDBJXGL_Log.ldf', Size=1MB, MaxSize=UNLIMITED, FileGrowth=10%);點(diǎn)擊執(zhí)行
2、使用Transact-SQL語句修改和刪除“教學(xué)管理”數(shù)據(jù)庫
增加數(shù)據(jù)文件。例如,在數(shù)據(jù)庫“教學(xué)管理”中增加數(shù)據(jù)文件JXGL_EXT,需要在數(shù)據(jù)庫查詢編輯器中輸入代碼:
在增加數(shù)據(jù)文件之前,要先獲得修改權(quán)限,即alter database數(shù)據(jù)庫句法,然后再添加數(shù)據(jù)文件。具體參數(shù)也有5項(xiàng),與創(chuàng)建數(shù)據(jù)文件相同,在添加數(shù)據(jù)文件項(xiàng)中,name項(xiàng)是必不可少的。
編寫T—SQL語句,刪除“教學(xué)管理”數(shù)據(jù)庫中的數(shù)據(jù)文件或日志文件,注意不能刪除非空文件。如刪除剛添加到數(shù)據(jù)庫中的數(shù)據(jù)文件“jxgl_ext1” 實(shí)例代碼如下: ALTER DATABASE 教學(xué)管理
REMOVEFILE jxgl_ex1——?jiǎng)h除數(shù)據(jù)庫文件時(shí)應(yīng)指定其邏輯名稱
SQL語句刪除數(shù)據(jù)庫?刪除了數(shù)據(jù)庫“教學(xué)管理” drop database 教學(xué)管理
檢查所輸入SQL語句有無語法錯(cuò),確認(rèn)正確后, 按F5鍵或單擊“執(zhí)行”按鈕,這樣就刪除了數(shù)據(jù)庫“教學(xué)管理”。
(3)總結(jié)使用SQL Server Management Studio備份與還原數(shù)據(jù)庫的幾種方法。
1、創(chuàng)建“備份設(shè)備”
2、對(duì)數(shù)據(jù)庫“TM”進(jìn)行備份
1)打開 SQL Server Management Studio,右擊需要備份的數(shù)據(jù)庫,從彈出的快捷菜單中依次選擇【任務(wù)】--【備份】命令,打開【備份數(shù)據(jù)庫】對(duì)話框。如下圖所示:
(2)在【備份數(shù)據(jù)庫】對(duì)話框的【常規(guī)】頁面中根據(jù)需要選擇需要備份的【數(shù)據(jù)庫】,在本示例選擇備份數(shù)據(jù)庫.接下來還可以選擇【備份類型】、備份集的名稱等相關(guān)參數(shù)。默認(rèn)情況下,備份操作會(huì)所數(shù)據(jù)庫中的數(shù)據(jù)備份到 SQL SERVER 數(shù)據(jù)庫的默認(rèn)工作目錄
(3)切換【備份數(shù)據(jù)庫】對(duì)話框中的【選項(xiàng)】頁面。在此頁面中,可以根據(jù)需要進(jìn)行相應(yīng)的設(shè)置。例如,可以根據(jù)需要將現(xiàn)有數(shù)據(jù)備分到現(xiàn)有的備份集中,也可使用數(shù)據(jù)庫中的當(dāng)前數(shù)據(jù)覆蓋現(xiàn)有的備份集。除此之外。還可以設(shè)置備份操作的可靠性選項(xiàng)。
單擊【確定】按鈕,即可執(zhí)行備份操作。一旦備份操作結(jié)束。SQL SERVER 數(shù)據(jù)庫系統(tǒng)將彈出名為 Microsoft SQL Server Management Studio 的對(duì)話框,提示備份已成功完成。
3、使用“TM”數(shù)據(jù)庫完整備份還原數(shù)據(jù)庫到備份完成時(shí)點(diǎn)的數(shù)據(jù)庫狀態(tài) 通過 SQL Server Management Studio 還原數(shù)據(jù)庫
使用 SQL Server Management Studio 進(jìn)行數(shù)據(jù)還原操作的步驟如下所示:
(1)右擊【數(shù)據(jù)庫】節(jié)點(diǎn),從彈出的快捷菜單中選擇【還原數(shù)據(jù)庫】命令,打開【還原數(shù)據(jù)庫】對(duì)話框,如下圖所示:
在[還原數(shù)據(jù)庫]對(duì)話框中的[常規(guī)]頁面中,選擇[目標(biāo)]下拉列框中的[源數(shù)據(jù)庫]選項(xiàng)。
[選擇用于還原的備份集]列表框中將顯示用于還原TM數(shù)據(jù)庫的可用備份集,備份集,且[目標(biāo)數(shù)據(jù)庫]將會(huì)被同時(shí)設(shè)置為TM
在“還原數(shù)據(jù)庫”的窗口中選擇“選項(xiàng)”頁,在“還原選項(xiàng)”選項(xiàng)區(qū)域中選擇“覆蓋現(xiàn)有數(shù)據(jù)庫”復(fù)選框,單擊確定。還原操作完成后,打開“TM”數(shù)據(jù)庫,可以看到TM數(shù)據(jù)庫已進(jìn)行還原
4.實(shí)驗(yàn)思考:
①SQL Server 2005物理數(shù)據(jù)庫包含了哪能幾種類型的文件以及它們的作用? SQL Server2005數(shù)據(jù)庫具有三種類型的文件:
主數(shù)據(jù)文件
主數(shù)據(jù)文件是數(shù)據(jù)庫的起點(diǎn),指向數(shù)據(jù)庫中的其他文件。每個(gè)數(shù)據(jù)庫都有一個(gè)主數(shù)據(jù)文件。主數(shù)據(jù)文件的推薦文件擴(kuò)展名是.mdf。它將數(shù)據(jù)存儲(chǔ)在表和索引中,包含數(shù)據(jù)庫的啟動(dòng)信息,還包括一些系統(tǒng)表,這些表記載數(shù)據(jù)庫對(duì)象及其他文件的位置信息。
次要數(shù)據(jù)文件
除主數(shù)據(jù)文件之外的所有其他數(shù)據(jù)文件都是次要數(shù)據(jù)文件。某些數(shù)據(jù)庫可能不含有任何次要數(shù)據(jù)文件。次要數(shù)據(jù)文件的推薦文件擴(kuò)展名是.ndf。
日志文件
SQL Server具有事物功能,日志文件包含著用于恢復(fù)數(shù)據(jù)庫的所有日志信息。每個(gè)數(shù)據(jù)庫必須至少有一個(gè)日志文件,當(dāng)然也可以有多個(gè),建立數(shù)據(jù)庫時(shí),SQL Server會(huì)自動(dòng)建立數(shù)據(jù)庫的日志文件。日志文件的推薦文件擴(kuò)展名是.ldf。②數(shù)據(jù)庫備份與轉(zhuǎn)儲(chǔ)包含那些原理?
備份(backup)實(shí)際就是數(shù)據(jù)的副本,備份的目的是為了防止不可預(yù)料的數(shù)據(jù)丟 失和應(yīng)用錯(cuò)誤。
轉(zhuǎn)儲(chǔ)(restore)是指當(dāng)數(shù)據(jù)文件或控制文件出現(xiàn)損壞時(shí),將已備份的副本文件還原到原數(shù)據(jù)庫的過程
數(shù)據(jù)庫轉(zhuǎn)存實(shí)現(xiàn)熱備份恢復(fù)功能。通過修改初始化文件里的路徑,實(shí)現(xiàn)轉(zhuǎn)存。啟 動(dòng)到MOUNT狀態(tài)下,將所有數(shù)據(jù)文件和日志文件通過ALTER DATABASE RENAME FILE '原始路徑/名稱' TO '當(dāng)前路徑/名稱';然后將數(shù)據(jù)庫打開,重建TEMP tablespace即可。數(shù)據(jù)轉(zhuǎn)儲(chǔ)是數(shù)據(jù)庫恢復(fù)中采用的基本技術(shù)。
所謂轉(zhuǎn)儲(chǔ)即dba定期地將數(shù)據(jù)庫復(fù)制到磁帶或另一個(gè)磁盤上保存起來的過程。當(dāng)數(shù)據(jù)庫遭到破壞后可以將后備副本重新裝入,將數(shù)據(jù)庫恢復(fù)到轉(zhuǎn)儲(chǔ)時(shí)的狀態(tài)。靜態(tài)轉(zhuǎn)儲(chǔ):在系統(tǒng)中無運(yùn)行事務(wù)時(shí)進(jìn)行的轉(zhuǎn)儲(chǔ)操作。靜態(tài)轉(zhuǎn)儲(chǔ)簡單,但必須等待 正運(yùn)行的用戶事務(wù)結(jié)束才能進(jìn)行。同樣,新的事務(wù)必須等待轉(zhuǎn)儲(chǔ)結(jié)束才能執(zhí)行。顯然,這會(huì)降低數(shù)據(jù)庫的可用性。動(dòng)態(tài)轉(zhuǎn)儲(chǔ):指轉(zhuǎn)儲(chǔ)期間允許對(duì)數(shù)據(jù)庫進(jìn)行存取或修改。動(dòng)態(tài)轉(zhuǎn)儲(chǔ)可克服靜態(tài) 轉(zhuǎn)儲(chǔ)的缺點(diǎn),它不用等待正在運(yùn)行的用戶事務(wù)結(jié)束,也不會(huì)影響新事務(wù)的運(yùn)行。但是,轉(zhuǎn)儲(chǔ)結(jié)束時(shí)后援副本上的數(shù)據(jù)并不能保證正確有效。因?yàn)檗D(zhuǎn)儲(chǔ)期間運(yùn)行的 事務(wù)可能修改了某些數(shù)據(jù),使得后援副本上的數(shù)據(jù)不是數(shù)據(jù)庫的一致版本。為此,必須把轉(zhuǎn)儲(chǔ)期間各事務(wù)對(duì)數(shù)據(jù)庫的修改活動(dòng)登記下來,建立日志文件(log file)。這樣,后援副本加上日志文件就能得到數(shù)據(jù)庫某一時(shí)刻的正確狀態(tài)。轉(zhuǎn)儲(chǔ)還可以分為海量轉(zhuǎn)儲(chǔ)和增量轉(zhuǎn)儲(chǔ)兩種方式。海量轉(zhuǎn)儲(chǔ)是指每次轉(zhuǎn)儲(chǔ)全部數(shù)據(jù)庫。
增量轉(zhuǎn)儲(chǔ)則指每次只轉(zhuǎn)儲(chǔ)上一次轉(zhuǎn)儲(chǔ)后更新過的數(shù)據(jù)。
從恢復(fù)角度看,使用海量轉(zhuǎn)儲(chǔ)得到的后備副本進(jìn)行恢復(fù)一般說來更簡單些。但如 果數(shù)據(jù)庫很大,事務(wù)處理又十分頻繁,則增量轉(zhuǎn)儲(chǔ)方式更實(shí)用更有效。
③如果數(shù)據(jù)或日志文件非空不能刪除,查找SQL Server中縮小文件大小的方法。
在SQL Server中,所有對(duì)數(shù)據(jù)庫執(zhí)行的更新操作都會(huì)記錄在數(shù)據(jù)庫的事務(wù)日志文件中,除非將數(shù)據(jù)庫設(shè)為可自動(dòng)收縮的或手動(dòng)的對(duì)數(shù)據(jù)庫進(jìn)行了收縮,否則事務(wù)日志文件將一直增長,直到達(dá)到事先設(shè)定的日志文件增長上限或用盡所有可用的磁盤空間。如果當(dāng)前的數(shù)據(jù)庫文件或日志文件過大,可以使用以下兩個(gè)命令對(duì)其進(jìn)行收縮: DBCC SHRINKDATABASE:收縮指定數(shù)據(jù)庫的所有數(shù)據(jù)和日志文件的大小 DBCC SHRINKFILE:收縮數(shù)據(jù)庫的某個(gè)指定數(shù)據(jù)或日志文件的大小
這兩個(gè)命令可以釋放數(shù)據(jù)庫中的空閑空間,并將數(shù)據(jù)庫或指定的數(shù)據(jù)庫文件收縮到指定的大小,但收縮后的數(shù)據(jù)文件或日志文件的大小不會(huì)小于文件中現(xiàn)存的有效數(shù)據(jù)所占空間的大小。在使用以上命令收縮日志文件的時(shí)候需要注意,已寫入數(shù)據(jù)庫但未被截?cái)嗟氖聞?wù)日志記錄是 不會(huì)被收縮的,因?yàn)殡m然這部分日志記錄的信息已經(jīng)寫入數(shù)據(jù)庫文件,但在使用事務(wù)日志備份進(jìn)行數(shù)據(jù)庫還 原的時(shí)候,還將用到其中的信息。
對(duì)于使用簡單恢復(fù)模型的數(shù)據(jù)庫,事務(wù)日志會(huì)在每次處理檢查點(diǎn)(CheckPoint)時(shí)自動(dòng)被截 斷。
對(duì)于使用完全恢復(fù)模型或大容量日志記錄恢復(fù)模型的數(shù)據(jù)庫,事務(wù)日志只有在執(zhí)行日志備份(BACKUP LOG)時(shí)才會(huì)被截?cái)?,這時(shí)事務(wù)日志中記錄的信息被寫入事務(wù)日志備份文件,而它們所占用的這部分空間被標(biāo)記為可用(即被截?cái)啵?/p>
截?cái)嗍聞?wù)日志并不會(huì)使日志文件變小,但可以將其中的部分空間釋放供以后寫入新的日志記錄使用。若要減少日志文件的物理大小,則要使用上面提到的
在執(zhí)行BACKUP LOG語句的時(shí)候,還可以使用WITH NO_LOG(或WITH TRUNCATE_ONLY,含 義相同)參數(shù),這時(shí)并不真正備份事務(wù)日志,而只是截?cái)嗍聞?wù)日志中的非活動(dòng)部分
(這和普通的BACKUP LOG語句作用相同)。這適合于剩余磁盤空間不夠進(jìn)行事務(wù)日志備份或不打算保 留事務(wù)日志中的非活動(dòng)部分用于數(shù)據(jù)庫恢復(fù)的情況。避免事務(wù)日志文件增長過快以致用盡所有磁盤空間的現(xiàn)象發(fā)生
一種辦法是將數(shù)據(jù)庫設(shè)為使用簡單恢復(fù)模型,這樣可以使SQL Server周期性的自動(dòng)截?cái)嗍聞?wù)日志的
非活動(dòng)部分,并回收其占用的空間供以后寫入事務(wù)日志記錄使用。但這將使數(shù)據(jù)庫無法利用事務(wù)日志備份還原到即時(shí)點(diǎn),降低了數(shù)據(jù)庫的可靠性,因此一般不應(yīng)用于生產(chǎn)型數(shù)據(jù)庫。對(duì)于生產(chǎn)型數(shù)據(jù)庫,推薦的做法是使用完全恢復(fù)模型,并定期進(jìn)行數(shù)據(jù)庫的完全備份和事務(wù)日志備份。例 如每周執(zhí)行一次完全備份,每天執(zhí)行一次事務(wù)日志備份,這可以通過SQL Server企業(yè)管理器中的數(shù)據(jù)庫 維護(hù)計(jì)劃向?qū)Ш芊奖愕膶?shí)現(xiàn)(一般可以設(shè)為在每天夜里業(yè)務(wù)不繁忙的某個(gè)時(shí)刻自動(dòng)執(zhí)行備份)。
通過定期執(zhí)行數(shù)據(jù)庫的事務(wù)日志備份,可以避免日志文件的迅速增大,而使其保持一個(gè)比較穩(wěn)定的大小。
雖然數(shù)據(jù)庫備份文件也會(huì)占用很多磁盤空間,但隨時(shí)可以將這些文件移到其他磁盤上或在不需要它們的時(shí)候?qū)⑵鋭h除,而且可以在出現(xiàn)故障或誤操作的時(shí)候方便的進(jìn)行數(shù)據(jù)庫的還原。
由于數(shù)據(jù)文件的大小是隨數(shù)據(jù)庫中數(shù)據(jù)量的增長而增長的,數(shù)據(jù)庫中已刪除的數(shù)據(jù)所占的空間可以供新插 入的數(shù)據(jù)使用;而在定期執(zhí)行了事務(wù)日志的備份后,我們可以將日志文件的大小控制在一個(gè)比較合理的范 圍。因此,一般不需要對(duì)數(shù)據(jù)庫進(jìn)行收縮,也不推薦將數(shù)據(jù)庫設(shè)為自動(dòng)收縮模式。
減小事務(wù)日志文件大小的
首先在該數(shù)據(jù)庫中執(zhí)行CHECKPOINT命令,然后將該數(shù)據(jù)庫分離(Detach),再將與其對(duì)應(yīng)的數(shù)據(jù)庫日志 文件(.ldf文件)改名或刪除或移動(dòng)到其他目錄下,然后執(zhí)行sp_attach_single_file_db存儲(chǔ)過程或在企業(yè)管 理器中重新將其附加(Attach)。由于找不到原來的日志文件,SQL Server將自動(dòng)為該數(shù)據(jù)庫建立一個(gè)大 小只有504K的日志文件。但這種方法必須暫時(shí)將數(shù)據(jù)庫脫機(jī),因此一般不適宜在生產(chǎn)環(huán)境中使用。
1、建議首先備份數(shù)據(jù)庫(但不是必需的):
BACKUP DATABASE database_name TO backup_device
2、備份事務(wù)日志:
BACKUP LOG database_name TO backup_device 如果不需要當(dāng)前事務(wù)日志中的記錄進(jìn)行數(shù)據(jù)庫還原或沒有足夠的空間進(jìn)行事務(wù)日志備份的 的話,也可僅執(zhí)行以下命令截?cái)嗍聞?wù)日志: BACKUP LOG database_name WITH NO_LOG
3、收縮事務(wù)日志文件:
DBCC SHRINKFILE(log_file_name)其中l(wèi)og_file_name是事務(wù)日志文件的邏輯名稱,可以在企業(yè)管理器中數(shù)據(jù)庫屬性的“事務(wù) 日志”頁中看到(如Northwind數(shù)據(jù)庫的默認(rèn)事務(wù)日志文件邏輯名稱為Northwind_log)。
4、如果日志文件仍然較大的話,可以嘗試重復(fù)執(zhí)行一次 BACKUP LOG WITH NO_LOG和DBCC SHRINKFILE命令。
5、如果這時(shí)仍沒有明顯的效果,請(qǐng)執(zhí)行DBCC OPENTRAN(database_name)檢查當(dāng)前數(shù)據(jù)庫中是否存在長時(shí)間未提交的活動(dòng)事務(wù)。有必要的話,可以斷開這些連接并重新嘗試截?cái)嗍聞?wù)日志和收縮日志文件。
6、事務(wù)日志文件收縮完成后,建議立即執(zhí)行一次數(shù)據(jù)庫的完全備份并根據(jù)實(shí)際需要制定適當(dāng)?shù)臄?shù)據(jù)庫備份計(jì)劃。④思考后續(xù)實(shí)驗(yàn)過程中,你計(jì)劃采用哪種方法備份自己的數(shù)據(jù)庫實(shí)驗(yàn)操作結(jié)果?并說明為什么采用該方法。
答:數(shù)據(jù)庫備份有四種類型
? 完全備份 ? 事務(wù)日志備份 ? 差異備份
? 文件備份 采用完全備份
完全備份就是指對(duì)某一個(gè)時(shí)間點(diǎn)上的所有數(shù)據(jù)(包含用戶表、系統(tǒng)表、索引、視圖和存儲(chǔ)過程等所有數(shù)據(jù)庫對(duì)象)或應(yīng)用進(jìn)行的一個(gè)完全拷貝。
實(shí)際應(yīng)用中就是用一盤磁帶對(duì)整個(gè)系統(tǒng)進(jìn)行完全備份,包括其中的系統(tǒng)和所有數(shù)據(jù)。
這種備份方式最大的好處就是只要用一盤磁帶,就可以恢復(fù)丟失的數(shù)據(jù)。因此大大加快了系統(tǒng)或數(shù)據(jù)的恢復(fù)時(shí)間。
第三篇:數(shù)據(jù)庫原理上機(jī)實(shí)驗(yàn)報(bào)告
廣西科技大學(xué)理學(xué)院《數(shù)據(jù)庫原理》上機(jī)實(shí)驗(yàn)報(bào)告
實(shí)驗(yàn)序號(hào)與實(shí)驗(yàn)名稱:實(shí)驗(yàn)九:用戶管理和權(quán)限管理
姓名:薛亞妮學(xué)號(hào):201000901045
專業(yè)班級(jí):信計(jì)101實(shí)驗(yàn)日期:2012年 12月15日
一、實(shí)驗(yàn)?zāi)康模豪斫夂腕w會(huì)數(shù)據(jù)庫安全性的內(nèi)容,加強(qiáng)對(duì)DBMS功能的認(rèn)識(shí)。
二、實(shí)驗(yàn)內(nèi)容:數(shù)據(jù)庫的用戶管理和操作權(quán)限管理。
三、程序源代碼:
1、對(duì)象操作授權(quán)
sp_grantdbaccess 201000901035
grant select on 產(chǎn)品1045 to 201000901035
grant create view,create table to 201000901035
grant execute on sp_getgoods to 2010009010352、在授權(quán)過程中體會(huì)GRANT命令中WITH GRANT OPTION 短語的作用。
--用戶201000901045--
grant select on產(chǎn)品1045 to [201000901035] WITH GRANT OPTION
--用戶201000901035--
grant select on 產(chǎn)品1045 to [201000901035]
As [201000901035]
3、分情況收回授權(quán),并體會(huì)REVOKE命令中GRANT OPTION FOR和CASCADE
--短語的作用
revoke select on 產(chǎn)品1045 from 201000901035
revoke create view,create table to 201000901035
revoke grant option for select on 產(chǎn)品1045 from 201000901035 CASCADE
四、實(shí)驗(yàn)結(jié)果分析與總結(jié)
安全性控制是數(shù)據(jù)庫管理員(或系統(tǒng)管理員)的一個(gè)重要任務(wù),他要充分利用數(shù)據(jù)庫管理系統(tǒng)的安全功能,保證數(shù)據(jù)庫和數(shù)據(jù)庫中數(shù)據(jù)的安全。
授權(quán)登錄用戶為當(dāng)前數(shù)據(jù)庫用戶 :
sp_grantdbaccess [@loginame =] login
[,[@name_in_db =] name_in_db]
使一個(gè)登錄用戶成為數(shù)據(jù)庫用戶只是授權(quán)的第一步,數(shù)據(jù)庫管理員可以進(jìn)一步為能夠連接到自己所管理數(shù)據(jù)庫的用戶在該數(shù)據(jù)庫上授予所需要的權(quán)限.收回權(quán)限:收回語句授權(quán) :REVOKE { ALL | statement_list } FROM name_list
收回對(duì)象授權(quán) :
REVOKE [GRANT OPTION FOR]
{ ALL [ PRIVILEGES ] | permission_list }
{[(column_list)] ON { table | view } | ON { table | view } [(column_list)]
| ON stored_procedure| ON user_defined_function }
FROM name_list
[ CASCADE ]
[ AS { group | role } ]
禁止語句權(quán)限: DENY { ALL | statement_list } TO name_list
禁止對(duì)象權(quán)限: DENY { ALL [ PRIVILEGES ] | permission_list }
{[(column_list)] ON { table | view } | ON { table | view } [(column_list)]
| ON stored_procedure| ON user_defined_function }
TO name_list
[CASCADE]
第四篇:數(shù)據(jù)庫原理及技術(shù)實(shí)驗(yàn)報(bào)告2
《數(shù)據(jù)庫原理及技術(shù)》實(shí)驗(yàn)報(bào)告
姓名: 莫鴻斌
學(xué)號(hào):201601030137
班級(jí):2016級(jí)計(jì)算機(jī)科學(xué)與技術(shù)
實(shí)驗(yàn)日期: 2018-3-16
一、實(shí)驗(yàn)項(xiàng)目
了解SQL Server2012常用組件
二、實(shí)驗(yàn)?zāi)康?/p>
1.掌握SQL Server Management Studio的運(yùn)用; 2.掌握SQL Server 2012常用組件;
3.如何使用SQL Server Management Studio創(chuàng)建數(shù)據(jù)庫及表。
三、實(shí)驗(yàn)內(nèi)容
1.了解SQL Server2012常用組件;
2.使用SQL Server management studio創(chuàng)建數(shù)據(jù)庫factory,要求將數(shù)據(jù)庫文件factory_data.MDF存放在E:data下面,其文件初始大小5MB,自動(dòng)按5MB增長,將事務(wù)日志文件factory_log.LDF存放在E:data目錄下,其文件大小按1MB自動(dòng)增長。3.在數(shù)據(jù)庫factory下創(chuàng)建如下表: 職工表(職工號(hào)(int),姓名(char(10)),性別(char(2)),出生日期(datetime),黨員否(bit),參加工作時(shí)間(datetime),部門號(hào)(int)),其中職工號(hào)作為主鍵。部門表(部門號(hào)(int),部門名(char(10)),其中部門號(hào)作為主鍵。工資表(職工號(hào)(int),發(fā)放年份(int),發(fā)放月份(int),工資(decimal(6,1))),其中職工號(hào)、年份、月份作為主鍵。
4.建立第三步創(chuàng)建的表之間的參照完整性規(guī)則。5.在上述表中輸入數(shù)據(jù),每個(gè)表至少10條記錄。6.備份數(shù)據(jù)庫,考走以備下次試驗(yàn)使用。
四、實(shí)驗(yàn)環(huán)境
安裝有SQL Server2008的PC一臺(tái)。
五、實(shí)驗(yàn)步驟及結(jié)果
1.了解SQL Server2012常用組件;
2.使用SQL Server management studio創(chuàng)建數(shù)據(jù)庫factory;要求將數(shù)據(jù)庫文件factory_data.MDF存放在E:data下面,其文件初始大小5MB,自動(dòng)按5MB增長,將事務(wù)日志文件factory_log.LDF存放在E:data目錄下,其文件大小按1MB自動(dòng)增長。
3.在數(shù)據(jù)庫factory下創(chuàng)建如下表: 職工表(職工號(hào)(int),姓名(char(10)),性別(char(2)),出生日期(datetime),黨員否(bit),參加工作時(shí)間(datetime),部門號(hào)(int)),其中職工號(hào)作為主鍵。部門表(部門號(hào)(int),部門名(char(10)),其中部門號(hào)作為主鍵。工資表(職工號(hào)(int),發(fā)放年份(int),發(fā)放月份(int),工資(decimal(6,1))),其中職工號(hào)、年份、月份作為主鍵。
4.建立第三步創(chuàng)建的表之間的參照完整性規(guī)則。
5.在上述表中輸入數(shù)據(jù),每個(gè)表至少10條記錄。
6.備份數(shù)據(jù)庫,考走以備下次試驗(yàn)使用。
六、結(jié)論及思考
第五篇:數(shù)據(jù)庫原理及應(yīng)用實(shí)驗(yàn)報(bào)告 6
實(shí)驗(yàn)成績
《數(shù)據(jù)庫系統(tǒng)原理及應(yīng)用》
實(shí) 驗(yàn) 報(bào) 告 六
專業(yè)班級(jí):
計(jì)算機(jī)科學(xué)與技術(shù)
學(xué)
號(hào):
201116910233
姓
名:
范曉曈
指導(dǎo)教師:
蘇小玲
2013年
月
日 實(shí)驗(yàn)六名稱:
SQL Server存儲(chǔ)過程
一、實(shí)驗(yàn)內(nèi)容及要求
1.使用輸入?yún)?shù)存儲(chǔ)過程的創(chuàng)建和執(zhí)行
任務(wù)1:查詢學(xué)生的學(xué)號(hào)、姓名、選修的課程號(hào)、課程名、課程學(xué)分,將學(xué)生所在系作為輸入?yún)?shù),默認(rèn)值為“軟件工程系”。執(zhí)行此存儲(chǔ)過程,并分別指定一些不同的輸入?yún)?shù)值,查看執(zhí)行過程。
2.修改視圖
任務(wù)1:查詢指定系的男生人數(shù),其中系為輸入?yún)?shù),人數(shù)為輸出參數(shù)。執(zhí)行此存儲(chǔ)過程,并分別指定一些不同的輸入?yún)?shù)值,查看執(zhí)行過程。
任務(wù)2:查詢指定學(xué)生(姓名)在指定學(xué)期的選課門數(shù)和考試平均成績,要求姓名和學(xué)期為輸入?yún)?shù),選課門數(shù)和平均成績用輸出參數(shù)返回,平均成績保留到小數(shù)點(diǎn)后兩位。
3.使用返回代碼存儲(chǔ)過程的創(chuàng)建和執(zhí)行
任務(wù)1:查詢指定學(xué)生(學(xué)號(hào))的選課門數(shù)。如果指定學(xué)生不存在,則返回代碼1;如果指定的學(xué)生沒有選課,則返回代碼2;如果指定學(xué)生有選課,則返回代碼0,并用輸出參數(shù)返回該學(xué)生的選課門數(shù)。
4.使用實(shí)現(xiàn)對(duì)數(shù)據(jù)庫修改、刪除和插入操作的存儲(chǔ)過程創(chuàng)建和執(zhí)行
任務(wù)1:刪除指定學(xué)生(學(xué)號(hào))的修課,如果指定的學(xué)生不存在,則顯示提示信息“沒有指定學(xué)生”;如果指定的學(xué)生沒有選課,則顯示提示信息“該學(xué)生沒有選課”。學(xué)號(hào)為輸入?yún)?shù)。
任務(wù)2:修改指定課程的開課學(xué)期。輸入?yún)?shù)為:課程號(hào)和修改后的開課學(xué)期。
任務(wù)3:在course表中插入一行數(shù)據(jù),課程號(hào)、課程名、學(xué)分、開課學(xué)期均為輸入?yún)?shù)。課程號(hào)為C100、課程名為操作系統(tǒng)、學(xué)分為
4、開課學(xué)期為4,開課學(xué)期的默認(rèn)值為3。如果學(xué)分大于10或者小于1,則不插入數(shù)據(jù),并顯示提示信息“學(xué)分為1~10之間的整數(shù)”。
二、實(shí)驗(yàn)?zāi)康?/p>
掌握存儲(chǔ)過程的創(chuàng)建和執(zhí)行;掌握存儲(chǔ)過程中輸入?yún)?shù)和輸出參數(shù)的設(shè)置和使用方法。
三、實(shí)驗(yàn)步驟及運(yùn)行結(jié)果
1.使用輸入?yún)?shù)存儲(chǔ)過程的創(chuàng)建和執(zhí)行
任務(wù)1:查詢學(xué)生的學(xué)號(hào)、姓名、選修的課程號(hào)、課程名、課程學(xué)分,將學(xué)生所在系作為輸入?yún)?shù),默認(rèn)值為“軟件工程系”。執(zhí)行此存儲(chǔ)過程,并分別指定一些不同的輸入?yún)?shù)值,查看執(zhí)行過程。
create procedure p_studentdept @dept char(20)='計(jì)科' as select s.sno,s.sname,c.cno,cname,s.credit from student s inner join sc on s.sno=sc.sno inner join Course c
on c.cno=sc.cno where sdept=@dept
2.修改視圖
任務(wù)1:查詢指定系的男生人數(shù),其中系為輸入?yún)?shù),人數(shù)為輸出參數(shù)。執(zhí)行此存儲(chǔ)過程,并分別指定一些不同的輸入?yún)?shù)值,查看執(zhí)行過程。
create procedure p_numberofBoy @dept char(20),@boynumber int output as select @boynumber=COUNT(*)from Student
where Ssex='男' and sdept=@dept
declare @boynumber int exec p_numberofBoy '計(jì)科' ,@boynumber output print @boynumber
declare @boynumber int exec p_numberofBoy '電信' ,@boynumber output print @boynumber
任務(wù)2:查詢指定學(xué)生(姓名)在指定學(xué)期的選課門數(shù)和考試平均成績,要求姓名和學(xué)期為輸入?yún)?shù),選課門數(shù)和平均成績用輸出參數(shù)返回,平均成績保留到小數(shù)點(diǎn)后兩位。
create proc p_studentInfo @name char(20),@semester int,@count_xk int output,@avg_sscore float output as select @count_xk=count(c.cno),@avg_sscore=Avg(sscore)from Student s join SC
on s.Sno =SC.Sno join Course c
on SC.Cno =c.Cno where s.Sname=@name and c.Semester =@semester
declare @count_xk int,@avg_grade float,@avg_sscore decimal exec p_studentInfo '范曉曈',2,@count_xk output,@avg_sscore output select @count_xk as 選課門數(shù),@avg_sscore as平均成績
3.使用返回代碼存儲(chǔ)過程的創(chuàng)建和執(zhí)行
任務(wù)1:查詢指定學(xué)生(學(xué)號(hào))的選課門數(shù)。如果指定學(xué)生不存在,則返回代碼1;如果指定的學(xué)生沒有選課,則返回代碼2;如果指定學(xué)生有選課,則返回代碼0,并用輸出參數(shù)返回該學(xué)生的選課門數(shù)。
create proc p_countxk @number decimal,@xk_number decimal output as if not exists(select Sno from Student where Sno=@number)return 1 else if not exists(select Sno from SC where Sno=@number)return 2 else begin select @xk_number=COUNT(sc.cno)from SC where Sno =@number return 0 End
declare @xk_number1 int exec p_countxk 201116910233,@xk_number1 output print @xk_number1
4.使用實(shí)現(xiàn)對(duì)數(shù)據(jù)庫修改、刪除和插入操作的存儲(chǔ)過程創(chuàng)建和執(zhí)行
任務(wù)1:刪除指定學(xué)生(學(xué)號(hào))的修課,如果指定的學(xué)生不存在,則顯示提示信息“沒有指定學(xué)生”;如果指定的學(xué)生沒有選課,則顯示提示信息“該學(xué)生沒有選課”。學(xué)號(hào)為輸入?yún)?shù)。
create proc p_delete @id numeric as if not exists(select * from Student where Sno=@id)return 1 if not exists(select * from SC where SC.Sno=@id)return 2 else return 0
declare @id numeric,@ret int exec @ret=p_delete 201116910232 if @ret =1 print '沒有該學(xué)生!' if @ret =2 print '該學(xué)生沒有選課!' if @ret =0 delete from SC where Sno=201116910232
declare @id numeric,@ret int exec @ret=p_delete 201116910222 if @ret =1 print '沒有該學(xué)生!' if @ret =2 print '該學(xué)生沒有選課!' if @ret =0 delete from SC where Sno=201116910222
declare @id numeric,@ret int exec @ret=p_delete 201116910211 if @ret =1 print '沒有該學(xué)生!' if @ret =2 print '該學(xué)生沒有選課!' if @ret =0 delete from SC where Sno=201116910211
任務(wù)2:修改指定課程的開課學(xué)期。輸入?yún)?shù)為:課程號(hào)和修改后的開課學(xué)期。
create proc p_alter @kc char(20),@xq int as update course set semester=@xq where cno=@kc declare @kc char(20),@xq int exec p_alter 'C003',3
修改前:
修改后:
任務(wù)3:在course表中插入一行數(shù)據(jù),課程號(hào)、課程名、學(xué)分、開課學(xué)期均為輸入?yún)?shù)。課程號(hào)為C100、課程名為操作系統(tǒng)、學(xué)分為
4、開課學(xué)期為4,開課學(xué)期的默認(rèn)值為3。如果學(xué)分大于10或者小于1,則不插入數(shù)據(jù),并顯示提示信息“學(xué)分為1~10之間的整數(shù)”。
create proc p_insert @kc_id varchar(20),@kc_name varchar(20),@xf decimal , @xq int as if(@xf >= 1 and @xf <=10)begin insert course(cno,cname,credit,semester)values(@kc_id,@kc_name,@xf,@xq)
end else print
'學(xué)分要在1~10之間!!'
declare @kc_id varchar(20),@kc_name varchar(20),@xf decimal,@xq int exec p_insert 'C006','操作系統(tǒng)',3.0,6
declare @kc_id char(20),@kc_name char(20),@xf decimal,@xq int exec p_insert 'C007','毛概',11.0,4
四、實(shí)驗(yàn)心得
在這次實(shí)驗(yàn)中,我明白了,存儲(chǔ)過程只在創(chuàng)造時(shí)進(jìn)行編譯即可,以后每次執(zhí)行存儲(chǔ)過程都不需再重新編譯,而我們通常使用的SQL語句每執(zhí)行一次就編譯一次,所以使用存儲(chǔ)過程可提高數(shù)據(jù)庫執(zhí)行速度,存儲(chǔ)過程一般用來完成數(shù)據(jù)查詢和數(shù)據(jù)處理操作。
無論什么時(shí)候執(zhí)行存儲(chǔ)過程,總要返回一個(gè)結(jié)果碼,用以指示存儲(chǔ)過程的執(zhí)行狀態(tài)。如果存儲(chǔ)過程執(zhí)行成功,返回的結(jié)果碼是0;如果存儲(chǔ)過程執(zhí)行失敗,返回的結(jié)果碼一般是一個(gè)負(fù)數(shù),它和失敗的類型有關(guān)。我們?cè)趧?chuàng)建存儲(chǔ)過程時(shí),也可以定義自己的狀態(tài)碼和錯(cuò)誤信息。
通過這次實(shí)驗(yàn),讓我深刻了解了數(shù)據(jù)庫的功能,覺得它功能非常的強(qiáng)大,掌握存儲(chǔ)過程的創(chuàng)建與執(zhí)行,熟悉存儲(chǔ)過程與批處理的區(qū)別。掌握帶參數(shù)的存儲(chǔ)過程的創(chuàng)建與執(zhí)行。