原創地址:http://blog.csdn.net/guguda2008/article/details/5716939數據庫
一個完整的建庫語句是相似這樣的:服務器
IF DB_ID('TEST') IS NOT NULL DROP DATABASE TEST
GO
CREATE DATABASE TEST
ON PRIMARY (
NAME=TEST_DAT_MAIN1
,FILENAME='D:/SQL2008DATAS/TEST_DAT_MAIN1.MDF'
,SIZE=3MB
,MAXSIZE=UNLIMITED
,FILEGROWTH=5MB
),(
NAME=TEST_DAT_MAIN2
,FILENAME='D:/SQL2008DATAS/TEST_DAT_MAIN2.MDF'
,SIZE=3MB
,MAXSIZE=UNLIMITED
,FILEGROWTH=5MB
)
,FILEGROUP TEST_DAT_SUB1 DEFAULT (
NAME=TEST_DAT_SUB1
,FILENAME='D:/SQL2008DATAS/TEST_DAT_SUB1.MDF'
,SIZE=2MB
,MAXSIZE=UNLIMITED
,FILEGROWTH=5MB
),(
NAME=TEST_DAT_SUB2
,FILENAME='D:/SQL2008DATAS/TEST_DAT_SUB2.MDF'
,SIZE=2MB
,MAXSIZE=UNLIMITED
,FILEGROWTH=5MB
)
,FILEGROUP TEST_DAT_SUB2 (
NAME=TEST_DAT_SUB3
,FILENAME='D:/SQL2008DATAS/TEST_DAT_SUB3.MDF'
,SIZE=2MB
,MAXSIZE=UNLIMITED
,FILEGROWTH=5MB
)
,FILEGROUP TEST_DAT_FILESTREAM1 CONTAINS FILESTREAM (
NAME=TEST_DAT_FILESTREAM1
,FILENAME='E:/SQL2008DATAS/TEST_DAT_FILESTREAM1.MDF'
)
,FILEGROUP TEST_DAT_FILESTREAM2 CONTAINS FILESTREAM (
NAME=TEST_DAT_FILESTREAM2
,FILENAME='E:/SQL2008DATAS/TEST_DAT_FILESTREAM2.MDF'
)
LOG ON (
NAME=TEST_LOG1
,FILENAME='D:/SQL2008DATAS/TEST_LOG1.LDF'
,SIZE=10MB
,MAXSIZE=UNLIMITED
,FILEGROWTH=10MB
),(
NAME=TEST_LOG2
,FILENAME='D:/SQL2008DATAS/TEST_LOG2.LDF'
,SIZE=10MB
,MAXSIZE=UNLIMITED
,FILEGROWTH=10MB
)
COLLATE CHINESE_PRC_CI_AS
WITH
DB_CHAINING OFF
,TRUSTWORTHY OFF
長了一點,不過不要緊,我分開一點一點說網絡
1.工具
IF DB_ID('TEST') IS NOT NULL DROP DATABASE TEST
GO操作系統
這個是判斷若是有名爲TEST的數據庫就刪除,不在本文討論範圍內,知道啥意思就好。.net
2.日誌
CREATE DATABASE TEST對象
這就是剛纔說的最簡單的建庫語句blog
CREATE DATABASE是關鍵字,表示要創建一個數據庫,這兩句是不能改的排序
TEST是庫名,基本上是隨便打的,只要符合一些規範,別打亂七八糟的字符行了,好比火星文什麼的。具體規範能夠看這裏
http://msdn.microsoft.com/zh-cn/library/ms175874.aspx
3.
ON PRIMARY (
NAME=TEST_DAT_MAIN1
,FILENAME='D:/SQL2008DATAS/TEST_DAT_MAIN1.MDF'
,SIZE=3MB
,MAXSIZE=UNLIMITED
,FILEGROWTH=5MB
),(
NAME=TEST_DAT_MAIN2
,FILENAME='D:/SQL2008DATAS/TEST_DAT_MAIN2.MDF'
,SIZE=3MB
,MAXSIZE=UNLIMITED
,FILEGROWTH=5MB
)
這裏詳細說一下
MSSQL是經過文件來存放數據的,在管理這些文件的時候能夠把若干個文件分到一組。一個數據庫至少要有一個文件和一個文件組,其中至少有一個主文件組,主文件組中有且只有一個主文件,若是用戶沒有指定主文件組則會經過一些默認設置來自動建立。好比上面那個最簡單的CREATE DTABASE TEST,系統會自動建立一個RPIMARY文件組,其中有一個TEST.MDF文件。
ON PRIMARY的意思是就是指定主文件組中包含的文件。上面這段語句爲主文件組PRIMARY指定了兩個文件,第一個文件就是數據庫的主文件,第二個文件則是同屬PRIMARY文件組的次要數據文件。在括號中的就是它的屬性。若是要手工指定屬性,NAME和FILENAME是必須寫的,後面三個能夠不寫。不寫的話就會跟MODEL數據庫的設置同樣。
NAME是文件的邏輯名稱,在數據庫管理時做爲文件的標識使用,文件名在數據庫中不能重名。
FILENAME是文件的物理名稱,也就是它在操做系統中的存放路徑。MSDN中的原話是「文件必須駐留在下列一種設備中:安裝 SQL Server 的本地服務器、存儲區域網絡 [SAN] 或基於 iSCSI 的網絡。」。後面兩個我都沒用過,留待之後學會了再補充,前一個就是WINDOWS中的路徑了。注意若是文件所在的文件夾不存在會報錯,因此要提早建好文件夾。
SIZE是文件的初始大小,主文件最小2MB,次要文件最小512KB。若是SIZE後面只寫數字如2則默認爲2MB。
MAXSIZE指定文件的最大大小,若是數據庫中的全部文件都達到最大大小或者磁盤沒空間了都會致使沒法插入或由小到大更新。MAXSIZE中能夠寫數字,和SIZE同樣,也能夠寫UNLIMITED指定不限制最大大小。
FILEGROWTH指定文件增加方式,能夠和上面同樣寫數字,也能夠寫百分比,不過建議寫數字,由於數據庫大了之後按百分比增加會慢。
一個文件組由一段定義文字和由括號包起來的若干個文件組成,多個文件用逗號分隔,每一個文件由一對括號和若干個由逗號分隔的屬性組成,語法就是這樣了,後面的語句和這個是大同小異的。
4.
,FILEGROUP TEST_DAT_SUB1 DEFAULT (
NAME=TEST_DAT_SUB1
,FILENAME='D:/SQL2008DATAS/TEST_DAT_SUB1.MDF'
,SIZE=2MB
,MAXSIZE=UNLIMITED
,FILEGROWTH=5MB
),(
NAME=TEST_DAT_SUB2
,FILENAME='D:/SQL2008DATAS/TEST_DAT_SUB2.MDF'
,SIZE=2MB
,MAXSIZE=UNLIMITED
,FILEGROWTH=5MB
)
除了第一行,剩下的都和上邊同樣。只說一下第一行。
FILEGROUP是關鍵字,指定用戶文件組,後面跟着的TEST_DAT_SUB1就是名字,DEFAULT是指定此文件組爲默認文件組。默認文件組的意思就是若是建立用戶數據時若是沒有明確指定,都會放到這個文件組裏。
下面的語句就是爲TEST_DAT_SUB1文件組分配兩個文件。很少說了。我也都是COPY一下一更名就完了。
5
,FILEGROUP TEST_DAT_SUB2 (
NAME=TEST_DAT_SUB3
,FILENAME='D:/SQL2008DATAS/TEST_DAT_SUB3.MDF'
,SIZE=2MB
,MAXSIZE=UNLIMITED
,FILEGROWTH=5MB
)
沒有須要說明的地方,都能看懂了吧。
6
,FILEGROUP TEST_DAT_FILESTREAM1 CONTAINS FILESTREAM (
NAME=TEST_DAT_FILESTREAM1
,FILENAME='E:/SQL2008DATAS/TEST_DAT_FILESTREAM1.MDF'
)
,FILEGROUP TEST_DAT_FILESTREAM2 CONTAINS FILESTREAM (
NAME=TEST_DAT_FILESTREAM2
,FILENAME='E:/SQL2008DATAS/TEST_DAT_FILESTREAM2.MDF'
)
注意文件組名後的CONTAINS FILESTREAM關鍵字,這個是2008新加的數據流功能,這裏不討論先。反正加上這個關鍵字就是指定文件組在文件系統中存儲 FILESTREAM 二進制大型對象 (BLOB)。這種文件組中的文件只能指定NAME和FILENAME兩個屬性,其中FILENAME中的最後一個文件夾不能在系統中存在,好比D:/ABC/123/XXX.MDF中,必須在D盤有一個ABC文件夾,但其中不能夠有名爲123的文件夾。
另一個FILESTREAM 文件組裏只能有一個文件,但能夠指定多個FILESTREAM 文件組。
7
LOG ON (
NAME=TEST_LOG1
,FILENAME='D:/SQL2008DATAS/TEST_LOG1.LDF'
,SIZE=10MB
,MAXSIZE=UNLIMITED
,FILEGROWTH=10MB
),(
NAME=TEST_LOG2
,FILENAME='D:/SQL2008DATAS/TEST_LOG2.LDF'
,SIZE=10MB
,MAXSIZE=UNLIMITED
,FILEGROWTH=10MB
)
LOG ON就是指定數據庫日誌文件,用來對數據庫的操做日誌,但比較噁心的是MS不提供查看日誌文件的工具,想經過日誌文件瞭解歷史記錄要用第三方工具。若是沒有指定日誌文件,會默認建立一個與數據庫同名的LDF文件,存放在系統數據庫同一目錄下。建議日誌文件和數據文件分兩個硬盤存放。
8
COLLATE CHINESE_PRC_CI_AS
指定數據庫的排序規則,若是不寫就按數據庫默認的來。排序規則我也搞不大清楚,跟系統也有關,MS的說明太簡單了。學好了之後再另寫。
9
WITH
DB_CHAINING OFF
,TRUSTWORTHY OFF
控制外部與數據庫之間的雙向訪問,DB_CHAINING指定數據庫可不能夠爲跨數據庫全部權鏈的源或目標;TRUSTWORTHY指定模擬上下文中的數據庫模塊能不能訪問數據庫之外的資源。能夠不寫,會都默認爲OFF,對這東西感興趣的能夠本身去翻翻資料。這個我歷來沒用過,等學會了之後再補充到這篇博客裏。
附加數據庫和數據庫快照的語法和這個差很少,等着另開一篇寫,若是寫太多看完後邊的就會忘了前邊的了。
以上就是建庫語句的所有組成,除了FILESTREAM之外都是2005和2008通用的。本文是寫給對數據庫不太瞭解的新手的,因此若是你是新手並且有解釋看不懂,請給我留言。若是你發現文中有說的不對的地方也請給我留言。