每個 SQL Server 數(shù)據(jù)庫至少具有兩個操作系統(tǒng)文件:一個數(shù)據(jù)文件和一個日志文件。數(shù)據(jù)文件包含數(shù)據(jù)和對象,例如表、索引、存儲過程和視圖。日志文件包含恢復(fù)數(shù)據(jù)庫中的所有事務(wù)所需的信息。為了便于分配和管理,可以將數(shù)據(jù)文件集合起來,放到文件組中。

SQL Server 數(shù)據(jù)庫具有三種類型的文件,如下表所示:
文件 | 說明 |
---|---|
主要 |
主要數(shù)據(jù)文件包含數(shù)據(jù)庫的啟動信息,并指向數(shù)據(jù)庫中的其他文件。用戶數(shù)據(jù)和對象可存儲在此文件中,也可以存儲在次要數(shù)據(jù)文件中。每個數(shù)據(jù)庫有一個主要數(shù)據(jù)文件。主要數(shù)據(jù)文件的建議文件擴(kuò)展名是 .mdf。 |
次要 |
次要數(shù)據(jù)文件是可選的,由用戶定義并存儲用戶數(shù)據(jù)。通過將每個文件放在不同的磁盤驅(qū)動器上,次要文件可用于將數(shù)據(jù)分散到多個磁盤上。另外,如果數(shù)據(jù)庫超過了單個 Windows 文件的最大大小,可以使用次要數(shù)據(jù)文件,這樣數(shù)據(jù)庫就能繼續(xù)增長。 次要數(shù)據(jù)文件的建議文件擴(kuò)展名是 .ndf。 |
事務(wù)日志 |
事務(wù)日志文件保存用于恢復(fù)數(shù)據(jù)庫的日志信息。每個數(shù)據(jù)庫必須至少有一個日志文件。事務(wù)日志的建議文件擴(kuò)展名是 .ldf。 |
例如,可以創(chuàng)建一個簡單的數(shù)據(jù)庫 Sales,其中包括一個包含所有數(shù)據(jù)和對象的主要文件和一個包含事務(wù)日志信息的日志文件。也可以創(chuàng)建一個更復(fù)雜的數(shù)據(jù)庫 Orders,其中包括一個主要文件和五個次要文件。數(shù)據(jù)庫中的數(shù)據(jù)和對象分散在所有六個文件中,而四個日志文件包含事務(wù)日志信息。
默認(rèn)情況下,數(shù)據(jù)和事務(wù)日志被放在同一個驅(qū)動器上的同一個路徑下。這是為處理單磁盤系統(tǒng)而采用的方法。但是,在生產(chǎn)環(huán)境中,這可能不是最佳的方法。建議將數(shù)據(jù)和日志文件放在不同的磁盤上。

每個數(shù)據(jù)庫有一個主要文件組。此文件組包含主要數(shù)據(jù)文件和未放入其他文件組的所有次要文件??梢詣?chuàng)建用戶定義的文件組,用于將數(shù)據(jù)文件集合起來,以便于管理、數(shù)據(jù)分配和放置。
例如,可以分別在三個磁盤驅(qū)動器上創(chuàng)建三個文件 Data1.ndf、Data2.ndf 和 Data3.ndf,然后將它們分配給文件組 fgroup1。然后,可以明確地在文件組 fgroup1 上創(chuàng)建一個表。對表中數(shù)據(jù)的查詢將分散到三個磁盤上,從而提高了性能。通過使用在 RAID(獨(dú)立磁盤冗余陣列)條帶集上創(chuàng)建的單個文件也能獲得同樣的性能提高。但是,文件和文件組使您能夠輕松地在新磁盤上添加新文件。
下表列出了存儲在文件組中的所有數(shù)據(jù)文件。
文件組 | 說明 |
---|---|
主要 |
包含主要文件的文件組。所有系統(tǒng)表都被分配到主要文件組中。 |
用戶定義 |
用戶首次創(chuàng)建數(shù)據(jù)庫或以后修改數(shù)據(jù)庫時明確創(chuàng)建的任何文件組。 |
默認(rèn)文件組
如果在數(shù)據(jù)庫中創(chuàng)建對象時沒有指定對象所屬的文件組,對象將被分配給默認(rèn)文件組。不管何時,只能將一個文件組指定為默認(rèn)文件組。默認(rèn)文件組中的文件必須足夠大,能夠容納未分配給其他文件組的所有新對象。
PRIMARY 文件組是默認(rèn)文件組,除非使用 ALTER DATABASE 語句進(jìn)行了更改。但系統(tǒng)對象和表仍然分配給 PRIMARY 文件組,而不是新的默認(rèn)文件組。