zoukankan      html  css  js  c++  java
  • 创建及修改数据库

      1 /******创建数据库********/
      2 
      3 /******
      4 数据库存储文件
      5 1.主数据文件
      6     主数据文件主要存储数据库的启动信息,并指向其他数据文件,另外,用户数据和对象也可以存储在此文件中,一个数据库只能有一个主数据文件,默认扩展名为.mdf
      7 2.辅助数据文件
      8     用户可以根据需求建立辅助数据文件,辅助数据文件主要存储用户数据,它可以将数据分散到不同磁盘中,辅助数据文件默认扩展名为.ndf
      9 
     10 技巧:如果数据库超过了单个windows稳健得最大限制,可以使用辅助数据文件,这样数据库就还能增长。
     11 
     12 3.事务日志文件
     13     事务日志主要用于恢复数据库日志信息,每个数据库至少应该包含一个事务日志文件,默认得文件扩展名为.log
     14 
     15 注意:
     16     虽然SQL server 2008 不强制这三种类型2文件必须使用带mdf、ndf、ldf扩展名,但使用它们指出文件类型是个好习惯
     17     一个SQL server 2008 数据库服务器最多可以创建32767个数据库
     18 ******/
     19 
     20 CREATE DATABASE    sqltest                                /*不区别大小写*/
     21 ON                                                    /*ON关键字用来创建数据文件*/
     22 PRIMARY                                                /*PRIMARY表示创建的是主数据文件*/
     23                                                     /*如果不通过PRIMARY来指定哪个文件是主数据文件,默认情况下,第一个文件为主文件*/
     24 (
     25     NAME = "sqltest_data",                            /*逻辑名称*/
     26     FILENAME = "d:	estsqltest_data.mdf",            /*确保存储路径存在,否则报错*/
     27     SIZE = 10MB,                                    /*文件初始大小*/
     28     FILEGROWTH = 10%,                                /* == FILEGROWTH = 1 MB, 文件增长值*/
     29     
     30 /*如果数据库的大小不断增长,则可以指定其增长方式.
     31 如果数据的大小基本不变,为了提高数据的使用效率,通常不指定其具有自动增长方式*/
     32     MAXSIZE = 50MB                                    /*文件的最大容量;括号内最后一行不需要逗号来分隔*/
     33 )
     34 ,
     35 /*******通过FILEGROUP关键字来创建次文件组,文件组名称在数据库中必须唯一********/
     36 FILEGROUP filegroup1        
     37 /******
     38     文件组是用于分配和管理数据文件的集合,是根据数据文件而创建的,通过创建文件组,可以将不同的数据文件存储在不同的文件组中,
     39 这样不仅可以优化数据存储,而且也提高了数据的I/O读写性能。但使用文件组时需要注意以下几点:
     40     1.只有数据文件具有文件组,日志文件不存在文件组.
     41     2.主数据文件一定存放在主文件组中
     42     3.与系统相关的教据信息一定存放在主文件组中
     43     4.一个数据文件只能存放于一个文件组中,不能同时存放于多个文件组中
     44 ******/
     45 
     46 /*创建辅助数据文件*/
     47 (
     48     NAME = "sqltest_data1",
     49     FILENAME = "d:	estsqltest_data1.ndf",
     50     SIZE = 15MB,
     51     FILEGROWTH = 5MB,
     52     MAXSIZE = 50MB
     53 )
     54 /*创建事务日志文件*/
     55 LOG ON            
     56 /******
     57     在创建大型数据库的时候,尽量把主数据文件和事务文件存放在不同的文件路径下,这样在数据库被损坏时可以利用事务日志文件进行恢复,同时也能提高数据读取的效率
     58 ******/
     59 (
     60     NAME = "sqltest_log",
     61     FILENAME = "d:	estsqltest_log.ldf",
     62     SIZE = 5MB,
     63     FILEGROWTH = 10%,
     64     MAXSIZE = 25MB
     65 ),
     66 (
     67     NAME = "sqltest_data1_log",
     68     FILENAME = "d:	estsqltest_data1_log.ldf",
     69     SIZE = 5MB,
     70     FILEGROWTH = 10%,
     71     MAXSIZE = 25MB
     72 )
     73 /*  注意: 
     74            A filegroup cannot be used with log files.   */
     75 
     76 
     77 
     78 
     79 /**********查看数据库状态**************/
     80 SP_HELPDB sqltest                                    /*使用系统存储过程中的sp_helpdb可以查看所有数据库的基本信息*/
     81 SP_SPACEUSED                                        /*使用系统存储过程中的sp_spaceused可以显示数据库使用和保留的空间*/
     82 
     83 /******
     84 使用目录视图查看:
     85     1.使用sys.database_files查看有关数据库文件的信息
     86     2.使用sys.filegroups查看有关数据库组的信息
     87     3.使用sys.master_files查看数据库文件的基本信息和状态信息
     88     4.使用sys.databases数据库和文件目录视图查看有关数据库的基本信息
     89 ******/
     90 
     91 /*使用函数查看*/
     92 /*
     93 当需要查看指定数据库中的指定选项信息时,可以使用DATABASEPROPERTYEX()函数,此函数一次只能返回一个选项的信息。
     94 
     95 DATABASBPROPERTYEX()数的第1个参数表示要为其返回属性信息的数据库名称,
     96 第2个参数则表示要返回的数据库属性的表达式
     97 */
     98 USE sqltest
     99 GO
    100 SELECT DATABASEPROPERTYEX('sqltest','status')
    101 AS '当前数据库状态'
    102 /*print:  当前数据库状态:ONLINE*/
    103 
    104 
    105 
    106 
    107 
    108 /**************修改数据库****************/
    109 /*******
    110 在一个ALTER DATAPASE语句中,一次操作可增多个数据文件或日志文件,
    111 多个丈件之间使用英文状态下的逗号分隔开,同创建多个数据文件的数据库相同.
    112 *******/
    113 ALTER DATABASE sqltest
    114 /******修改数据库数据文件配置******/
    115 MODIFY FILE                                            
    116 (
    117     NAME = sqltest_data,
    118     SIZE = 20MB,
    119     FILEGROWTH = 5%
    120 )
    121 
    122 
    123 /******为数据库sqltest增加一个日志文件******/
    124 ALTER DATABASE sqltest
    125 ADD LOG FILE    
    126 (
    127     NAME = DBtestLog,
    128     FILENAME = "D:	estDBtestLog.ldf",
    129     SIZE = 2MB,
    130     MAXSIZE = 50MB,
    131     FILEGROWTH = 10%
    132 )
    133 /******
    134 TO FILEGROUP filegroup2
    135 如果加上上面这句就会报错,因为添加的文件为log日志文件
    136 ******/
    137 
    138 
    139 /************修改文件组名称************/
    140 ALTER DATABASE sqltest
    141 MODIFY FILEGROUP filegroup2
    142 NAME = filegroup3
    143 
    144 /************修改数据库名称************/
    145 ALTER DATABASE sqltest1
    146 MODIFY NAME = SQLtest
    147 /******
    148 修改数据库的名称,除了使用ALTER DATABASE以外,还可以使用系统存储过程中的sp_renamedb
    149 ******/
    150 /*exec sp_dboption 'sqltest','single',True*/
    151 exec sp_renamedb 'SQLtest','sqltest'
    152 /*exex sp_dboption 'sqltest','single',False*/
    153 
    154 
    155 
    156 
    157 
    158 /************增加文件组************/
    159 ALTER DATABASE sqltest
    160 ADD FILEGROUP filegroup2
    161 
    162 
    163 ALTER DATABASE sqltest
    164 /*添加数据文件*/
    165 ADD FILE            
    166 (
    167     NAME = sqltest_data2,
    168     FILENAME = "D:	estsqltest_data.ntf",
    169     SIZE = 15MB,
    170     MAXSIZE = 50MB,
    171     FILEGROWTH = 5MB
    172 )
    173 /******增加数据文件进文件组******/
    174 TO FILEGROUP filegroup2        
    175 
    176 
    177 
    178 
    179 
    180 /************删除数据库***************/
    181 ----DROP DATABASE sqltest                                    /*可一次删除多个数据库,只要在语句后加上数据库名,中间用英文逗号隔开即可*/
    182 /******
    183 注意:
    184 使用DROP DATABASE删除数据库不会出现确认信息,所以使用用这种方法时要小心谨慎,
    185 此外:千万不能删除系统数据库,否则会导致SQL Server 2008服务器无法使用
    186 ******/
    187 
    188 
    189 ALTER DATABASE sqltest
    190 REMOVE FILE DBtestLog
    191 
    192 /******删除组******/
    193 ALTER DATABASE sqltest        
    194 REMOVE FILEGROUP filegroup2
    195 /**********************************************
    196 注意:当数据组不为空时无法删除
    197 The filegroup 'filegroup1' cannot be removed because it is not empty.
    198 ***********************************************/
    199 
    200 
    201 
    202 
    203 /************分离数据库************/
    204 /*
    205 分离数据库是指将数据库从SQL Server 2008实例中删除,
    206 但是对于该数据库文件和事务,日志文件保持不变。此时可以将该数据库附加到其他实例中
    207 若要分离数据库,则不允许存在下列任何情况之一:
    208     1.该数据库中已经存在快照
    209     2.该数据库已经复制并发布
    210     3.数据库处于未知状态
    211 */
    212 EXEC SP_DETACH_DB sqltest
    213 /*
    214     分离数据库的方法有很多种,可以用存储过程进行分离,也可以用图形界面进行分离
    215 */
    216 
    217 
    218 
    219 
    220 /************附加数据库************/
    221 /******
    222 附加数据库是指将分离的数据库重新定位到相同的服务器或不同的服务器的数据库中。
    223 附加数据库时.所有数据库文件(mdf和ndf文件)都必须可用。
    224 如果任何数据文件的路径与创建数据库或上次附加数据库时的路径不同,则必须指定文件的当前路径。
    225 附加数据库可以使用FOR ATTACH语句,也可以使用图形化界面.
    226 FOR ATTACH语句至少指定主文件路径
    227 ******/
    228 CREATE DATABASE sqltest
    229 ON
    230 (
    231     FILENAME = 'd:	estsqltest_data.mdf'
    232 )
    233 FOR ATTACH
    234 
    235 
    236 
    237 /************复制和移动数据库************/
    238 /******
    239     使用SQL Server 2008的【复制数据库向导】工具可以复制或移动数据库,
    240 可以在不同数据库实例之间进行复制或移动数据库,也可以在同一实例中,通过复制数据库创建数据库副本
    241 在SQL Server 2ooa中,除model, msdb.Ftlmaster系统数据库外的所有数据库都可以复制或移动。
    242 SQL Server 2008使用两种方法来进行复制和移动操作
    243     
    244     1.附加和分离
    245     前面讲过分离与附加数据库,但是使用该方法时,
    246 用户必须是源服务器和目标服务器sysadmin固定服务器角色的成员。
    247 而且在开始复制操作前,用户应该把数据库设为单用户模式,以确保没有活动的会话
    248 
    249     2.使用SQL管理对象
    250     相对于分离与附加方法,此方法执行的速度比较慢。而且用户必须是源数据库的所有者
    251 并且必须有CREATE DATABASE的权限,或者在目标服务器上是固定dbcreator服务器角色的成员。
    252 但是在开始复制/移动操作之前,不用把数据库设置为单用户模式。
    253 而且由于数据库没有脱机,在操作期间也允许活动的连接。
    254 
    255 ******/
    View Code
  • 相关阅读:
    Cannot load php5apache2_4.dll into server
    goroutine,channel
    为什么 Go 标准库中有些函数只有签名,没有函数体?
    PHP编码风格规范
    etcd压测造成数据目录过大恢复
    高可用kubernetes集群查看kube-scheduler和kube-controller-manager哪个是leader节点
    kubeadm join添加节点,新加节点夯在not ready(cni config uninitialized)
    一次.dockerignore设置错误导致的docker build排查
    通过开源插件实现sonarqube区分不同分支显示代码扫描结果
    python脚本,调用接口清理镜像多余tag
  • 原文地址:https://www.cnblogs.com/Vison133/p/sql-note-04.html
Copyright © 2011-2022 走看看