关于一个create database的基础题,该怎么解决
关于一个create database的基础题
题目如下:
1、创建一个‘公司业务管理’数据库,文件存储设计如下
1)、数据库主文件:E:\Gsgl\Gsgl.mdf
所属文件组为:PRIMARY
2)、数据库次要文件:E:\Gsgl\Gsgl_gy.ndf
所属文件组为:GR_gy。
3)、数据库次要文件:E:\Gsgl\Gsgl_dd.ndf
所属文件组为:GR_dd。
4)、数据库次要文件:E:\Gsgl\Gsgl_gs.ndf
所属文件组为:GR_gs。
5)、数据库日志文件:E:\Gsgl\Gsgl_log.ldf
要求一: 各文件的初始大小为1M,其它相关属性保留默认值,各文件相应逻辑文件名为
物理文件的主文件名。
要求二:使用命令方式,在创建之前判断服务器中是否存在‘公司业务管理’数据库,有
则先删除。
6、将Northwind数据库中的Suppliers表中的supplierid、companyname、contactname、 contacttitle、city字段数据复制到公司业务管理数据库中的‘供应商表’中,相应字段名改为供应商编号、供应商公司、联系人姓名、联系人职务、供应商所在城市。
7、将Northwind数据库中的Categories表中的categoryid、categoryname、description字段数据复制到公司业务管理数据库中的‘产品类别表’中,相应字段名改为产品类别编号、类别名称、说明
有点想不明白的是要求一,当我把这几个文件初始大小都设置为1M时,提示
(注:用的是sq2008开发版).
------解决方案--------------------
题目如下:
1、创建一个‘公司业务管理’数据库,文件存储设计如下
1)、数据库主文件:E:\Gsgl\Gsgl.mdf
所属文件组为:PRIMARY
2)、数据库次要文件:E:\Gsgl\Gsgl_gy.ndf
所属文件组为:GR_gy。
3)、数据库次要文件:E:\Gsgl\Gsgl_dd.ndf
所属文件组为:GR_dd。
4)、数据库次要文件:E:\Gsgl\Gsgl_gs.ndf
所属文件组为:GR_gs。
5)、数据库日志文件:E:\Gsgl\Gsgl_log.ldf
要求一: 各文件的初始大小为1M,其它相关属性保留默认值,各文件相应逻辑文件名为
物理文件的主文件名。
要求二:使用命令方式,在创建之前判断服务器中是否存在‘公司业务管理’数据库,有
则先删除。
6、将Northwind数据库中的Suppliers表中的supplierid、companyname、contactname、 contacttitle、city字段数据复制到公司业务管理数据库中的‘供应商表’中,相应字段名改为供应商编号、供应商公司、联系人姓名、联系人职务、供应商所在城市。
7、将Northwind数据库中的Categories表中的categoryid、categoryname、description字段数据复制到公司业务管理数据库中的‘产品类别表’中,相应字段名改为产品类别编号、类别名称、说明
有点想不明白的是要求一,当我把这几个文件初始大小都设置为1M时,提示
- SQL code
消息 1803,级别 16,状态 1,第 4 行 CREATE DATABASE 语句失败。主文件必须至少是 3 MB 才能容纳 model 数据库的副本。
(注:用的是sq2008开发版).
- SQL code
use master if exists (select * from sysdatabases where name='公司业务管理') drop database 公司业务管理 create database 公司业务管理 on PRIMARY ( name='Gsgl.mdf', filename='E:\Gsgl\Gsgl.mdf', size=1, filegrowth=10% ), filegroup GR_gy( name='Gsgl_gy.ndf', size=1, filename='E:\Gsgl\Gsgl_gy.ndf' ), filegroup GR_dd( name='Gsgl_dd.ndf', size=1, filename='E:\Gsgl\Gsgl_dd.ndf' ), filegroup GR_gs( name='Gsgl_gs.ndf', size=1, filename='E:\Gsgl\Gsgl_gs.ndf' ) LOG ON ( name='Gsgl_gs.ldf', filename='E:\Gsgl\Gsgl_gs.ldf', size=1, filegrowth=5%) go select * into 公司业务管理.dbo.供应商表 from (select supplierid 供应商编号,companyname 供应商公司,contactname 联系人姓名, contacttitle 联系人职务,city 供应商所在城市 from Northwind.dbo.Suppliers) b select * into 公司业务管理.dbo.产品类别表 from (select categoryid 类别编号,categoryname 类别名称,description 说明 from Northwind.dbo.Categories) T
------解决方案--------------------
- SQL code
/*--功能说明 下面的代码是在SQL Server 2000上创建名为 MyDB 的数据库 该数据库包括1个主要数据文件、3个用户定义的文件组和1个日志文件 ALTER DATABASE语句将用户定义文件组指定为默认文件组。 之后,通过指默认的文件组来创建表,并且将图像数据和索引放到指定的文件组中。 最后,将文件组中的指定数据文件删除 --*/ --切换到 master 数据库 USE master GO --A. 创建数据库 MyDB CREATE DATABASE MyDB ON PRIMARY --主文件组和主要数据文件 ( NAME='MyDB_Primary', FILENAME= 'c:\MyDB_Prm.mdf'), FILEGROUP MyDB_FG1 --用户定义文件组1 ( NAME = 'MyDB_FG1_Dat1', FILENAME = 'c:\MyDB_FG1_1.ndf'), --次要数据文件1 ( NAME = 'MyDB_FG1_Dat2', FILENAME = 'd:\MyDB_FG1_2.ndf'), --次要数据文件2 FILEGROUP MyDB_FG2 --用户定义文件组2 ( NAME = 'MyDB_FG1_Dat', FILENAME = 'e:\MyDB_FG2.ndf') --次要数据文件 LOG ON --日志文件 ( NAME='MyDB_log', FILENAME ='d:\MyDB.ldf') GO --B. 修改默认数据文件组 ALTER DATABASE MyDB MODIFY FILEGROUP MyDB_FG1 DEFAULT GO --切换到新建的数据库 MyDB USE MyDB --C. 在默认文件组MyDB_FG1创建表,并且指定图像数据保存在用户定义文件组MMyDB_FG2 CREATE TABLE MyTable ( cola int PRIMARY KEY , colb char(8) , colc image ) TEXTIMAGE_ON MyDB_FG2 --在用户定义文件组MyDB_FG2上创建索引 CREATE INDEX IX_MyTable ON MyTable(cola) ON MyDB_FG2 GO --D. 将要删除数据文件MyDB_FG1_Dat1上的数据转移到其他数据文件中,并且清空数据文件MyDB_FG1_Dat1 DBCC SHRINKFILE(MyDB_FG1_Dat1,EMPTYFILE) --删除数据文件MyDB_FG1_Dat1 ALTER DATABASE MyDB REMOVE FILE MyDB_FG1_Dat1
------解决方案--------------------
- SQL code
CREATE DATABASE database_name [ ON [ < filespec > [ ,...n ] ] [ , < filegroup > [ ,...n ] ] ] [ LOG ON { < filespec > [ ,...n ] } ] [ COLLATE collation_name ] [ FOR LOAD | FOR ATTACH ] < filespec > ::= [ PRIMARY ] ( [ NAME = logical_file_name , ] FILENAME = 'os_file_name' [ , SIZE = size ] [ , MAXSIZE = { max_size | UNLIMITED } ] [ , FILEGROWTH = growth_increment ] ) [ ,...n ] < filegroup > ::= FILEGROUP filegroup_name < filespec > [ ,...n ] 参数 database_name 新数据库的名称。数据库名称在服务器中必须唯一,并且符合标识符的规则。database_name 最多可以包含 128 个字符,除非没有为日志指定逻辑名。如果没有指定日志文件的逻辑名,则 Microsoft® SQL Server™ 会通过向 database_name 追加后缀来生成逻辑名。该操作要求 database_name 在 123 个字符之内,以便生成的日志文件逻辑名少于 128 个字符。 ON 指定显式定义用来存储数据库数据部分的磁盘文件(数据文件)。该关键字后跟以逗号分隔的 <filespec> 项列表,<filespec> 项用以定义主文件组的数据文件。主文件组的文件列表后可跟以逗号分隔的 <filegroup> 项列表(可选),<filegroup> 项用以定义用户文件组及其文件。 n 占位符,表示可以为新数据库指定多个文件。 LOG ON 指定显式定义用来存储数据库日志的磁盘文件(日志文件)。该关键字后跟以逗号分隔的 <filespec> 项列表,<filespec> 项用以定义日志文件。如果没有指定 LOG ON,将自动创建一个日志文件,该文件使用系统生成的名称,大小为数据库中所有数据文件总大小的 25%。 FOR LOAD 支持该子句是为了与早期版本的 Microsoft SQL Server 兼容。数据库在打开 dbo use only 数据库选项的情况下创建,并且将其状态设置为正在装载。SQL Server 7.0 版中不需要该子句,因为 RESTORE 语句可以作为还原操作的一部分重新创建数据库。 FOR ATTACH 指定从现有的一组操作系统文件中附加数据库。必须有指定第一个主文件的 <filespec> 条目。至于其它 <filespec> 条目,只需要与第一次创建数据库或上一次附加数据库时路径不同的文件的那些条目。必须为这些文件指定 <filespec> 条目。附加的数据库必须使用与 SQL Server 相同的代码页和排序次序创建。应使用 sp_attach_db 系统存储过程,而不要直接使用 CREATE DATABASE FOR ATTACH。只有必须指定 16 个以上的 <filespec> 项目时,才需要使用 CREATE DATABASE FOR ATTACH。 如果将数据库附加到的服务器不是该数据库从中分离的服务器,并且启用了分离的数据库以进行复制,则应该运行 sp_removedbreplication 从数据库删除复制。 collation_name 指定数据库的默认排序规则。排序规则名称既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。如果没有指定排序规则,则将 SQL Server 实例的默认排序规则指派为数据库的排序规则。 有关 Windows 和 SQL 排序规则名称的更多信息,请参见 COLLATE。 PRIMARY 指定关联的 <filespec> 列表定义主文件。主文件组包含所有数据库系统表。还包含所有未指派给用户文件组的对象。主文件组的第一个 <filespec> 条目成为主文件,该文件包含数据库的逻辑起点及其系统表。一个数据库只能有一个主文件。如果没有指定 PRIMARY,那么 CREATE DATABASE 语句中列出的第一个文件将成为主文件。 NAME 为由 <filespec> 定义的文件指定逻辑名称。如果指定了 FOR ATTACH,则不需要指定 NAME 参数。 logical_file_name 用来在创建数据库后执行的 Transact-SQL 语句中引用文件的名称。logical_file_name 在数据库中必须唯一,并且符合标识符的规则。该名称可以是字符或 Unicode 常量,也可以是常规标识符或定界标识符。 FILENAME 为 <filespec> 定义的文件指定操作系统文件名。 'os_file_name' 操作系统创建 <filespec> 定义的物理文件时使用的路径名和文件名。os_file_name 中的路径必须指定 SQL Server 实例上的目录。os_file_name 不能指定压缩文件系统中的目录。 如果文件在原始分区上创建,则 os_file_name 必须只指定现有原始分区的驱动器字母。每个原始分区上只能创建一个文件。原始分区上的文件不会自动增长;因此,os_file_name 指定原始分区时,不需要指定 MAXSIZE 和 FILEGROWTH 参数。 SIZE 指定 <filespec> 中定义的文件的大小。如果主文件的 <filespec> 中没有提供 SIZE 参数,那么 SQL Server 将使用 model 数据库中的主文件大小。如果次要文件或日志文件的 <filespec> 中没有指定 SIZE 参数,则 SQL Server 将使文件大小为 1 MB。 size <filespec> 中定义的文件的初始大小。可以使用千字节 (KB)、兆字节 (MB)、千兆字节 (GB) 或兆兆字节 (TB) 后缀。默认值为 MB。指定一个整数,不要包含小数位。size 的最小值为 512 KB。如果没有指定 size,则默认值为 1 MB。为主文件指定的大小至少应与 model 数据库的主文件大小相同。 MAXSIZE 指定 <filespec> 中定义的文件可以增长到的最大大小。 max_size <filespec> 中定义的文件可以增长到的最大大小。可以使用千字节 (KB)、兆字节 (MB)、千兆字节 (GB) 或兆兆字节 (TB) 后缀。默认值为 MB。指定一个整数,不要包含小数位。如果没有指定 max_size,那么文件将增长到磁盘变满为止。 说明 在磁盘即将变满时,Microsoft Windows NT® S/B 系统日志会警告 SQL Server 系统管理员。 UNLIMITED 指定 <filespec> 中定义的文件将增长到磁盘变满为止。 FILEGROWTH 指定 <filespec> 中定义的文件的增长增量。文件的 FILEGROWTH 设置不能超过 MAXSIZE 设置。 growth_increment 每次需要新的空间时为文件添加的空间大小。指定一个整数,不要包含小数位。0 值表示不增长。该值可以 MB、KB、GB、TB 或百分比 (%) 为单位指定。如果未在数量后面指定 MB、KB 或 %,则默认值为 MB。如果指定 %,则增量大小为发生增长时文件大小的指定百分比。如果没有指定 FILEGROWTH,则默认值为 10%,最小值为 64 KB。指定的大小舍入为最接近的 64 KB 的倍数。