在SQL Server中创建数据库主要有那种方式


Posted in 面试题 onSeptember 10, 2013
在SQL Server中创建数据库主要有两种方法,第一种是在SQL Server Management Studio中使用向导创建数据库;第二种是执行Transact-SQL语句创建数据库。下面我们分别进行介绍。

(1)使用SQL Server Management Studio创建数据库

在SQL Server Management Studio中,可以使用向导创建数据库,步骤如下:

1. 打开SQL Server Management Studio。

2. 右击“数据库”对象,在弹出式菜单中选择“新建数据库”菜单项,打开“新建数据库”对话框

3. 在“常规”页,可以定义数据库的名称为EAMS、数据库文件、数据库的所有者、排序规则、恢复模型,以及是否使用全文索引。

4. 在“选项”页,可以定义数据库的一些选项,包括自动选项、游标选项、混杂选项、恢复选项、行级版本选项和状态选项

5. 在“文件组”页,显示文件组和文件的统计信息,同时还可以设置是否采用默认值

6. 在“扩展属性”页,可以定义数据库的一些扩展属性,如图5所示。

7. 当完成各个选项的定义之后,单击【OK】按钮,SQL Server数据库引擎会创建所定义的数据库。

(2)使用Transact-SQL创建数据库

Transact-SQL提供了创建数据库的语句:CREATE DATABASE,其语法格式如下:

CREATE DATABASE database_name

[ ON

[ [ ,...n ] ]

[ , [ ,...n ] ]

]

[

[ LOG ON { [ ,...n ] } ]

[ COLLATE collation_name ]

[ FOR { ATTACH [ WITH ]

| ATTACH_REBUILD_LOG } ]

[ WITH ]

]

[;]

::=

[ PRIMARY ]

(

[ 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 | % ] ]

) [ ,...n ]

::=

FILEGROUP filegroup_name

[ ,...n ]

::=

DB_CHAINING { ON | OFF }

| TRUSTWORTHY { ON | OFF }

::=

ENABLE_BROKER

| NEW_BROKER

| ERROR_BROKER_CONVERSATIONS

Create a Database Snapshot

CREATE DATABASE database_snapshot_name

ON

(

NAME = logical_file_name,

FILENAME = ‘os_file_name’

) [ ,...n ]

AS SNAPSHOT OF source_database_name

[;]

参数说明如下:

l database_name,新数据库的名称。数据库名称在服务器中必须唯一,并且符合标识符的规则。database_name 最多可以包含 128 个字符,除非没有为日志指定逻辑名。如果没有指定日志文件的逻辑名,则SQL Server会通过向 database_name 追加后缀来生成逻辑名。该操作要求 database_name 在 123 个字符之内,以便生成的日志文件逻辑名少于 128 个字符。

l ON,指定显式定义用来存储数据库数据部分的磁盘文件(数据文件)。该关键字后跟以逗号分隔的 项列表, 项用以定义主文件组的数据文件。主文件组的文件列表后可跟以逗号分隔的 项列表(可选), 项用以定义用户文件组及其文件。

l N,占位符,表示可以为新数据库指定多个文件。

l LOG ON,指定显式定义用来存储数据库日志的磁盘文件(日志文件)。该关键字后跟以逗号分隔的 项列表, 项用以定义日志文件。如果没有指定 LOG ON,将自动创建一个日志文件,该文件使用系统生成的名称,大小为数据库中所有数据文件总大小的 25%。

l FOR LOAD,支持该子句是为了与早期版本的 SQL Server 兼容。数据库在打开 dbo use only 数据库选项的情况下创建,并且将其状态设置为正在装载。

l FOR ATTACH,指定从现有的一组操作系统文件中附加数据库。必须有指定第一个主文件的 条目。至于其它 条目,只需要与第一次创建数据库或上一次附加数据库时路径不同的文件的那些条目。必须为这些文件指定 条目。附加的数据库必须使用与 SQL Server 相同的代码页和排序次序创建。应使用 sp_attach_db 系统存储过程,而不要直接使用 CREATE DATABASE FOR ATTACH。只有必须指定 16 个以上的 项目时,才需要使用 CREATE DATABASE FOR ATTACH。 如果将数据库附加到的服务器不是该数据库从中分离的服务器,并且启用了分离的数据库以进行复制,则应该运行 sp_removedbreplication 从数据库删除复制。

