熱點推薦:
您现在的位置: 電腦知識網 >> 操作系統 >> Windows系統管理 >> 正文

物理數據庫文件和文件組

2013-11-11 21:29:58  來源: Windows系統管理 

  Microsoft® SQL Server&#; 將數據庫映射到一組操作系統文件上數據和日志信息絕不混合在同一個文件中而且個別文件只由一個數據庫使用
  
  SQL Server 數據庫有三種類型的文件
  
  主要數據文件
  主要數據文件是數據庫的起點指向數據庫中文件的其它部分每個數據庫都有一個主要數據文件主要數據文件的推薦文件擴展名是 mdf
  
  次要數據文件
  次要數據文件包含除主要數據文件外的所有數據文件有些數據庫可能沒有次要數據文件而有些數據庫則有多個次要數據文件次要數據文件的推薦文件擴展名是 ndf
  
  日志文件
  日志文件包含恢復數據庫所需的所有日志信息每個數據庫必須至少有一個日志文件但可以不止一個日志文件的推薦文件擴展名是 ldf
  
  SQL Server 不強制使用 mdfndf 和 ldf 文件擴展名但建議使用這些擴展名以幫助標識文件的用途
  
  在 SQL Server 某個數據庫中的所有文件的位置都記錄在 master 數據庫和該數據庫的主文件中大多數情況下數據庫引擎使用 master 數據庫中的文件位置信息不過對於某些操作數據庫引擎使用主文件中的文件位置信息初始化 master 數據庫中的文件位置項
  
  當使用 sp_attach_db 系統存儲過程附加數據庫時
  
  
  當從 SQL Server 版升級到 SQL Server
  
  
  當還原 master 數據庫時
  SQL Server 文件有兩個名稱
  
  logical_file_name 是在所有 TransactSQL 語句中引用文件時所使用的名稱
  邏輯文件名必須遵守 SQL Server 標識符規則且對數據庫必須是唯一的
  
  os_file_name 是物理文件名
  物理文件名必須遵從 Microsoft Windows NT® 或 Microsoft Windows® 和 Microsoft Windows 的文件名規則
  
  下面是在 SQL Server 默認實例上創建的數據庫的邏輯文件名和物理文件名示例
  
   
  
  SQL Server 數據和日志文件可以放置在 FAT 或 NTFS 文件系統中但不能放在壓縮文件系統中
  
  在 SQL Server 數據文件的頁按順序編號文件首頁的頁碼是 每個文件都有一個文件 ID 號在數據庫中唯一標識一頁需要同時使用文件 ID 和頁碼下例顯示包含 MB 主要數據文件和 MB 次要數據文件的數據庫中的頁碼
  
   
  
  在每個文件中第一頁是包含文件特性信息的文件的頁首頁在文件開始處的其它幾頁也包含系統信息(如分配映射表)系統頁存儲在主要數據文件和第一個日志文件中其中有一個是包含數據庫屬性信息的數據庫引導頁
  
  SQL Server 文件可以從它們最初指定的大小自動增長定義文件時可以指定增量每次填充文件時均按這個增量值增加它的大小如果在文件組中有多個文件這些文件在全部填滿之前不自動增長填滿後這些文件使用循環算法進行增長
  
  還可以指定每個文件的最大大小如果沒有指定最大大小文件可以一直增長到用完磁盤上的所有可用空間如果 SQL Server 作為數據庫嵌入應用程序而該應用程序的用戶無法迅速與系統管理員聯系此功能在這種情況下特別有用用戶可以讓文件按需要自動增長以減輕監視數據庫中的可用空間量和手工分配額外空間的管理負擔
  
  如果有多個 SQL Server 實例在單個計算機上運行則每個實例獲得不同的默認目錄來存儲該實例中創建的數據庫文件
  
  數據庫文件組
  出於分配和管理目的可以將數據庫文件分成不同的文件組一些系統可以通過控制在特定磁盤驅動器上放置的數據和索引來提高自身的性能文件組可以對此進程提供幫助系統管理員可以為每個磁盤驅動器創建文件組然後將特定的表索引或表中的 textntext 或 image 數據指派給特定的文件組
  
  沒有一個文件可以是一個以上文件組的成員索引以及 textntext 和 image 數據可以與文件組相關聯在這種情況下它們的所有頁都將分配在那個文件組中
  
  日志文件不能作為文件組的一部分日志空間與數據空間分開管理
  
  文件組中的文件不自動增長除非文件組中的文件全都沒有可用空間
  
  有兩種類型的文件組
  
  主要文件組
  主文件組包含主要數據文件和任何沒有明確指派給其它文件組的其它文件系統表的所有頁均分配在主文件組中
  
  用戶定義文件組
  用戶定義文件組是在 CREATE DATABASE 或 ALTER DATABASE 語句中使用 FILEGROUP 關鍵字指定的文件組
  
  每個數據庫中都有一個文件組作為默認文件組運行當 SQL Server 給創建時沒有為其指定文件組的表或索引分配頁時將從默認文件組中進行分配一次只能有一個文件組作為默認文件組db_owner 固定數據庫角色成員可以將默認文件組從一個文件組切換到另一個如果沒有指定默認文件組則主文件組是默認文件組
  
  SQL Server 在沒有文件組時也能有效地工作因此許多系統不需要指定用戶定義文件組在這種情況下所有文件都包含在主文件組中而且 SQL Server 可以在數據庫內的任何位置分配數據文件組不是在多個驅動器之間分配 I/O 的唯一方法
  
  db_owner 固定數據庫角色成員可以備份和還原個別的文件或文件組而不用備份或還原整個數據庫
  
  下例在 SQL Server 的默認實例上創建數據庫該數據庫包括一個主要數據文件一個用戶定義的文件組和一個日志文件主要數據文件在主文件組中而用戶定義文件組有兩個次要數據文件ALTER DATABASE 語句將用戶定義文件組指定為默認文件組之後通過指定用戶定義的文件組來創建表
  
  USE master
  GO
   Create the database with the default data
   filegroup and the log file Specify the
   growth increment and the max size for the
   primary data file
  CREATE DATABASE MyDB
  ON PRIMARY
   ( NAME=MyDB_Primary
  FILE NAME=
   c:\Program Files\Microsoft SQL Server\MSSQL\data\MyDB_Prmmdf
  SIZE=
  MAXSIZE=
  FILEGROWTH=)
  FILEGROUP MyDB_FG
   ( NAME = MyDB_FG_Dat
  FILE NAME =
   c:\Program Files\Microsoft SQL Server\MSSQL\data\MyDB_FG_ndf
  SIZE = MB
  MAXSIZE=
  FILEGROWTH=)
   ( NAME = MyDB_FG_Dat
  FILE NAME =
   c:\Program Files\Microsoft SQL Server\MSSQL\data\MyDB_FG_ndf
  SIZE = MB
  MAXSIZE=
  FILEGROWTH=)
  LOG ON
   ( NAME=MyDB_log
  FILE NAME =
   c:\Program Files\Microsoft SQL Server\MSSQL\data\MyDBldf
  SIZE=
  MAXSIZE=
  FILEGROWTH=)
  GO
  ALTER DATABASE MyDB
  MODIFY FILEGROUP MyDB_FG DEFAULT
  GO
  
   Create a table in the userdefined filegroup
  USE MyDB
  CREATE TABLE MyTable
   ( cola   int  PRIMARY KEY
  colb   char() )
  ON MyDB_FG
  GO
  
  
  
  可以將用戶文件組設成只讀數據不能更改但可以修改目錄以執行權限管理等工作
  
  SQL Server 數據庫可以從服務器中分離出來然後重新連接到另一台服務器或原來的服務器上這對制作要分發的以便用於在客戶的本地 SQL Server 安裝上使用的數據庫特別有用例如公司可以創建包含其當前產品目錄的數據庫公司可以在可寫的光盤驅動器上創建這個數據庫並將它設成只讀然後他們可以復制這張光盤給那些在 Windows 便攜式電腦上安裝了目錄應用程序和 SQL Server 的地區銷售代表發送復本這樣一來銷售代表就有了最新的產品目錄信息

From:http://tw.wingwit.com/Article/os/xtgl/201311/8594.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.