设为首页 收藏本站
查看: 1199|回复: 0

[经验分享] 【Sql Server】3.管理数据库

[复制链接]

尚未签到

发表于 2018-10-18 07:43:30 | 显示全部楼层 |阅读模式
  一、数据库组成
  表、视图(对多个表中的数据进行组合)、存储过程、触发器、用户与角色(在‘数据库xx/安全性’下)、其他数据库部分
  二、使用管理工具创建数据库
  1. 运行Microsoft SQL Server Management Studio
  2. 创建数据库:
DSC0000.jpg

  右键选中“数据库”-->“新建数据库”:
DSC0001.jpg

  如上图填写“数据库名称”,“所有者”采用默认,“数据库文件”中刚创建时数据库的初始大小和日志初始大小都可更改;自动增长:随着数据的不断增长,它会自动增长,点旁边的属性按钮,可以更改;路径也可更改。“选项”中有更多的配置信息。
  单击“确定”即完成数据库的创建,创建好的数据库会创建出2个文件:数据库文件(.mdf)和日志文件(.ldf):
DSC0002.jpg

  数据库新建好后,还可在属性中修改某些设置:如上面新建好的数据库xj,右击选择“属性”,看到所设的“所有者”为默认值即:
DSC0003.jpg

  现在指定‘所有者’为一个本地用户:NT AUTHORITY\SYSTEM
DSC0004.jpg

  还可以修改数据库文件和日志文件的‘初始大小’(根据对数据库大小进行估计),“选项”下有更多的配置信息,其中排序规则:SQL Server 2008数据库的排序规则,默认是中文环境(Chinese_PRC_CI_AS);恢复模式:定义数据库备份与恢复的恢复模式。