l collation_name,指定数据库的默认排序规则。排序规则名称既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。如果没有指定排序规则,则将 SQL Server 实例的默认排序规则指派为数据库的排序规则。

l PRIMARY,指定关联的 列表定义主文件。主文件组包含所有数据库系统表。还包含所有未指派给用户文件组的对象。主文件组的第一个 条目成为主文件,该文件包含数据库的逻辑起点及其系统表。一个数据库只能有一个主文件。如果没有指定 PRIMARY,那么 CREATE DATABASE 语句中列出的第一个文件将成为主文件。

l NAME,为由 定义的文件指定逻辑名称。如果指定了 FOR ATTACH,则不需要指定 NAME 参数。

l logical_file_name,用来在创建数据库后执行的 Transact-SQL 语句中引用文件的名称。logical_file_name 在数据库中必须唯一,并且符合标识符的规则。该名称可以是字符或 Unicode 常量,也可以是常规标识符或定界标识符。

l FILENAME,为 定义的文件指定操作系统文件名。

l os_file_name,操作系统创建 定义的物理文件时使用的路径名和文件名。os_file_name 中的路径必须指定 SQL Server 实例上的目录。os_file_name 不能指定压缩文件系统中的目录。如果文件在原始分区上创建,则 os_file_name 必须只指定现有原始分区的驱动器字母。每个原始分区上只能创建一个文件。原始分区上的文件不会自动增长;因此,os_file_name 指定原始分区时,不需要指定 MAXSIZE 和 FILEGROWTH 参数。

l SIZE,指定 中定义的文件的大小。如果主文件的 中没有提供 SIZE 参数,那么 SQL Server 将使用 model 数据库中的主文件大小。如果次要文件或日志文件的 中没有指定 SIZE 参数,则 SQL Server 将使文件大小为 1 MB。

l Size, 中定义的文件的初始大小。可以使用千字节 (KB)、兆字节 (MB)、千兆字节 (GB) 或兆兆字节 (TB) 后缀。默认值为 MB。指定一个整数,不要包含小数位。size 的最小值为 512 KB。如果没有指定 size,则默认值为 1 MB。为主文件指定的大小至少应与 model 数据库的主文件大小相同。

l MAXSIZE,指定 中定义的文件可以增长到的最大大小。

l max_size, 中定义的文件可以增长到的最大大小。可以使用千字节 (KB)、兆字节 (MB)、千兆字节 (GB) 或兆兆字节 (TB) 后缀。默认值为 MB。指定一个整数,不要包含小数位。如果没有指定 max_size,那么文件将增长到磁盘变满为止。

l UNLIMITED,指定 中定义的文件将增长到磁盘变满为止。

l FILEGROWTH,指定 中定义的文件的增长增量。文件的 FILEGROWTH 设置不能超过 MAXSIZE 设置。

l growth_increment,每次需要新的空间时为文件添加的空间大小。指定一个整数,不要包含小数位。0 值表示不增长。该值可以 MB、KB、GB、TB 或百分比 (%) 为单位指定。如果未在数量后面指定 MB、KB 或 %,则默认值为 MB。如果指定 %,则增量大小为发生增长时文件大小的指定百分比。如果没有指定 FILEGROWTH,则默认值为 10%,最小值为 64 KB。指定的大小舍入为最接近的 64 KB 的倍数。

l ,控制文件组的属性。文件组不能在数据库快照上定义。

l FILEGROUP,定义文件组的逻辑名。

l filegroup_name,表示在创建数据库之后,在Transact-SQL语句中引用文件组的名称。filegroup_name在数据库中必须唯一,不能是系统提供的名称,如PRIMARY和PRIMARY_LOG。名称必须同标识符的规则保持一致。

l default,定义文件组为特定文件组类型的默认数据库文件组。

l DB_CHAINING { ON | OFF },当设置为ON的时候,数据库可以为交叉数据库所有者关系链中的源或者目标。当设置为OFF的时候,数据库不能参与交叉数据库所有者关系链,对于用户数据库,可以修改这个选项,但是不能修改系统数据库的该选项。默认值为OFF。

