在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...

面试题 相关文章推荐
会话Bean的种类
Nov 07 面试题
写一个方法1000的阶乘
Nov 21 面试题
C语言编程题
Mar 09 面试题
杭州时比特电子有限公司SQL
Aug 22 面试题
介绍一下内联、左联、右联
Dec 31 面试题
什么是重载?CTS、CLS和CLR分别做何解释
May 06 面试题
C#如何判断当前用户是否输入某个域
Dec 07 面试题
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的
Jul 24 面试题
JVM是一个编译程序还是解释程序
Sep 11 面试题
精选干货:Java精选笔试题附答案
Jan 18 面试题
介绍一下javax.servlet.Servlet接口及其主要方法
Nov 30 面试题
J2ee常用的设计模式?说明工厂模式
May 21 面试题
介绍一下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数据类型判断函数有哪些
2013/09/23 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
2014/01/14 PHP
thinkphp循环结构用法实例
2014/11/24 PHP
php建立Ftp连接的方法
2015/03/07 PHP
php利用事务处理转账问题
2015/04/22 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
PHP 信号管理知识整理汇总
2017/02/19 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
php实现在线考试系统【附源码】
2018/09/18 PHP
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
JS 判断代码全收集
2009/04/28 Javascript
一个js写的日历(代码部分网摘)
2009/09/20 Javascript
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
jQuery CSS3相结合实现时钟插件
2016/01/08 Javascript
JavaScript对象参数的引用传递
2016/01/14 Javascript
vue,angular,avalon这三种MVVM框架优缺点
2016/04/27 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
2016/11/29 Javascript
JS仿京东移动端手指拨动切换轮播图效果
2020/04/10 Javascript
微信小程序 支付简单实例及注意事项
2017/01/06 Javascript
Vue.js中的图片引用路径的方式
2017/07/28 Javascript
详解用node搭建简单的静态资源管理器
2017/08/09 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
Node.js动手撸一个静态资源服务器的方法
2019/03/09 Javascript
关于Layui Table隐藏列问题
2019/09/16 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
浅谈python新式类和旧式类区别
2019/04/26 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
Python模块 _winreg操作注册表
2020/02/05 Python
python seaborn heatmap可视化相关性矩阵实例
2020/06/03 Python
护士自荐信
2013/10/25 职场文书
个人自荐书
2013/12/20 职场文书
公司年会演讲稿范文
2014/01/11 职场文书
居住证明范文
2015/06/17 职场文书
2016年春季运动会加油稿
2015/07/22 职场文书
排查MySQL生产环境索引没有效果
2022/04/11 MySQL