DSC0005.jpg

  “文件组”下,数据库文件都需要存放在一个文件组中,在执行数据库备份,优化数据库操作时非常有用。单击“添加”可以创建新的文件组。
  三、使用语句创建数据库
  CREATE DATABASE database_name
  [
  ON [PRIMARY]
  [(NAME=logical_name, FILENAME =’path’[,SIZE = database_size] [,MAXSIZE = database_maxsize] [,FILEGROWTH = growth_increment]
  )[, FILEGROUP=filegroup_name[(NAME = datafile_name, FILENAME =’path’ [,SIZE = datafile_size][ ,MAXSIZE =datafile _maxsize][ ,FILEGROWTH = growth_increment]
  )
  ]
  ]
  ]
  [
  LOG ON
  [(NAME = logfile_name, FILENAME =’path’[,SIZE = logfile_size] [,MAXSIZE = logfile_maxsize] [,FILEGROWTH = logfile_increment]
  )
  ]
  ]
  ON PRIMARY  指定需要关联的数据库的主文件,默认会将第一个创建的数据文件作为主文件。
  Name=logical_name 指定数据库文件的逻辑名称
  FILENAME=’path’ 指定数据库文件在磁盘上的位置
  SIZE=database_size  指定数据库文件的初始大小(MB/TB)
  MAXSIZE=database_maxsize  指定数据库文件的最大值,可以不设置,默认为不限制增长
  FILEGROWTH=growth_increment 指定文件的增量,按%或MB
  FILEGROUP filegroup_name 指定文件所属的文件组
  创建的数据文件可以有多个
  LOG ON 表示创建日志文件
  也可以在联机丛书中找到更详细的语法说明
  CREATE DATABASE 教务管理系统
  ON
  (
  NAME = 教务管理系统_DATA,
  FILENAME ='E:\DATA\教务管理系统_DATA.mdf',
  SIZE = 3MB,
  MAXSIZE =20MB,
  FILEGROWTH =5%
  )
  LOG ON
  (
  NAME = 教务管理系统_LOG,
  FILENAME ='E:\DATA\教务管理系统_DATA.ldf',
  SIZE = 2MB,
  MAXSIZE =10MB,
  FILEGROWTH =1MB
  )
  四、查看数据库状态
  有三种方式:
  1.使用目录视图:即右键数据库名,在属性中查看,可看到数据库文件的位置,文件组,当前数据库文件的剩余空间等。
  2.使用函数:查看数据库的属性取值情况
  select DATABASEPROPERTYEX('教务管理系统','Version')   --版本号
  select DATABASEPROPERTYEX('教务管理系统','Recovery')  --数据库恢复模式
  执行结果:
  661   【返回值说明:基本数据类型:int。版本号 = 数据库处于打开状态。NULL = 数据库没有启动】
  FULL  【返回值说明:基本数据类型:nvarchar(128)  FULL = 完整恢复模式  BULK_LOGGED = 大容量
  日志记录模型   SIMPLE = 简单恢复模式】
  可以从联机丛书查看到这个函数包含的属性
  3.使用系统存储过程:在创建数据库时,首先会调用SQL Server2008提供的模板数据库,这个模板数据库包含了一系列的存储过程,利用这些存储过程就可以查看当前数据库的状态。
  sp_helpdb  --可以查看服务器上所有数据库的主要状态
  执行结果:
DSC0006.jpg

  最后一列compatibility_level是SQL Server的兼容级别,SQL Server 2008创建的就是100,SQL Server 2005创建的就是90。
  五、修改数据库
  1.界面操作修改数据库:
  修改数据库名:先右击数据库/重命名,修改名称,这样仅能更改数据库名称,并不会修改其数据文件和日志文件的名称,可右击数据库/属性/‘文件’选项卡中修改‘逻辑名称’,但是数据文件的路径和物理存储名称是不能更改的。
  如果数据库随着使用的数据量越来越大,发现数据库的设计不合理,还可以修改数据库的初始大小。如果不想改变原来的数据文件,则可以添加一个数据文件。
DSC0007.jpg

  也可以在‘选项’下修改‘恢复模式’。
  2.T-SQL修改数据库名:
  alter database 教务管理系统 modify name=教务管理信息系统
  六、删除数据库
  可以右键删除数据库,在删除时可以设置图下边的删除选项。
  用T-SQL语句删除数据库:
  drop database 教务管理信息系统
  七、分离和附加数据库
  所有的企业都不会将所有的数据库文件放在单一的服务器上,都需要将当前的数据库文件复制几份放在不同的地方来保证数据的安全性,但是数据库在创建完成之后的运行过程中是无法复制数据库文件的,所以要想将数据库文件复制到另外的地方,另外的数据库实例中运行的话,就需要使用特殊的操作:对数据库进行分离和附加,来实现对当前的数据库文件部署到不同的数据库服务器上。
  分离数据库就是指将数据库从SQL Server 2008 的实例中分离出去,但是不会删除该数据库的文件和事务日志文件,这样,该数据库可以再附加到其他的SQL Server 2008 的实例上去。
  在下列状态下无法分离数据库:

  •   已复制并发布数据库。
  •   数据库中存在数据库快照。
  •   数据库处于未知状态。
  存在数据库快照表示数据库正在使用中,所以无法分离,要想分离必须先删除快照。
  附加数据库是指将当前数据库以外的数据库附加到当前数据库实例中。在附加数据库时,所有数据库文件(.mdf和.ndf文件)都必须是可用的。如果任何数据文件的路径与创建数据库或上次附加数据库时的路径不同,则必须指定文件的当前路径。在附加数据库的过程中,如果没有日志文件,系统将创建一个新的日志文件。
  直接复制xj的数据库文件和日志文件会被告诉数据库正在使用,无法复制,所以:右击数据库名xj/任务/分离:
DSC0008.jpg

  确定后,在当前的‘数据库’节点下就看不到这个已分离的数据库了。
  现在就可以将这个xj的数据库文件和日志文件复制到另一个目录了(E:\DATA1\下)。比如在另一个数据库实例下,右击‘数据库’/‘附加’:
DSC0009.jpg

  确定后就可以看到数据库被附加了进来。
  八、收缩数据库
  如果在设计数据库时考虑到数据量非常多,而将数据库设计得非常大,而在实际过程中发觉要不了那么大的数据库容量,这时就需要将数据库的尺寸收缩一下,所以要执行一下收缩操作。
  为了进行收缩操作,先将一数据库demoxj初始大小设大,再进行收缩操作。
DSC00010.jpg

  右击数据库demoxj/任务/收缩/数据库,对整个数据库进行收缩:
DSC00011.jpg

  收缩后再看demoxj的属性:
DSC00012.jpg

  右击数据库demoxj/任务/收缩/文件,也可以对某个数据库文件进行收缩,比如对日志文件进行收缩:
DSC00013.jpg

  确定后,再看这个数据库的属性:
DSC00014.jpg

  九、数据库快照
  数据库中的数据是随着操作不断的变化,如果现在有个特定的需求,比如规定一个特定的时间点2012-1-1,查询这个时间点之前的所有数据,有两种方法:
  备份与还原:但是还原后2012-1-1以后的数据就会被丢弃,这不是期望的。
  数据库快照:在某个时间点,对当前数据库创建快照,包含所有数据的备份。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-622962-1-1.html 上篇帖子: Sql server的灾难性恢复 下篇帖子: Sql Server的JDBC测试程序与远程连接
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表