l TRUSTWORTHY { ON | OFF },当设置为ON的时候,数据库模块(如视图、用户自定义函数或者存储过程)允许访问数据库外的资源。当设置为OFF的时候,数据库模块不能访问数据库之外的资源。默认值为OFF。

l ,当授予FOR ATTACH子句的时候,才能设置Service Broker选项。

l ENABLE_BROKER,定义数据库是否启用Service Broker。

l NEW_BROKER,在sys数据库中和恢复数据库中创建新的service_broker_guid。

l ERROR_BROKER_CONVERSATIONS,终止所有发生错误的会话。

l database_snapshot_name,定义新数据库的快照名。

l ON (NAME =logical_file_name, FILENAME =’os_file_name’) [ ,... n ] ,对于创建一个数据库快照,在源数据库中定义文件列表。

l AS SNAPSHOT OF source_database_name,定义创建的数据库为一个源数据库的数据库快照。

Tags in this post...

面试题 相关文章推荐
什么是接口(Interface)?
Feb 01 面试题
error和exception有什么区别
Oct 02 面试题
什么是Deployment descriptors;都有什么类型的部署描述符
Jul 28 面试题
北承题目(C++)
May 16 面试题
阿尔卡特(中国)的面试题目
Aug 20 面试题
经典C++面试题一
Nov 06 面试题
一套.net面试题及答案
Nov 02 面试题
局域网标准
Sep 10 面试题
介绍一下linux的文件权限
Feb 15 面试题
飞利信loadrunner和软件测试笔试题
Sep 22 面试题
JAVA招聘远程笔试题
Jul 23 面试题
掌上明珠Java程序员面试总结
Feb 23 面试题
介绍一下SQL Server的全文索引
Aug 15 #面试题
什么是表空间(tablespace)和系统表空间(System tablespace)
Feb 25 #面试题
数据库的约束含义
Sep 09 #面试题
ddl,dml和dcl的含义
May 08 #面试题
索引覆盖(Index Covering)查询含义
Feb 18 #面试题
为什么group by 和order by会使查询变慢
May 16 #面试题
写出SQL四条最基本的数据操作语句(DML)
Dec 12 #面试题
You might like
解析如何用php screw加密php源代码
2013/06/20 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
2014/07/19 PHP
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
2007/02/09 Javascript
如何做到打开一个页面,过几分钟自动转到另一页面
2007/04/20 Javascript
浅谈javascript 面向对象编程
2009/10/28 Javascript
基于jQuery的前端数据通用验证库
2011/08/08 Javascript
jQuery控制TR显示隐藏的三种常用方法
2014/08/21 Javascript
JQuery中DOM事件绑定用法详解
2015/06/13 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
Bootstrap文件上传组件之bootstrap fileinput
2016/11/25 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
2017/10/19 Javascript
Vue中添加手机验证码组件功能操作方法
2017/12/07 Javascript
Vue+Express实现登录注销功能的实例代码
2019/05/05 Javascript
react 组件传值的三种方法
2019/06/03 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
2019/11/01 Javascript
在Python中使用异步Socket编程性能测试
2014/06/25 Python
儿童编程python入门
2018/05/08 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
2018/09/02 Python
浅谈python中拼接路径os.path.join斜杠的问题
2018/10/23 Python
Face++ API实现手势识别系统设计
2018/11/21 Python
PyQt5实现简易计算器
2020/05/30 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
2019/08/10 Python
jupyter notebook中新建cell的方法与快捷键操作
2020/04/22 Python
基于python判断字符串括号是否闭合{}[]()
2020/09/21 Python
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
2013/01/23 HTML / CSS
Spanx塑身衣官网:美国知名内衣品牌
2017/01/11 全球购物
一年级班主任工作总结2014
2014/11/08 职场文书
2014年汽车销售工作总结
2014/12/01 职场文书
银行求职信模板
2015/03/20 职场文书
民事起诉书范本
2015/05/19 职场文书
政审证明范文
2015/06/19 职场文书
承诺书怎么写 ?
2019/04/16 职场文书
对Golang中的FORM相关字段理解
2021/05/02 Golang
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