1、实验2 数据库的创建和管理学号: 2011193158 姓名:韩江玲一、实验目的:1、 掌握使用企业管理器创建SQL Server数据库的方法;2、掌握使用TSQL语言创建SQL Server数据库的方法;3、掌握附加和分离数据库的方法;4、掌握使用企业管理器或存储过程查看SQL数据库属性的方法;5、熟悉数据库的收缩、更名和删除;6、掌握使用企业管理器或sp_dboption存储过程修改数据库选项的方法。二、实验内容和步骤: 本次实验所创建数据库(包括数据库文件和事务日志)存放位置都为“D:TestDB。因此首先在D盘下新建文件夹TestDB。1。 数据库的创建创建数据库的过程实际上就是为数据
2、库设计名称、设计所占用的存储空间和文件存放位置的过程。实验内容1:使用SQL Server企业管理器创建一个数据库,具体要求如下:1)数据库名称为Test1.2)主要数据文件:逻辑文件名为Test1_Data1,物理文件名为Test1_Data1.mdf,初始容量为1MB,最大容量为10MB,递增量为1MB.3)次要数据文件:逻辑文件名为Test1_Data2,物理文件名为Test1_Data2。ndf,初始容量为1MB,最大容量为10MB,递增量为1MB。4)事务日志文件:逻辑文件名为Test1_Log,物理文件名为Test1_Log.ldf,初始容量为1MB,大容量为5MB,递增量为1MB
3、。其他选项为默认值。注:我在创建数据库的时候,系统要求主文件(Test1_data1和Test1_data2)的大小不能小于3MB,所以在本例中我设置的主文件的初始大小均为3MB实验内容2:用TransactSQL(TSQL)语句创建数据库,实验步骤:启动“查询分析器”,在编辑窗口输入SQL语句。用TSQL语句创建一个名为teach的数据库,它由5MB的主数据文件、2MB的次数据文件和1MB的日志文件组成.并且主数据文件以2MB的增长速度增长,其最大容量为15MB;次数据文件以10的增长速度增长,其最大容量为10MB;事务日志文件以1MB增长速度增长,其最大日志文件大小为10MB。运行完语句后
4、,仔细查看结果框中的消息。提示:在查询分析器中输入如下SQL语句。CREATE DATABASE teachOn(name= teach_data1,filename= d:TestDBteach_data1.mdf ,size=5,maxsize=15,filegrowth=2),( name= teach_data2,filename= d:TestDBteach_data2.ndf ,size=5,maxsize=10,filegrowth=10%)log on( name=teach_log,filename= d:TestDBteach_log.ldf ,size=1,maxsize
5、=10,filegrowth=1)注:要想这段TSQL语句能够成功执行需要实现在D盘下面建一个TestDB文件夹,不然系统会找不到指定的根目录名称而执行失败2 数据库的管理2.1 数据库的分离与附加将teach数据库与服务器分离.可以使用企业管理器或SQL语言对数据库进行分离的操作。分离数据库的存储过程是sp_detach_db,附加数据库的存储过程是sp_attach_db。实验内容3: 分离数据库teach提示:sp_detach_db teach语句执行成功后,打开企业管理器,查看是否存在该数据库对象。若出现“无法分离 数据库 teach,因为它当前正在使用.”问题,应把企业管理器关闭。
6、注:将删除链接选项选上,然后点击确定就可以成功将该数据库分离了实验内容4: 附加数据库提示:sp_attach_db teach,d:TestDBteach_data1.mdf .语句执行成功后,打开企业管理器,查看是否存在该数据库对象。首先定位数据库所在路径接着查看数据库添加成功:查询数据库附加成功:2。2 查看和修改数据库属性数据库创建以后,可以使用企业管理器或SQL语言来查看或修改数据库的属性。使用企业管理器的方法是右击数据库名称,在快捷菜单中选择“属性,然后数据库属性对话框中就可以查看或修改数据库的属性。也可以使用sp_helpdb、sp_spaceused、sp_helpfile和s
7、p_helpfilegroup等存储过程查看和数据库有关的属性.修改数据库属性可以使用ALTER DATABASE命令.实验内容5:使用sp_ helpdb存储过程查看teach数据库的信息,然后企业管理器将teach数据库的事务日志文件的增长大小改为按2MB字节增长,再使用sp_ helpdb存储过程查看student数据库的信息.提示:在查询分析器中输入如下SQL语句:sp_helpdb teach使用sp_ helpdb存储过程查看teach数据库的信息将teach数据库的事务日志文件的增长大小改为按2MB字节增长使用sp_ helpdb存储过程查看更新后的teach数据库的信息实验内容
8、6:使用ALTER DATABASE命令为teach数据库添加一个新的数据文件,文件逻辑名为teach3,初始大小为2MB,增长值为1MB,其他属性默认。 提示:在查询分析器中输入如下SQL语句:ALTER DATABASE teachADD FILE( name= teach_data3,filename= d:TestDBteach_data3.ndf ,size=2,filegrowth=1)执行TSQL语句查看更改后的数据库信息2.3 数据库的收缩数据库收缩可以缩小数据库的空闲空间。可以使用企业管理器或SQL语言对数据库进行收缩工作。收缩数据库使用的SQL语句是DBCC SHRINKD
9、ATABASE命令.也可以使用ALTER DATABASE的SET子句或sp_dboption将数据库设为自动收缩。实验内容7:将teach数据库设为自动收缩。提示:1)使用企业管理器。打开企业管理器选择要收缩的数据库属性选项自动收缩(给服务器性能带来额外负担) 2)使用SQL语句:DBCC SHRINKDATABASE(teach) 其他:DBCC SHRINKDATABASE (UserDB,10)把数据库UserDB收缩到90DBCC SHRINKDATABASE (DataFile1,7) -把数据文件DataFile1收缩到7M使用企业管理器将teach数据库设置为自动收缩:2.4
10、数据库的更名使用系统存储过程sp_renamedb更改数据库的名称。在重命名之前,应确保没有用户使用该数据库.实验内容8:将teach数据库改名为teaching。提示:在查询分析器中输入如下SQL语句: sp_renamedb teach,teaching将teach数据库改名为teaching2.5数据库选项的配置可以使用 ALTER DATABASE 语句的 SET 子句、sp_dboption系统存储过程,或者在某些情况下使用 SQL Server 企业管理器设置数据库选项。实验内容9:使用企业管理器将teaching数据库设为只读. 提示:打开企业管理器,选中teaching,单击右
11、键,选中“属性,单击“选项”,选中“只读,确定。设置teaching为只读查看设置后的teaching数据库:实验内容10:使用sp_dboption存储过程取消teaching数据库的只读设置。提示:sp_dboption teaching, read only, FALSE取消teaching数据库的只读设置查看执行后的效果:2。6 数据库的删除可以使用企业管理器删除数据库。在企业管理器中,右击所要删除的数据库,从弹出的快捷菜单中选择“删除”命令或直接按下键盘上Delete按钮即可删除数据库。可以使用DROP语句删除数据库。注意:对正在使用的数据库不能被删除。实验内容11:使用DROP D
12、ATABASE命令将teaching数据库删除。提示:DROPDATABASEteaching将teaching数据库删除三、实验思考:1。 一个数据库中包含哪几种文件?1、主数据文件。用来存储数据库的数据和数据库的启动信息。每个数据库必须有且只有一个主数据文件,其扩展名为。mdf.实际的主数据文件都有两种名称:操作系统文件名和逻辑文件名(在sql语句中会用到)2、辅助数据文件用来存储数据库的数据,可以扩展存储空间。一个数据库可以有多个辅助数据文件。扩展名为.ndf3、事务日志文件用来存放数据库的事务日志。凡是对数据库进行的增、删、改等操作,都会记录在事务日志文件中.每个数据库至少有一个事务日
13、志文件。扩展名为.ldf2。 事务日志文件的大小一般为数据文件大小的多少合适?我认为日志文件的大小跟数据文件是没有太大的关联的,关键是看一次提交的事务的大小(要估计最大量),日志文件大小可以设置为最大的一次事务提交的大小的23倍就可以了,然后经常备份日志就可以了。数据库及其日志一定要经常备份,不然就算设置的日志文件再大也不行的。3。 若需修改数据库文件的大小,可以使用的方法有哪些?若要求使用T-SQL语言,则命令应如何编写?1、使用企业数据库管理,选中数据库名右键属性-文件,然后队要修改的数据库文件的大小进行修改2、TSQL语句backuplogdatabase_namewithno_logdbccshrinkfile(database_name_log,5)4.能不能删除master数据库?若一个用户数据库当前正在被访问,能不能被删除?不能删除master数据库;因为master系统数据库记录包括用户信息,数据库信息,系统信息等,若master有坏损sqlserver就启动不了了若一个用户数据库当前正在被访问,能不能被删除;因为如果正在访问该数据库,泽该数据库与服务器建立起了连接,必须把服务器停止之后才能删除该数据库