日期:2014-05-17  浏览次数:21059 次

关于一个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时,提示
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