SQL语句数据库的创建、修改,分离,附加,备份,还原

目录

1.数据库的创建:

2.数据库的修改

3.数据库的分离

4.数据库的附加

5.数据库备份

6.数据库还原


1.数据库的创建:

--SCT为要创建的数据库名称
create database SCT
on primary
(
	name='student1',--主数据文件的逻辑名
	filename='C:\SCT\DATA\student1.mdf',//数据文件的存储路径
	size=10MB,--初始大小
	filegrowth=10%,--每次增容时增加的容量大小
	maxsize=100MB--主文件的最大增长值,unlimited是无限制
),(
	name='student2',--辅助数据文件
	filename='C:\SCT\DATA\student2.mdf',
	size=20MB,
	filegrowth=10MB,
	maxsize=200MB
)
log on(
	name='studentlog1',
	filename='C:\SCT\LOG\studentlog1.ldf',
	size=30MB,
	filegrowth=2MB,
	maxsize=500MB
),(
	name='studentlog2',
	filename='C:\SCT\LOG\studentlog2.ldf',
	size=30MB,
	filegrowth=2MB,
	maxsize=500MB
)

 on primary 的意思是是指定主文件组中包含的文件。

LOG ON 就是指定数据库日志文件,用来对数据库的操作日志。

在主(辅)数据文件或者日志文件中的属性参考上述代码的注释。

2.数据库的修改

例子:

修改SCT数据库,增加一个“fg”文件组,并向文件组(fg)中添加数据文件。

详细解释请看注释

--修改SCT数据库,添加文件组fg
alter database SCT add filegroup fg
--向fg文件组中添加数据文件
alter database SCT add file
(
	name='student3',
	filename='D:\SCT\student3.ndf',
	size=5MB,
	maxsize=20MB,
	filegrowth=15%
)
to filegroup fg--指向fg文件组,fg是一个文件组名

修改SCT数据库,增 加一个辅助数据文件student3,保存在“D:\SCT”文件夹中,且存放到“fg” 文件组中,初始大小5MB,最大容量是20MB,每次增长15%。

alter database SCT add log file(
	name =log1,--名称
	filename='D:\SCT\',--路径
	size=3MB,
	maxsize=10MB,
	filegrowth=15%
) 

修改SCT数据库,删除辅助数据文件student3. 

alter database SCT remove file student3--删除数据文件


以下是对数据库的其他操作
--remove FILEGROUP 文件组名称 --删除文件组
--MODIFY FILE <filespec> --更改文件属性
--MODIFY NAME=新数据库名称 /*更改数据库名称
--MODIFY FILEGROUP 文件组名称 {文件组属性|NAME=新文件组名称}--更改文件组属性,包括更改文件组名称

 alter database SCT remove file <删除文件名字>(参考上述例子)

3.数据库的分离

--例句数据库SCT分离
execute sys.sp_detach_db @dbname='SCT'

[@dbname=] ‘database_name’

database_name是要分离的数据库的名称

database_name是sysname值,默认值为NULL。

4.数据库的附加

附加数据库SCT

execute sp_attach_db SCT ,'C:\SCT\DATA\student1.mdf','C:\SCT\LOG\studentlog1.ldf'
/*
附加操作的语法:
execute sp_sttsch_db [@dbname=] ‘dbname’,[@filename1=]’filename_n’,[……16] 

[@dbname=]‘dbnam_‘要附加到服务器的数据库的名称,该名称必须是唯一的。
Dbname的值为sysname,默认值为NULL。
[@filename1=]’filename_n’是数据库物理名称,包括路径。最多可以指定16个文件名。
*/

另外一种语法:

--附加数据库语句
--database_name为数据库的名字

CREATE DATABASE database_name
ON <filespec> [ ,...n ]
FOR {ATTACH | ATTACH_REBUILD_LOG}

--attach(附加)

--for attach_rebuild_log
--指定通过附加一组现有的操作系统文件来创建数据库。该选项只限于读/写数据库。
--必须有一个指定主文件的 <filespec> 项。如果缺少一个或多个事务日志文件,将重新生成日志文件。


例子:
create database database_name
on (filename='数据库分离的数据文件完整路径'),
   (filename='数据库分离的日志文件完整路径')
for attach

详细查看下述代码:

--语法一
--声明数据库引用
use other_database_name;
go
 
--附加数据库
create database database_name
on (filename='mdf_path'),
(filename='ldf_path')
for attach
go
 
--语法二
--声明数据库引用
use other_database_name;
go
 
--附加数据库
create database database_name
on (
name='logical_file_name'
,filename='filestream_path'
,size= size_number [ KB | MB | GB | TB ]
,maxsize= { max_size_number [ KB | MB | GB | TB ] | unlimited  }
,filegrowth= growth_increment [ KB | MB | GB | TB | % ]
),
(
name='logical_log_file_name'
filename='log_filestream_path'
,size= size_number [ KB | MB | GB | TB ]
,maxsize= { max_size_number [ KB | MB | GB | TB ] | unlimited }
,filegrowth= growth_increment [ KB | MB | GB | TB | % ]
)
for { attach with
[ enable_broker | new_broker | error_broker_conversations ]
[,restricted_user]
[,filestream ( directory_name={ 'directory_name' | NULL })]
 | attach_rebuild_log }
