SQLServer创建数据库详解
1、創(chuàng)建數(shù)據(jù)庫介紹
在創(chuàng)建數(shù)據(jù)庫之前,需要先確定數(shù)據(jù)庫的名稱、所有者、大小、存儲該數(shù)據(jù)庫的文件和文件組。
數(shù)據(jù)庫所有者:創(chuàng)建數(shù)據(jù)庫的用戶。一般情況下,大多數(shù)產(chǎn)品對象由數(shù)據(jù)庫所有者擁有。
2、創(chuàng)建數(shù)據(jù)庫注意事項
創(chuàng)建數(shù)據(jù)庫需要擁有CREATE DATABASE、CREATE ANY DATABASE或ALTER ANY DATABASE權(quán)限。
創(chuàng)建數(shù)據(jù)庫的用戶將成為該數(shù)據(jù)庫的所有者。
針對一個SQL Server實例,最多可以創(chuàng)建32767個數(shù)據(jù)庫。
數(shù)據(jù)庫名稱必須遵循為標(biāo)識符指定的規(guī)則。
在創(chuàng)建新數(shù)據(jù)庫同時,model數(shù)據(jù)庫中的所有用戶定義對象都會復(fù)制到新創(chuàng)建的數(shù)據(jù)庫中。可以向model數(shù)據(jù)庫中添加任何通用的對象(如表、視圖、存儲過程和數(shù)據(jù)類型),然后在創(chuàng)建的數(shù)據(jù)庫可以將這些對象復(fù)制到新創(chuàng)建的數(shù)據(jù)庫當(dāng)中。
3、創(chuàng)建數(shù)據(jù)庫的語法格式
語法格式如下:
CREATE DATABASE database_name[ ON[ PRIMARY ] [ <filespec> [ ,...n ][ , <filegroup> [ ,...n ] ][ LOG ON { <filespec> [ ,...n ] } ]][ COLLATE collation_name ]][;]參數(shù)說明:
database_name:數(shù)據(jù)庫名稱。
ON:指定以顯式定義方式指定存儲數(shù)據(jù)庫數(shù)據(jù)部分的數(shù)據(jù)文件。
PRIMARY:指定<filespec>列表中的主文件。在<filespec>項中的第一個文件將成為主文件。如果沒有指定PRIMARY則默認(rèn)第一個文件將成為數(shù)據(jù)庫主文件。
LOG ON:指定存儲數(shù)據(jù)庫日志的日志文件。LOG ON后跟著以逗號分隔的用于定義日志文件的<filespec>項列表。不指定LOG ON,將自動創(chuàng)建一個日志文件,文件大小為該數(shù)據(jù)庫的所有數(shù)據(jù)文件大小總和的1/4或512 KB,取兩者之中的較大者。
COLLATE collation_name:指定數(shù)據(jù)庫的默認(rèn)排序規(guī)則。排序規(guī)則名稱包括Windows排序規(guī)則、SQL排序規(guī)則名稱。未指定排序規(guī)則,則將SQL Server實例的默認(rèn)排序規(guī)則分配為數(shù)據(jù)庫的排序規(guī)則。
<filespec>部分主要用于控制文件屬性,語法格式如下:
(NAME = logical_file_name ,FILENAME = 'os_file_name'[ , SIZE = size [ KB | MB | GB | TB ] ][ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ][ , FILEGROWTH = growth_increment [ KB | MB | GB | TB | % ] ]) [ ,...n ]logical_file_name:指定文件的邏輯名稱。logical_file_name必須在數(shù)據(jù)庫中唯一,必須符合規(guī)定的標(biāo)識符規(guī)則。
' os_file_name ':指定操作系統(tǒng)(物理)文件名稱。執(zhí)行創(chuàng)建數(shù)據(jù)庫語句前,指定文件路徑必須存在。如果指定了UNC(通用命名約定)路徑,則無法設(shè)置SIZE、MAXSIZE和FILEGROWTH參數(shù)。
size:指定文件的初始大小。未指定主文件指定size,數(shù)據(jù)庫引擎將使用model數(shù)據(jù)庫中的主文件的大小。如果指定了輔助數(shù)據(jù)文件或日志文件,但未指定該文件的size,則數(shù)據(jù)庫引擎將以1 MB作為該文件的大小。
可以使用千字節(jié)(KB)、兆字節(jié)(MB)、千兆字節(jié)(GB)或兆兆字節(jié)(TB)后綴,默認(rèn)單位為MB。
max_size:指定文件可增大到的最大值,可以使用KB、MB、GB和TB后綴,默認(rèn)單位為MB。
UNLIMITED:指定文件可以增長到磁盤空間已滿。在SQL Server中,指定為不限制增長的日志文件的最大值為2 TB,而數(shù)據(jù)文件的最大值為16 TB。
growth_increment:指定每次需要新空間時為文件添加的空間量。growth_increment值不能超過MAXSIZE設(shè)置值。該值可以使用MB、KB、GB、TB或百分比(%)為單位指定。默認(rèn)值為MB。growth_increment值為0時表明自動增長被關(guān)閉,不允許增加空間。
如果未指定FILEGROWTH,則數(shù)據(jù)文件的默認(rèn)值為1 MB,日志文件的默認(rèn)增長比例為10%,并且最小值為64 KB。
<filegroup>部分主要用于控制文件組屬性,語法格式如下:
?
FILEGROUP filegroup_name [ DEFAULT ]<filespec> [ ,...n ]filegroup_name:必須在數(shù)據(jù)庫中唯一,不能是系統(tǒng)提供的名稱PRIMARY和PRIMARY_LOG。
DEFAULT:指定文件組為數(shù)據(jù)庫中的默認(rèn)文件組。
4、 創(chuàng)建數(shù)據(jù)庫示例
最簡單的創(chuàng)建數(shù)據(jù)庫示例
create database TestDB
會根據(jù)SQLServer默認(rèn)設(shè)置(文件存儲位置、文件增加大小等)創(chuàng)建數(shù)據(jù)庫。
2.指定數(shù)據(jù)和事務(wù)日志文件的數(shù)據(jù)庫示例
IF DB_ID (N'TestDB') is not null -- 判斷數(shù)據(jù)庫是否存在如果存在則先刪除DROP DATABASE TestDB GOCREATE DATABASE TestDBON( NAME = TestDB,-- 邏輯數(shù)據(jù)庫文件名FILENAME = 'D:\TestDB.mdf',SIZE = 10,MAXSIZE = 200,FILEGROWTH = 5 )LOG ON( NAME = TestDB_log,-- 邏輯數(shù)據(jù)庫日志文件名FILENAME = 'D:\TestDB_log.ldf',SIZE = 5MB,MAXSIZE = 50MB,FILEGROWTH = 5MB ) ;3.指定多個數(shù)據(jù)文件和事務(wù)日志文件示例
USE masterGO IF DB_ID (N'TestDB') is not null -- 判斷數(shù)據(jù)庫是否存在如果存在則先刪除DROP DATABASE TestDB GOCREATE DATABASE TestDBONPRIMARY(NAME = TestDB1,FILENAME = 'd:\TestDB1.mdf',SIZE = 100MB,MAXSIZE = 200,FILEGROWTH = 20),( NAME = TestDB2,FILENAME = 'd:\TestDB2.ndf',SIZE = 100MB,MAXSIZE = 200,FILEGROWTH = 20)LOG ON(NAME = TestDB_log1,FILENAME = 'd:\TestDB_log1.ldf',SIZE = 30MB,MAXSIZE = 100,FILEGROWTH = 10),(NAME = TestDB_log2,FILENAME = 'd:\TestDB_log2.ldf',SIZE = 100MB,MAXSIZE = 500,FILEGROWTH = 50) ;? ?
4.創(chuàng)建具有文件組的數(shù)據(jù)庫下面的語句將創(chuàng)建數(shù)據(jù)庫Sales,該數(shù)據(jù)庫具有以下文件組。
USE masterGO IF DB_ID (N'TestDB') is not null -- 判斷數(shù)據(jù)庫是否存在如果存在則先刪除DROP DATABASE TestDB GOCREATE DATABASE TestDBON PRIMARY -- 數(shù)據(jù)庫主文件( NAME = TestDB1,FILENAME = 'd:\TestDB1.mdf',SIZE = 20,MAXSIZE = 100,FILEGROWTH = 10% ),( NAME = TestDB2,FILENAME = 'd:\TestDB2.ndf',SIZE = 10,MAXSIZE = 50,FILEGROWTH = 5% ),FILEGROUP DBGroup1( NAME = TestDB3,FILENAME = 'd:\TestDB3.ndf',SIZE = 10,MAXSIZE = 50,FILEGROWTH = 5 ),( NAME = TestDB4,FILENAME = 'd:\TestDB4.ndf',SIZE = 10,MAXSIZE = 50,FILEGROWTH = 5 ),FILEGROUP DBGroup2( NAME = DB1_Group2,FILENAME = 'd:\DB1_Group2.ndf',SIZE = 10,MAXSIZE = 50,FILEGROWTH = 5 ),( NAME = DB2_Group2,FILENAME = 'd:\DB2_Group2.ndf',SIZE = 10,MAXSIZE = 50,FILEGROWTH = 5 )LOG ON( NAME = TestDB_log,FILENAME = 'd:\TestDB_log.ldf',SIZE = 50MB,MAXSIZE = 500MB,FILEGROWTH = 10MB ) ;IT技術(shù)分享社區(qū)
個人博客網(wǎng)站:https://programmerblog.xyz
文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠(yuǎn)程辦公:常用的遠(yuǎn)程協(xié)助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎(chǔ)知識硬件:斷路器、接觸器、繼電器基礎(chǔ)知識
總結(jié)
以上是生活随笔為你收集整理的SQLServer创建数据库详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1-6docker数据共享与持久化
- 下一篇: SQLServer数据库收缩相关知识笔记