数据库创建 create database《一》
来源:互联网 发布:ldc数据 编辑:程序博客网 时间:2024/04/30 07:44
CREATE DATABASE database_name [ ON { [ PRIMARY ] [ <filespec> [ ,...n ] [ , <filegroup> [ ,...n ] ] [ LOG ON { <filespec> [ ,...n ] } ] } ] [ COLLATE collation_name ] [ WITH <external_access_option> ]][;]To attach a databaseCREATE DATABASE database_name ON <filespec> [ ,...n ] FOR { ATTACH [ WITH <service_broker_option> ] | ATTACH_REBUILD_LOG }[;]<filespec> ::= {( NAME =logical_file_name, FILENAME = { 'os_file_name' | 'filestream_path' } [ , SIZE =size [ KB | MB | GB | TB ] ] [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ] [ , FILEGROWTH =growth_increment [ KB | MB | GB | TB | % ] ]) [ ,...n ]}<filegroup> ::= {FILEGROUP filegroup_name [ CONTAINS FILESTREAM ] [ DEFAULT ] <filespec> [ ,...n ]}<external_access_option> ::={ [ DB_CHAINING { ON | OFF } ] [ , TRUSTWORTHY { ON | OFF } ]}<service_broker_option> ::={ ENABLE_BROKER | NEW_BROKER | ERROR_BROKER_CONVERSATIONS}Create a database snapshotCREATE DATABASE database_snapshot_name ON ( NAME = logical_file_name, FILENAME ='os_file_name' ) [ ,...n ] AS SNAPSHOT OF source_database_name[;]
创建、修改或删除用户数据库后,应备份 master 数据库。
CREATE DATABASE 语句必须以自动提交模式(默认事务管理模式)运行,不允许在显式或隐式事务中使用。有关详细信息,请参阅自动提交事务。
使用一条 CREATE DATABASE 语句即可创建数据库以及存储该数据库的文件。SQL Server 通过使用以下步骤实现 CREATE DATABASE 语句:
SQL Server 使用 model 数据库的副本初始化该数据库及其元数据。
为数据库分配 Service Broker GUID。
然后,数据库引擎使用空页填充数据库的剩余部分,包含记录数据库中空间使用情况的内部数据页除外。有关详细信息,请参阅数据库文件初始化。
在一个 SQL Server 的实例中最多可以指定 32,767 个数据库。
每个数据库都有一个所有者,它可以在数据库中执行特殊操作。所有者是创建数据库的用户。可以使用sp_changedbowner 更改数据库所有者。
数据库文件和文件组
每个数据库至少有两个文件(一个主文件和一个事务日志文件)和一个文件组。可以为每个数据库指定最多 32,767 个文件和 32,767 个文件组。有关详细信息,请参阅文件和文件组体系结构。
在创建数据库时,请根据数据库中预期的最大数据量,创建尽可能大的数据文件。有关详细信息,请参阅使用文件和文件组管理数据库增长。
建议使用存储区域网络 (SAN)、基于 iSCSI 的网络或本地附加的磁盘来存储 SQL Server 数据库文件,因为该配置使 SQL Server 的性能和可靠性得到了优化。
数据库快照
可以使用 CREATE DATABASE 语句创建现有数据库(“源数据库”)的只读静态视图(“数据库快照”)。当创建快照时,源数据库已存在,所以数据库快照在事务上与源数据库一致。源数据库可以具有多个快照。
创建数据库快照时,CREATE DATABASE 语句不能引用日志文件、脱机文件、还原文件和不存在的文件。
如果创建数据库快照失败,快照便成为可疑快照,必须将其删除。有关详细信息,请参阅 DROP DATABASE (Transact-SQL)。
每个快照都将一直存在,直到使用 DROP DATABASE 将其删除为止。
有关详细信息,请参阅数据库快照和数据库快照的限制和要求。
数据库选项
创建数据库时,总会自动设置几个数据库选项。有关这些选项及其默认设置的列表,请参阅设置数据库选项。可以使用ALTER DATABASE 语句修改这些选项。
model 数据库和创建新数据库
model 数据库中的所有用户定义对象都将复制到所有新创建的数据库中。可以向 model 数据库中添加任何对象(例如表、视图、存储过程、数据类型等),以将这些对象包括到所有新建数据库中。
当指定 CREATE DATABASE database_name 语句而不带其他大小参数时,主数据文件将与 model 数据库中的主文件具有相同的大小。
除非指定了 FOR ATTACH,否则每个新数据库都从 model 数据库继承数据库选项设置。例如,在 model 和创建的任何新数据库中,数据库选项 auto shrink 都设置为true。如果更改了 model 数据库中的选项,则这些新选项设置也将用于您所创建的所有新数据库中。在 model 数据库中的更改操作不会影响现有数据库。如果在 CREATE DATABASE 语句中指定了 FOR ATTACH,则新数据库将继承原始数据库的数据库选项设置。
查看数据库信息
可以使用目录视图、系统函数和系统存储过程返回有关数据库、文件和文件组的信息。有关详细信息,请参阅查看数据库元数据。
要求具有 CREATE DATABASE、CREATE ANY DATABASE 或 ALTER ANY DATABASE 的权限。
为了控制对运行 SQL Server 实例的计算机上的磁盘使用,通常只有少数登录帐户才有创建数据库的权限。
对数据文件和日志文件的权限
在 SQL Server 中,会对每个数据库的数据文件和日志文件设置特定的权限。每当对数据库执行下列操作时,便会设置下列权限:
创建
修改以添加新文件
附加
备份
分离
还原
如果这些文件位于具有打开权限的目录中,那么以上权限可以防止文件被意外篡改。有关详细信息,请参阅保护数据和日志文件的安全。
Microsoft SQL Server 2005 Express Edition 不设置数据文件和日志文件权限。
A. 创建未指定文件的数据库
以下示例创建名为 mytest 的数据库,并创建相应的主文件和事务日志文件。因为语句没有 <filespec> 项,所以主数据库文件的大小为 model 数据库主文件的大小。事务日志将设置为下列值中的较大者:512 KB 或主数据文件大小的 25%。因为没有指定 MAXSIZE,文件可以增大到填满所有可用的磁盘空间为止。此示例演示如何在创建mytest 数据库之前删除名为 mytest 的数据库(如果它存在)。
USE master;GOCREATE DATABASE mytest;GO-- Verify the database files and sizesSELECT name, size, size*1.0/128 AS [Size in MBs] FROM sys.master_filesWHERE name = N'mytest';GO
B. 创建指定数据和事务日志文件的数据库
下面的示例将创建数据库 Sales。因为没有使用关键字 PRIMARY,第一个文件 (Sales_dat) 将成为主文件。因为在Sales_dat 文件的 SIZE 参数中没有指定 MB 或 KB,将使用 MB 并按 MB 分配。Sales_log 文件以 MB 为单位进行分配,因为SIZE 参数中显式声明了 MB 后缀。
USE master;GOCREATE DATABASE SalesON ( NAME = Sales_dat, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\saledat.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 )LOG ON( NAME = Sales_log, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\salelog.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) ;GO
C. 通过指定多个数据和事务日志文件创建数据库
以下示例创建数据库 Archive,该数据库具有三个100-MB 数据文件和两个 100-MB 事务日志文件。主文件是列表中的第一个文件,并使用PRIMARY 关键字显式指定。事务日志文件在 LOG ON 关键字后指定。请注意用于FILENAME 选项中各文件的扩展名:.mdf 用于主数据文件,.ndf 用于辅助数据文件,.ldf 用于事务日志文件。此示例将数据库放置于D 驱动器上,而非 master 数据库中。
USE master;GOCREATE DATABASE Archive ONPRIMARY (NAME = Arch1, FILENAME = 'D:\SalesData\archdat1.mdf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20), ( NAME = Arch2, FILENAME = 'D:\SalesData\archdat2.ndf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20), ( NAME = Arch3, FILENAME = 'D:\SalesData\archdat3.ndf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20)LOG ON (NAME = Archlog1, FILENAME = 'D:\SalesData\archlog1.ldf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20), (NAME = Archlog2, FILENAME = 'D:\SalesData\archlog2.ldf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20) ;GO
D. 创建具有文件组的数据库
以下示例创建数据库 Sales,该数据库具有以下文件组:
包含文件 Spri1_dat 和Spri2_dat 的主文件组。将这些文件的 FILEGROWTH 增量指定为15%。
名为 SalesGroup1 的文件组,其中包含文件SGrp1Fi1 和 SGrp1Fi2。
名为 SalesGroup2 的文件组,其中包含文件SGrp2Fi1 和 SGrp2Fi2。
此示例将数据和日志文件放置于不同的磁盘上,以便提高性能。
USE master;GOCREATE DATABASE SalesON PRIMARY( NAME = SPri1_dat, FILENAME = 'D:\SalesData\SPri1dat.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 15% ),( NAME = SPri2_dat, FILENAME = 'D:\SalesData\SPri2dt.ndf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 15% ),FILEGROUP SalesGroup1( NAME = SGrp1Fi1_dat, FILENAME = 'D:\SalesData\SG1Fi1dt.ndf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ),( NAME = SGrp1Fi2_dat, FILENAME = 'D:\SalesData\SG1Fi2dt.ndf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ),FILEGROUP SalesGroup2( NAME = SGrp2Fi1_dat, FILENAME = 'D:\SalesData\SG2Fi1dt.ndf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ),( NAME = SGrp2Fi2_dat, FILENAME = 'D:\SalesData\SG2Fi2dt.ndf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 )LOG ON( NAME = Sales_log, FILENAME = 'E:\SalesLog\salelog.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) ;GO
E. 附加数据库
以下示例分离在示例 D 中创建的数据库 Archive,然后使用FOR ATTACH 子句附加该数据库。Archive 定义为具有多个数据和日志文件。但是,由于文件的位置自创建后没有发生更改,所以只需在FOR ATTACH 子句中指定主文件。从 SQL Server 2005 开始,要附加的数据库中包含的所有全文文件也将随数据库一起附加。
USE master;GOsp_detach_db Archive;GOCREATE DATABASE Archive ON (FILENAME = 'D:\SalesData\archdat1.mdf') FOR ATTACH ;GO
F. 创建数据库快照
以下示例创建数据库快照 sales_snapshot0600。由于数据库快照是只读的,所以不能指定日志文件。为了符合语法要求,指定了源数据库中的每个文件,但没有指定文件组。
该示例的源数据库是在示例 D 中创建的 Sales 数据库。
USE master;GOCREATE DATABASE sales_snapshot0600 ON ( NAME = SPri1_dat, FILENAME = 'D:\SalesData\SPri1dat_0600.ss'), ( NAME = SPri2_dat, FILENAME = 'D:\SalesData\SPri2dt_0600.ss'), ( NAME = SGrp1Fi1_dat, FILENAME = 'D:\SalesData\SG1Fi1dt_0600.ss'), ( NAME = SGrp1Fi2_dat, FILENAME = 'D:\SalesData\SG1Fi2dt_0600.ss'), ( NAME = SGrp2Fi1_dat, FILENAME = 'D:\SalesData\SG2Fi1dt_0600.ss'), ( NAME = SGrp2Fi2_dat, FILENAME = 'D:\SalesData\SG2Fi2dt_0600.ss')AS SNAPSHOT OF Sales ;GO
G. 创建数据库并指定排序规则名称和选项
下面的示例将创建数据库 MyOptionsTest。指定了排序规则名称,并将TRUSTYWORTHY 和 DB_CHAINING 选项设置为ON。
USE master;GOIF DB_ID (N'MyOptionsTest') IS NOT NULLDROP DATABASE MyOptionsTest;GOCREATE DATABASE MyOptionsTestCOLLATE French_CI_AIWITH TRUSTWORTHY ON, DB_CHAINING ON;GO--Verifying collation and option settings.SELECT name, collation_name, is_trustworthy_on, is_db_chaining_onFROM sys.databasesWHERE name = N'MyOptionsTest';GO
H. 附加已移动的全文目录
以下示例同时附加全文目录 AdvWksFtCat 以及AdventureWorks2008R2 数据和日志文件。在该示例中,将全文目录从其默认位置移动到新位置 c:\myFTCatalogs。数据和日志文件保留在其默认位置。
USE master;GO--Detach the AdventureWorks2008R2 databasesp_detach_db AdventureWorks2008R2;GO-- Physically move the full text catalog to the new location.--Attach the AdventureWorks2008R2 database and specify the new location of the full-text catalog.CREATE DATABASE AdventureWorks2008R2 ON (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\AdventureWorks2008R2_Data.mdf'), (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\AdventureWorks2008R2_log.ldf'), (FILENAME = 'c:\myFTCatalogs\AdvWksFtCat')FOR ATTACH;GO
I. 创建指定一个行文件组和两个 FILESTREAM 文件组的数据库
下面的示例将创建数据库 FileStreamDB。该数据库在创建之时包含一个行文件组和两个 FILESTREAM 文件组。每个文件组都包含一个文件:
FileStreamDB_data 包含行数据。它包含一个文件,即带有默认路径的FileStreamDB_data.mdf。
FileStreamPhotos 包含 FILESTREAM 数据。它包含一个 FILESTREAM 数据容器FSPhotos,位于 C:\MyFSfolder\Photos。它被标记为默认 FILESTREAM 文件组。
FileStreamResumes 包含 FILESTREAM 数据。它包含一个位于C:\MyFSfolder\Resumes 中的 FILESTREAM 数据容器 FSResumes。
USE master;GOIF DB_ID (N'FileStreamDB') IS NOT NULLDROP DATABASE FileStreamDB;GO-- Get the SQL Server data path.DECLARE @data_path nvarchar(256);SET @data_path = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1) FROM master.sys.master_files WHERE database_id = 1 AND file_id = 1); -- Execute the CREATE DATABASE statement.EXECUTE ('CREATE DATABASE FileStreamDBON PRIMARY ( NAME = FileStreamDB_data ,FILENAME = ''' + @data_path + 'FileStreamDB_data.mdf'' ,SIZE = 10MB ,MAXSIZE = 50MB ,FILEGROWTH = 15% ),FILEGROUP FileStreamPhotos CONTAINS FILESTREAM DEFAULT ( NAME = FSPhotos ,FILENAME = ''C:\MyFSfolder\Photos''-- SIZE, MAXSIZE, FILEGROWTH should not be specified here.-- If they are specified an error will be raised. ),FILEGROUP FileStreamResumes CONTAINS FILESTREAM ( NAME = FileStreamResumes ,FILENAME = ''C:\MyFSfolder\Resumes'' ) LOG ON ( NAME = FileStream_log ,FILENAME = ''' + @data_path + 'FileStreamDB_log.ldf'' ,SIZE = 5MB ,MAXSIZE = 25MB ,FILEGROWTH = 5MB )');GO
- 数据库创建 create database《一》
- create database 创建数据库
- 用create database创建数据库
- 命令创建数据库----------create database-----------------
- 四, 创建数据库 CREATE DATABASE
- 用CREATE DATABASE语句创建数据库
- Oracle11g 使用create database手动创建数据库
- 使用create database语句创建数据库的详细操作步骤
- SQL高级语句-CREATE DATABASE 用于创建数据库。
- 手工创建cdb数据库(create database语句)
- Oracle 11g利用Create Database手工创建数据库
- 用CREATE DATABASE创建表
- 数据库学习之CREATE DATABASE
- create database手工新建数据库
- 【数据库新手】关于创建数据库过程失败,“master”中拒绝了CREATE DATABASE权限问题
- 微软认证考试70-461-Create Database Objects(创建数据库对象)-24%比重
- SQLite 创建数据库(http://www.w3cschool.cc/sqlite/sqlite-create-database.html)
- MySQL创建数据库时判断是否存在,mysql create database 指定utf-8编码
- Hibernate中Criteria的完整用法
- 异步图片加载控件
- 《新日语基础教程》学习笔记——第九课
- LED和七段数码管限流电阻的大小计算
- 各种数据结构与算法知识入门经典
- 数据库创建 create database《一》
- Android学习--自定义PreferenceActivity
- 编程珠玑第15章字符串stl set和map容器排序字符串
- Log4Erl 使用小记
- 房价什么时候能真正降下来?
- hdu 1425 快排&模板
- 说的不错
- [p2p]UDP用打洞技术穿透NAT的原理与实现
- Type conversions with implicit and explicit operators