go
语法解析
--语法解析
--other_database_name
--其它数据库,不能使用要附加的数据库进行附加。

--database_name
--新数据库的名称。数据库名称在SQL Server的实例中必须唯一,并且必须符合标识符规则。

--mdf_path
--数据库分离的数据文件完整路径。

--ldf_path
--数据库分离的日志文件完整路径。

--name
--指定文件的逻辑名称。 指定filename时,
--需要使用name,除非指定for attach子句之一。 无法将filestream文件组命名为primary。

--logical_file_name
--在SQL Server中引用文件时所用的逻辑名称。 Logical_file_name在数据库中必须唯一,并且必须符合标识符规则。
--名称可以是字符或Unicode常量,也可以是常规标识符或分隔标识符。

--filename
--指定操作系统(物理)文件名称。

--filestream_path
--数据库数据文件完整路径

--logical_log_file_name
--数据库日志名称。

--log_filestream_path
--数据库日志文件完整路径

--size
--指定文件的大小。
--将 os_file_name 指定为UNC路径时,不能指定SIZE。 SIZE不适用于FILESTREAM文件组。

--size_number
--文件的初始大小。

--maxsize
--指定文件可增大到的最大大小。将os_file_name指定为UNC路径时,不能指定maxsize。

--max_size_number
--最大的文件大小。可以使用 KB、MB、GB 和 TB 后缀。默认值为 MB。指定一个整数,不包含小数位。
--如果未指定 max_size,文件将一直增长到磁盘变满为止。Max_size 是一个整数值。对于大于2147483647的值,使用更大的单位。

--unlimited
--指定文件将增长到磁盘充满。在SQL Server中,指定为不限制增长的日志文件的最大大小为2TB,而数据文件的最大大小为16TB。

--filegrowth
--指定文件的自动增量。文件的filegrowth设置不能超过max_size_number设置。将os_file_name指定为UNC路径时,不能指定filegrowth。
--filegrowth不适用于filestream文件组。

--growth_increment
--每次需要新空间时为文件添加的空间量。
--该值可以MB、KB、GB、TB 或百分比 (%)为单位指定。
--如果未在数量后面指定MB、KB 或%,则默认值为MB。
--如果指定%,则增量大小为发生增长时文件大小的指定百分比。 定的大小舍入为最接近的64KB的倍数,最小值为64KB。
--值为0时表明自动增长被设置为关闭,不允许增加空间。

--enable_broker
--指定对指定的数据库启用Service Broker。 也就是说,启动了消息传递,
--并且在sys.databases 目录视图中将is_broker_enabled设置为true。数据库保留现有的Service Broker标识符。

--new_broker
--在sys.databases和还原数据库中都创建一个新的service_broker_guid值,并通过清除结束所有会话端点。
--Broker已启用,但未向远程会话端点发送消息。必须使用新标识符重新创建任何引用旧Service Broker标识符的路由。

--error_broker_conversations
--结束所有会话,并产生一个错误指出数据库已附加或还原。
--Broker一直处于禁用状态直到此操作完成,然后再将其启用。数据库保留现有的Service Broker标识符。

--restricted_user
--对于attach,可以指定restricted_user选项。
--restricted_user只允许db_owner固定数据库角色成员以及dbcreator和sysadmin固定服务器角色成员连接到数据库,
--不过对连接数没有限制。无资格用户的尝试将被拒绝。

--filestream
--将包含filestream选项“目录名称”的数据库附加到SQL Server实例中将提示SQL Server验证Database_Directory名称是否唯一。

--directory_name={ 'directory_name' | NULL }
--适用于: SQL Server 2012 (11.x) 到 SQL Server 2017
--与Windows兼容的目录名称。此名称应在SQL Server实例的所有Database_Directory名称中唯一。
--无论SQL Server排序规则设置如何,唯一性比较都不区分大小写。在此数据库中创建FileTable之前,应设置此选项。
--仅在将containment设置为partial之后,才允许使用以下选项。如果将containment设置为none,将发生错误。

--for attach_rebuild_log
--指定通过附加一组现有的操作系统文件来创建数据库。该选项只限于读/写数据库。
--必须有一个指定主文件的 <filespec> 项。如果缺少一个或多个事务日志文件,将重新生成日志文件。
--attach_rebuild_log自动创建一个新的1MB的日志文件。此文件放置于默认的日志文件位置。
--for attach_rebuild_log具有以下要求:完全关闭数据库。所有数据文件(MDF 和 NDF)都必须可用。
--通常,FOR ATTACH_REBUILD_LOG 用于将具有大型日志的可读/写数据库复制到另一台服务器,
--在这台服务器上,数据库副本频繁使用,或仅用于读操作,因而所需的日志空间少于原始数据库。
--不能对数据库快照指定for attach_rebuild_log。

5.数据库备份

参考:

sp_addumpdevice (Transact-SQL) - SQL Server | Microsoft Docs

参考:

Sql Server数据库备份大全(Sql语句)_宇天_YT的博客-CSDN博客_sql数据备份语句

6.数据库还原

restore database SCT from disk='E:\SQLserver备份\DATA\11.bak'

--SCT为数据库名称
--disk='数据库备份路径'

  • 4
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值