數據庫實驗2掌握DBMS常用工具

NO IMAGE

2016-3-14
實驗目的
1.深入瞭解SQL Server的數據文件與日誌文件;
2.掌握數據字典;
3.瞭解SQL Server的臨時文件;
實驗環境
軟件:OS:Windows7 DBMS:SQL Server 2008 Compiler:SQL Server Management Studio
實驗用時:一次上機
實驗內容
1)瞭解SQL的主要數據文件mdf、次要數據文件ndf和日誌文件ldf。

2)利用數據庫文件創建新的數據庫(兩位同學A、B一起完成),實驗說明如下:
同學A、B分別在創建一個以自己名字命名的數據庫,數據庫中需要有至少一張含有數據的表,查看數據對應的數據文件(.mdf、.ldf等)。利用對方的數據庫文件,同學A和B分別在自己的SQL Server實例(即SSMS)中導入對方所創建的數據庫。

3)觀察並記錄次要數據文件的生成

4)臨時文件
當使用sql語句進行查詢時,查詢的結果是存放在一個後綴名為tmp的一個臨時文件中。當查詢的時候,該文件存放查詢的結果,當關閉數據庫的時候,該臨時文件會自動刪除,所以在我們進行查詢的時候,是感覺不到該文件的存在。本題要求同學觀察臨時文件的創建、寫入和刪除過程。

5)新建數據庫test,並在test數據庫中新建表student(同實驗1-1),通過查詢sys.master_files視圖定位test.mdf、test_log.ldf文件,並手動刪除這兩個文件。重新創建數據庫test,系統提示“test數據庫已存在”。

6)插入2行相同數據,為什麼就出故障了?

實驗要求
1.同學們可以三五人組隊,討論出解決方案後獨立上機完成;
2.記錄實驗過程,並對各活動(包括錯誤活動)作分析說明。

問題解決方案:
1)如何在不關閉SQL Server實例(即SSMS)的情況下,將數據庫的相關文件拷貝給對方?
答:在SSMS選中自己的數據庫,右鍵—任務—分離,在文件中找到mdf和ldf文件,並U盤拷貝到對方電腦上進行恢復數據庫的操作

2) 對於“利用對方完整的數據庫文件在自己的SQL Server實例中導入對方的數據庫”,如何通過SSMS圖形化方式和sql語句方式來實現之?
答:SSMS圖形化方式:在對象資源管理器中的數據庫文件中進行恢復操作,參考實驗1.1,依據完整性備份的特性,進行數據和日誌文件的恢復。

3.創建school數據庫和student表
1)按照實驗要求做相應操作之後(數據文件school.mdf文件設置為固定大小3MB,允許增長的最大值為4MB)輸入第一條SQL語句之後結果如圖
輸入:
declare @i int declare @j int set @i = 1 set @j = 1 while @i <= 20000 begin insert into [school].[dbo].[student] values (@i, 'Sheldon', @j, 'Computer Science', 'Class 2') set @i = @i + 1 set @j = @j + 1 end

顯示報錯

2)第二條語句情況如下:
輸入:
declare @i int declare @j int set @i = 20001 set @j = 5 while @i <= 30000 begin insert into [school].[dbo].[student] values (@i, 'Katherine', @j, 'Information Management', 'Class 3') set @i = @i + 1 set @j = @j + 1 end
一行也插不進去

問題:找臨時文件的時候遇到運行SQL語句之後,關閉SSMS之後,臨時文件目錄沒有變化的情況,這裡可能是因為沒有顯示隱藏文件的問題,顯示之後觀察到了前後變化。

思考:
臨時文件,相當於內存到磁盤的一個緩衝區域,在內存中臨時存儲用戶的輸入輸出,在正式保存之後才將數據移到硬盤上,以節省更改內容的時間。

5.新建數據庫test,建立新表student,查詢sys.master_files視圖定位test.mdf、test_log.ldf文件,並手動刪除這兩個文件

問題:數據表中有兩條完全相同的記錄是否有意義以及使用主鍵的必要性。

思考:數據表中兩條完全相同的記錄是一種冗餘,在同一個表當中是不希望看到的情況,因為這樣會造成大量空間浪費,而且同時我們也無法確定相同記錄的歸屬是否有不同,容易造成出錯。 由於主鍵的唯一性,我們可以很好的通過主鍵作為索引,來查找不同用戶或者情況對應的信息

相關文章

OpenMP版本矩陣相乘

加密文件系統eCryptfs安裝與使用

編寫python後臺程序

計算機網絡實驗10:靜態路由協議