程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server數據庫技術(30)

SQL Server數據庫技術(30)

編輯:關於SqlServer

1、文件與文件組
在SQL Server 中數據庫是由數據庫文件和事務日志文件組成的。一個數據庫至少應包含一個數據庫文件和一個事物日志文件。
(1) 數據庫文件(Database File)
數據庫文件是存放數據庫數據和數據庫對象的文件。一個數據庫可以有一個或多個數據庫文件,一個數據庫文件只屬於一個數據庫。當有多個數據庫文件時,有一個文件被定義為主數據庫文件(Primary Database File), 擴展名為mdf, 它用來存儲數據庫的啟動信息和部分或全部數據,一個數據庫只能有一個主數據庫文件。其它數據庫文件被稱為次數據庫文件(Secondary Database File), 擴展名為ndf, 用來存儲主文件沒存儲的其它數據。

采用多個數據庫文件來存儲數據的優點體現在:
·數據庫文件可以不斷擴充,而不受操作系統文件大小的限制;
·可以將數據庫文件存儲在不同的硬盤中,這樣可以同時對幾個硬盤做數據存取,提高了數據處理的效率。對於服務器型的計算機尤為有用。

(2) 事務日志文件(Transaction Log File)
事務日志文件是用來記錄數據庫更新情況的文件,擴展名為ldf。例如使用INSERT、UPDATE、 DELETE、 等對數據庫進行更的操作都會記錄在此文件中,而如SELECT 等對數據庫內容不會有影響的操作則不會記錄在案。一個數據庫可以有一個或多個事務日志文件。

SQL Server 中采用“Write-Ahead (提前寫)”方式的事務,即對數據庫的修改先寫入事務日志中,再寫入數據庫。其具體操作是,系統先將更改操作寫入事務日志中,再更改存儲在計算機緩存中的數據,為了提高執行效率,此更改不會立即寫到硬盤中的數據庫,而是由系統以固定4 的時間間隔執行CHECKPOINT 命令,將更改過的數據批量寫入硬盤。SQL Server 有個特點,它在執行數據更改時會設置一個開始點和一個結束點,如果尚未到達結束點就因某種原因使操作中斷,則在SQL Server 重新啟動時會自動恢復已修改的數據,使其返回未被修改的狀態。 由此可見,當數據庫破壞時,可以用事務日志恢復數據庫內容。

(3) 文件組(File Group)
文件組是將多個數據庫文件集合起來形成的一個整體。每個文件組有一個組名。與數據庫文件一樣,文件組也分為主文件組(Primary File Group) 和次文件組(Secondary FileGroup) 一個文件只能存在於一個文件組中,一個文件組也只能被一個數據庫使用。主文件組中包含了所有的系統表。當建立數據庫時,主文件組包括主數據庫文件和未指定組的其它文件。在次文件組中可以指定一個缺省文件組,那麼在創建數據庫對象時如果沒有指定將其放在哪一個文件組中,就會將它放在缺省文件組中。如果沒有指定缺省文件組則主文件組,為缺省文件組。
注意:事務日志文件不屬於任何文件組。

6.1.2 用Enterprise Manager 創建數據庫
在Enterprise Manager 中可以按下列步驟來創建數據庫:
(1) 單擊工具欄中的圖標SQL Server數據庫技術(30)(圖一),或在服務器的Databases 文件夾或其下屬數據庫圖標上單擊右鍵,選擇New Database…選項,即會出現如圖6-1 所示的對話框。
(2) 指定數據庫的名稱和編碼方式,如圖6-1 所示。
SQL Server數據庫技術(30)(圖二)

歡迎光臨學網,收藏本篇文章 [1] [2] [3] [4]

$False$


圖6-1 創建數據庫對話框
(3) 點擊Transaction Log 頁框,指定數據庫文件的名稱、存儲位置、初始容量大小和所屬文件組,如圖6-2 所示。
(4) 進行數據庫文件大小擴充方式和容量限制設置,如圖6-2 所示。
(5) 點擊Transaction Log 頁框,指定事務日志文件的名稱、存儲位置和初始容量大小,如圖6-3 所示。
(6) 進行事務日志文件大小擴充方式和容量限制設置,如圖6-3 所示。

SQL Server數據庫技術(30)(圖三)

圖文


SQL Server數據庫技術(30)(圖四)(7) 單擊“確定”按鈕,則建新數據庫。
注意:數據庫的名稱最長為128個字符,且不區分大小寫。
注意:在此指定的文件容量以MB為單們的,數據庫文件的最小容量為1MB,最大容量為1,048,516TB(這麼大的硬盤還沒出世!);事務日志文件的最小容量為1MB。
一個服務器在理論上可以管理32,767數據庫。

6.1.3 用CREATE DATABASE 命令創建數據庫
SQL Server數據庫技術(30)(圖五)歡迎光臨學網,收藏本篇文章 [1] [2] [3] [4]

圖文

