您好,登錄后才能下訂單哦!
SQLServer 將數(shù)據(jù)庫映射為一組操作系統(tǒng)文件。
數(shù)據(jù)和日志信息絕不會(huì)混合存放在同一個(gè)文件中,而且一個(gè)文件只能由一個(gè)數(shù)據(jù)庫使用。文件組是命名的文件集合,用于幫主數(shù)據(jù)布局和管理任務(wù),譬如備份和還原操作。
數(shù)據(jù)庫文件
SQLServer數(shù)據(jù)庫具有三種類型的文件:.mdf,.ldf,ndf(主數(shù)據(jù)文件、日志文件、次要數(shù)據(jù)文件),注:文件的后綴名是可自主命名的。
主數(shù)據(jù)文件:每個(gè)數(shù)據(jù)庫都會(huì)有一個(gè)主數(shù)據(jù)庫文件,它是數(shù)據(jù)庫的起點(diǎn),指向數(shù)據(jù)庫的其他文件。
次要數(shù)據(jù)文件:數(shù)據(jù)庫可以沒有次數(shù)據(jù)文件,也可以有多個(gè)數(shù)據(jù)文件
日志文件:日志文件是用來存儲(chǔ)數(shù)據(jù)庫的日志信息,包含著所有用于恢復(fù)數(shù)據(jù)庫的所有日志信息;
在SQLServer中,數(shù)據(jù)庫中所有文件的位置都記錄在數(shù)據(jù)庫的主文件和master數(shù)據(jù)庫中。大多數(shù)情況下,SQLserver數(shù)據(jù)庫引擎使用master數(shù)據(jù)庫中的文件位置信息。
在下列情況下,數(shù)據(jù)庫引擎使用主文件的文件位置信息初始化 master 數(shù)據(jù)庫中的文件位置項(xiàng):
· 使用帶有 FOR ATTACH 或 FOR ATTACH_REBUILD_LOG 選項(xiàng)的 CREATE DATABASE 語句來附加數(shù)據(jù)庫時(shí)。
· 從 SQL Server 2000 版或 7.0 版升級(jí)時(shí)。
· 還原 master 數(shù)據(jù)庫時(shí)。
邏輯和物理文件名稱(SQLServer文件有兩個(gè)名稱:logical_file_name、os_file_name)
Logical_file_name是所有T-SQL語句中引用物理文件時(shí)所使用的名稱。邏輯文件名必須符合SQLSERVER標(biāo)識(shí)符規(guī)則而且必須是唯一的。
Os_file_name是包括目錄路徑的物理文件名。它必須符合操作系統(tǒng)文件命名規(guī)則。
數(shù)據(jù)文件頁
SQL Server 數(shù)據(jù)文件中的頁按順序編號(hào),文件的首頁以 0 開始。數(shù)據(jù)庫中的每個(gè)文件都有一個(gè)唯一的文件 ID 號(hào)。若要唯一標(biāo)識(shí)數(shù)據(jù)庫中的頁,需要同時(shí)使用文件 ID 和頁碼。下例顯示了包含 4-MB 主數(shù)據(jù)文件和 1-MB 次要數(shù)據(jù)文件的數(shù)據(jù)庫中的頁碼。
每個(gè)文件的第一頁是一個(gè)包含有關(guān)文件屬性信息的文件的頁首頁。在文件開始處的其他幾頁也包含系統(tǒng)信息(例如分配映射)。有一個(gè)存儲(chǔ)在主數(shù)據(jù)文件和第一個(gè)日志文件中的系統(tǒng)頁是包含數(shù)據(jù)庫屬性信息的數(shù)據(jù)庫引導(dǎo)頁。
SQLServer文件可以從它們最初指定的大小開始自動(dòng)增長。在定義文件時(shí),您可以指定一個(gè)特定的增量。每次填充文件時(shí),其大小均按此增量來增長。如果文件組中有多個(gè)文件,則它們?cè)谒形募惶顫M之前不會(huì)自動(dòng)增長。填滿后,這些文件會(huì)循環(huán)增長。
每個(gè)文件還可以指定一個(gè)最大大小。如果沒有指定最大大小,文件可以一直增長到用完磁盤上的所有可用空間。如果 SQL Server 作為數(shù)據(jù)庫嵌入某應(yīng)用程序,而該應(yīng)用程序的用戶無法迅速與系統(tǒng)管理員聯(lián)系,則此功能就特別有用。用戶可以使文件根據(jù)需要自動(dòng)增長,以減輕監(jiān)視數(shù)據(jù)庫中的可用空間和手動(dòng)分配額外空間的管理負(fù)擔(dān)。
數(shù)據(jù)庫快照存儲(chǔ)其“寫入時(shí)復(fù)制”數(shù)據(jù)時(shí)所用的文件格式取決于快照是由用戶創(chuàng)建,還是在內(nèi)部使用:
· 用戶創(chuàng)建的數(shù)據(jù)庫快照將其數(shù)據(jù)存儲(chǔ)在一個(gè)或多個(gè)稀疏文件中。稀疏文件技術(shù)是 NTFS 文件系統(tǒng)的一項(xiàng)功能。首先,稀疏文件不包含任何用戶數(shù)據(jù),并且沒有為稀疏文件分配用于用戶數(shù)據(jù)的磁盤空間。有關(guān)在數(shù)據(jù)庫快照中使用稀疏文件以及數(shù)據(jù)庫快照增長方式的一般信息,請(qǐng)參閱數(shù)據(jù)庫快照的工作方式和了解數(shù)據(jù)庫快照中的稀疏文件大小。
· 數(shù)據(jù)庫快照通過特定的 DBCC 命令在內(nèi)部使用。這些命令包括 DBCC CHECKDB、DBCC CHECKTABLE、DBCC CHECKALLOC 和 DBCC CHECKFILEGROUP。內(nèi)部數(shù)據(jù)庫快照使用原始數(shù)據(jù)庫文件的稀疏備用數(shù)據(jù)流。和稀疏文件一樣,備用數(shù)據(jù)庫流也是 NTFS 文件系統(tǒng)的一項(xiàng)功能。使用稀疏備用數(shù)據(jù)流,可以進(jìn)行多項(xiàng)數(shù)據(jù)分配,使其與單個(gè)文件或文件夾進(jìn)行關(guān)聯(lián),但不影響文件大小或卷統(tǒng)計(jì)信息。
數(shù)據(jù)庫文件組
· 為便于分配和管理,可以將數(shù)據(jù)庫對(duì)象和文件一起分成文件組。有兩種類型的文件組:
· 主文件組
· 主文件組包含主數(shù)據(jù)文件和任何沒有明確分配給其他文件組的其他文件。系統(tǒng)表的所有頁均分配在主文件組中。
· 用戶定義文件組
· 用戶定義文件組是通過在 CREATE DATABASE 或 ALTER DATABASE 語句中使用 FILEGROUP 關(guān)鍵字指定的任何文件組。
· 日志文件不包括在文件組內(nèi)。日志空間與數(shù)據(jù)空間分開管理。
· 一個(gè)文件不可以是多個(gè)文件組的成員。表、索引和大型對(duì)象數(shù)據(jù)可以與指定的文件組相關(guān)聯(lián)。在這種情況下,它們的所有頁將被分配到該文件組,或者對(duì)表和索引進(jìn)行分區(qū)。已分區(qū)表和索引的數(shù)據(jù)被分割為單元,每個(gè)單元可以放置在數(shù)據(jù)庫中的單獨(dú)文件組中。有關(guān)已分區(qū)表和索引的詳細(xì)信息,請(qǐng)參閱已分區(qū)表和已分區(qū)索引。
· 每個(gè)數(shù)據(jù)庫中均有一個(gè)文件組被指定為默認(rèn)文件組。如果創(chuàng)建表或索引時(shí)未指定文件組,則將假定所有頁都從默認(rèn)文件組分配。一次只能有一個(gè)文件組作為默認(rèn)文件組。db_owner 固定數(shù)據(jù)庫角色成員可以將默認(rèn)文件組從一個(gè)文件組切換到另一個(gè)。如果沒有指定默認(rèn)文件組,則將主文件組作為默認(rèn)文件組。
文件和文件組示例
以下示例在 SQL Server 實(shí)例上創(chuàng)建了一個(gè)數(shù)據(jù)庫。該數(shù)據(jù)庫包括一個(gè)主數(shù)據(jù)文件、一個(gè)用戶定義文件組和一個(gè)日志文件。主數(shù)據(jù)文件在主文件組中,而用戶定義文件組包含兩個(gè)次要數(shù)據(jù)文件。ALTER DATABASE 語句將用戶定義文件組指定為默認(rèn)文件組。然后通過指定用戶定義文件組來創(chuàng)建表。
示例:
USE master;
GO
CREATE DATABASE MyDB
ON PRIMARY
( NAME='MyDB_Primary',FILENAME='c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\data\MyDB_Prm.mdf',
SIZE=4MB,MAXSIZE=10MB,FILEGROWTH=1MB),
FILEGROUP MyDB_FG1
( NAME = 'MyDB_FG1_Dat1'FILENAME ='c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\data\MyDB_FG1_1.ndf',
SIZE = 1MB, MAXSIZE=10MB,FILEGROWTH=1MB),
( NAME = 'MyDB_FG1_Dat2',FILENAME ='c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\data\MyDB_FG1_2.ndf',
SIZE = 1MB,MAXSIZE=10MB,FILEGROWTH=1MB)
LOG ON
( NAME='MyDB_log',FILENAME ='c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\data\MyDB.ldf',
SIZE=1MB,MAXSIZE=10MB, FILEGROWTH=1MB);
GO
ALTER DATABASE MyDB
MODIFY FILEGROUP MyDB_FG1 DEFAULT;
GO
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。