各參數說明如下:

  • database_name
    數據庫名稱,不能超過128 個字符,由於系統會在其後添加5 個字符的邏輯後綴,因此實際能指定的字符數為123 個。
  • on
    指明數據庫文件和文件組的明確定義。
  • PRIMARY
    指明主數據庫文件或主文件組。主文件組的第一個文件被認為是主數據庫文件,其中包含了數據庫的邏輯啟動信息和數據庫的系統表。如果沒有PRIMARY 項,則在CREATE DATABASE 命令中列出的第一個文件將被默認為主文件。
  • filespec
    文件說明。
  • n
    占位符表明可以指定多個類似的對象。
  • filegroupspec
    文件組說明。
  • LOG ON>
    指明事務日志文件的明確定義。如果沒有LOG ON 選項,則系統會自動產生一個文件名前綴與數據庫名相同,容量為所有數據庫文件大小1/4 的事務日志文件。
  • COLLATE
    指明數據庫使用的校驗方式。collation_name 可以是Windows 的校驗方式名稱,也可以是SQL 校驗方式名稱。如果省略此子句,則數據庫使用當前的SQL Server 設置的校驗方式。
  • FOR LOAD
    此選項是為了與SQL Server 7.0 以前的版本兼容而設定的。讀者可以不用管它。RESTORE 命令可以更好地實現此功能。
  • FOR ATTACH
    用於附加已經存在的數據庫文件到新的數據庫中,而不用重新創建數據庫文件。使用此命令必須指定主文件。被附加的數據庫文件的代碼頁(Code Page)和排序次序(Sort Order)必須和目前SQL Server 所使用的一致。建議使用sp_attach_db 系統存儲過程來代替此命令(關於sp_attach_db 系統存儲過程的用法請參見本章的第7 節“移動和復制數據庫”)。CREATE DATABASE FOR ATTACH 命令只有在指定的文件數目超過16 個時才必須使用。
  • NAME
    指定文件在SQL Server 中的邏輯名稱。當時用FOR ATTACH 選項時,就不需要使用 NAME 選項了。
  • FILENAME
    指定文件在操作系統中存儲的路徑名和文件名稱。
  • SIZE
    指定數據庫的初始容量大小。如果沒有指定主文件的大小,則SQL Server 默認其與模板數據庫中的主文件大小一致,其它數據庫文件和事務日志文件則默認為1 MB。 指定大小的數字size 可以使用KB、 MB、 GB、 和TB 後綴,默認的後綴是MB。 size 中不能使用小


    您正在看的SQLserver教程是:SQL Server數據庫技術(30)。數,其最小值為512 KB, 默認值是1MB。 主文件的size 不能小於模板數據庫中的主文件(關於模板數據庫的介紹請參見本章最後一節)。
  • MAXSIZE
    指定文件的最大容量。如果沒有指定MAXSIZE, 則文件可以不斷增長直到充滿磁盤。
  • UNLIMITED
    指明文件無容量限制。
  • FILEGROTH
    指定文件每次增容時增加的容量大小。增加量可以為確定的以KB、 MB 作後綴的字節數或以%作後綴的被增容文件的百分比來表示。缺省後綴為MB。 如果沒有指定FILEGROWTH,則缺省值為10%, 每次擴容的最小值為64 KB。 CREATE DATABASE 命令在SQL Server 中執行時使用模板數據庫來初始化新建的數據庫(使用FOR ATTACH 選項時除外)。在模板數據庫中的所有用戶定義的對象和數據庫的設置都會被復制到新數據庫中。每個數據庫都有一個所有者(Database Owner,簡稱DBO),創建數據庫的用戶被默認為數據庫所有者。可以通過sp_changedbowner 系統存儲過程來更改數據庫所有者。

例6-1: 創建一個與上節中用Enterprise Manager 創建的數據庫類似的數據庫。
create database mydb
on primary
( name = mydb_data1,
filename = 'd:\sql data\mydb_data1.mdf',
size = 1,
maxsize = unlimited,
filegrowth = 10% ),
filegroup data2
( name = mydb_data2,
filename = 'd:\sql data\mydb_data2.ndf',
size = 2,
maxsize = 100,
filegrowth = 1 ),
filegroup data3
( name = mydb_data3,
filename = 'd:\sql data\mydb_data3.ndf',文章整理:學網 http://www.xue5.com (本站) [1] [2] [3] [4]


size = 3,
maxsize = 50,
filegrowth = 500kb )
log on
( name = 'mydb_log1',
filename = 'd:\sql data\mydb_log1.ldf',
size = 1mb,
maxsize = 25mb,
filegrowth = 10% ),
( name = 'mydb_log2',
filename = 'd:\sql data\mydb_log2.ldf',
size = 1mb,
maxsize = 10mb,
filegrowth = 10% ),
( name = 'mydb_log3',
filename = 'd:\sql data\mydb_log3.ldf',
size = 1mb,
maxsize = 5mb,
filegrowth = 512kb )
運行結果如下
-------------------- --------------------
The CREATE DATABASE process is allocating 1.00 MB on disk 'mydb_Data1'.
The CREATE DATABASE process is allocating 2.00 MB on disk 'mydb_Data2'.
The CREATE DATABASE process is allocating 3.00 MB on disk 'mydb_Data3'.
The CREATE DATABASE process is allocating 1.00 MB on disk 'mydb_Log1'.
The CREATE DATABASE process is allocating 1.00 MB on disk 'mydb_Log2'.
The CREATE DATABASE process is allocating 1.00 MB on disk 'mydb_Log3'.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved