DB1:数据库的创建和文件的修改
在SQL Server中,使用Create Database创建数据库,使用Alter Database命令,能够修改数据库的数据文件和日志文件。
一,创建数据库
1,在创建数据库时,最佳实践是:
- 创建一个或多个文件组,并设置默认文件组
- 每个文件组中的数据文件和CPU的内核数据相同,将文件均匀分布在不同的物理硬盘上,使IO均匀分布在不同的物理磁盘上;
- 数据文件的初始大小,文件增长和最大大小保持一致,这样,能够使每个文件的IO次数相对均匀;
- 日志文件分配在性能最好的物理硬盘上,写日志的性能直接影响数据修改的性能;
- 在创建文件时,为每个文件分配足够大的初始空间,避免数据文件size的增长
创建数据库的示例:
create database newdb
on primary
(name='newdb', filename='D:\MSSQLServer\newdb.mdf', size=1GB,maxsize=10GB,filegrowth=1GB),
(name='newdb_1',filename='D:\MSSQLServer\newdb_1.ndf',size=1GB,maxsize=10GB,filegrowth=1GB),
(name='newdb_2',filename='D:\MSSQLServer\newdb_2.ndf',size=1GB,maxsize=10GB,filegrowth=1GB),
(name='newdb_3',filename='D:\MSSQLServer\newdb_3.ndf',size=1GB,maxsize=10GB,filegrowth=1GB),
(name='newdb_4',filename='D:\MSSQLServer\newdb_4.ndf',size=1GB,maxsize=10GB,filegrowth=1GB)
log on
(name='newdb_log',filename='D:\MSSQLServer\newdb_log.ldf',size=1GB,maxsize=10GB,filegrowth=1GB)
go
参数name指定逻辑文件名(logical_file_name),参数FileName指定物理文件名,SQL Server通过逻辑文件名引用数据文件或日志文件。
2,查看当前数据库的文件
use newdb
go select df.file_id,
df.type,
df.type_desc,
df.name,
df.physical_name,
df.state,
df.state_desc,
df.size*8/1024/1024 as size_gb,
df.max_size*8/1024/1024 as max_size_gb,
df.growth,
df.is_percent_growth,
fg.name as filegroup_name,
fg.is_default
from sys.database_files df
inner join sys.filegroups fg
on df.data_space_id=fg.data_space_id
3,查看所有数据库的文件
select
DB_NAME(mf.database_id) as dbname,
mf.file_id,
mf.type as file_type,
mf.type_desc,
mf.data_space_id as file_group,
mf.name as logical_file_name,
mf.physical_name,
mf.state_desc,
mf.size*8/1024/1024 as size_gb,
mf.max_size*8/1024/1024 as max_size_gb,
mf.growth,
mf.is_percent_growth
from sys.master_files mf
--where database_id=db_id('newdb')
二,增加数据/日志文件
1,增加文件组(File Group)
use master
go
alter database newdb
add filegroup fg_newdb1;
2,向fg_newdb1文件组(File Group)中增加数据文件
alter database newdb
add file
(name=fg_newdb1_1,filename ='d:\MSSQLServer\fg_newdb1_1.ndf',size=1GB,maxsize=10GB,filegrowth=1GB)
to filegroup fg_newdb1;
3,增加日志文件
alter database newdb
add log file
(name=newdb_log_1,filename ='d:\MSSQLServer\newdb_log_1.ldf',size=1GB,maxsize=10GB,filegrowth=1GB);
三,修改数据库文件
1,修改数据文件的逻辑文件名(Logical file name)
MODIFY FILE ( NAME = ‘logical_file_name’, NEWNAME = ‘new_logical_name’ )
示例,将数据文件fg_newdb1_1 的逻辑文件名修改 fg_newdb1_file1
alter database newdb
modify file
(NAME ='fg_newdb1_1',newname='fg_newdb1_file1')
2,修改数据文件的物理文件名
MODIFY FILE ( NAME = logical_file_name, FILENAME = ' new_path/os_file_name ' )
修改数据文件的物理文件名,能够将数据文件移动到不同的位置上,分四步实现:
step1,在数据库中注册数据文件的新的物理文件名
alter database newdb
modify file
(name='fg_newdb1_file1',filename='F:\MSSQLServer\fg_newdb1_file1.ndf');
语句执行成功之后,数据库会显示:物理文件名已经在系统目录中修改
The file "fg_newdb1_file1" has been modified in the system catalog. The new path will be used the next time the database is started.
step2,使数据库离线
use master
go
alter database newdb
set offline
with rollback immediate;
在将数据库离线(脱机,take offline)时,如果数据中有Sleeping Session存在,或者有query正在执行,那么Take Offline操作会一直等待下去,直到没有任何query运行,使用 ROLLBACK IMMEDIATE 选项,能够立即回滚数据库中正在执行的所有事务,使Take Offline 操作迅速完成。
step3,将数据文件移动到新的位置上
以管理员权限运行move命令将文件移动到新的位置上,并重命名为新的物理文件名
move D:\MSSQLServer\fg_newdb1_1.ndf F:\MSSQLServer\fg_newdb1_file1.ndf

step4,使数据库联机
use master
go
alter database newdb
set online
四,从数据库中移除数据文件
在SQL Server中,不管是日志文件,还是数据文件,在删除之前,必须清空,只有空的文件才能从数据库中删除。
1,从数据库中删除数据文件
step1,清空数据文件
USE [db_study]
GO
DBCC SHRINKFILE (N'db_study_file1' , EMPTYFILE)
GO
Step2, 从数据库中删除数据文件
USE master;
GO
ALTER DATABASE db_study
REMOVE FILE db_study_file1;
GO
2,从数据库中删除日志文件
step1,清空日志文件
USE [db_study]
GO
DBCC SHRINKFILE (N'db_study_log1' , EMPTYFILE)
GO
step2,从数据库中删除日志文件
USE master;
GO
ALTER DATABASE db_study
REMOVE FILE db_study_log1;
GO
3,从数据库中删除文件组
USE master;
GO
ALTER DATABASE db_study
REMOVE FILEGROUP fg_study1;
GO
参考文档:
CREATE DATABASE (Transact-SQL)
ALTER DATABASE File and Filegroup Options (Transact-SQL)
DB1:数据库的创建和文件的修改的更多相关文章
- 创建Xml文件与修改Xml文件
/// <summary> /// 修改节点 /// </summary> /// <param name="user">UserSafe 实体 ...
- Laravel 6.X 数据库迁移 创建表 与 修改表
数据库迁移创建表 本篇文章中使用的是mysql数据库,其他数据库需要修改env文件和app配置,请其他地方搜索一下就会找到. 创建示例 1.创建users表: 命令行键入 php artisan ma ...
- SQL server数据库创建代码,filegroup文件组修改,
以下示例在 SQL Server 实例上创建了一个数据库.该数据库包括一个主数据文件.一个用户定义文件组和一个日志文件.主数据文件在主文件组中,而用户定义文件组包含两个次要数据文件.ALTER DAT ...
- SQL常用语句之数据库的创建、删除以及属性的修改-篇幅1
本篇文章主要总结了SQL Server 语句的使用和一些基础知识,因为目前我也正在学习,所以总结一下. 要使用数据库语句,首先就要知道数据库对象的结构: 通常情况下,如果不会引起混淆,可以直接使用对象 ...
- [转帖]创建文件或修改文件时间 touch
Linux命令(五)创建文件或修改文件时间 touch https://www.cnblogs.com/ay-a/p/7900274.html touch -t .x86_64.rpm 记得 wind ...
- Linux命令(五)创建文件或修改文件时间 touch
Linux中 touch 命令可以改变文档或目录时间, 包括存取时间或更改时间, 也可以用于创建新文件. 命令格式: touch [选项] [参数] 选项: -a 只更改文件的读取时间. -m ...
- 使用SQL语句创建数据库2——创建多个数据库文件和多个日志文件
在matser数据库下新建查询,输入的命令如下: USE master GOCREATE DATABASE E_MarketON PRIMARY--主文件组( NAME ='E_Market_data ...
- 使用SQL语句创建数据库1——创建一个数据库文件和一个日志文件的数据库
目的:创建一个数据库文件和一个日志文件的数据库 在matser数据库下新建查询,输入的命令如下: USE master——指向当前使用的数据库.创建数据库实际上是向master数据库中增加一条数据库信 ...
- discuz 数据库文件密码修改
网站系统需要修改的位置有两处 Discuz 和 UC-center ①路径:/wwwroot/config/config_global.php 这个根据你网站安装的路径而定. 打开 config_gl ...
随机推荐
- C语言 · 字符转对比
问题描述 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1:两个字符串长度不等.比如 Beijing 和 Hebei 2:两个字符串不仅长度相 ...
- python黑魔法 -- 内置方法使用
很多pythonic的代码都会用到内置方法,根据自己的经验,罗列一下自己知道的内置方法. __getitem__ __setitem__ __delitem__ 这三个方法是字典类的内置方法,分别对应 ...
- 算法与数据结构(十四) 堆排序 (Swift 3.0版)
上篇博客主要讲了冒泡排序.插入排序.希尔排序以及选择排序.本篇博客就来讲一下堆排序(Heap Sort).看到堆排序这个名字我们就应该知道这种排序方式的特点,就是利用堆来讲我们的序列进行排序.&quo ...
- android 两种实现计时器时分秒的实现,把时间放在你的手中~
可能我们在开发中会时常用到计时器这玩意儿,比如在录像的时候,我们可能需要在右上角显示一个计时器.这个东西其实实现起来非常简单. 只需要用一个控件Chronometer,是的,就这么简单,我都不好意思讲 ...
- 微信小程序中利用时间选择器和js无计算实现定时器(将字符串或秒数转换成倒计时)
转载注明出处 改成了一个单独的js文件,并修改代码增加了通用性,点击这里查看 今天写小程序,有一个需求就是用户选择时间,然后我这边就要开始倒计时. 因为小程序的限制,所以直接选用时间选择器作为选择定时 ...
- 现代3D图形编程学习-基础简介(3)-什么是opengl (译)
本书系列 现代3D图形编程学习 OpenGL是什么 在我们编写openGL程序之前,我们首先需要知道什么是OpenGL. 将OpenGL作为一个API OpenGL 通常被认为是应用程序接口(API) ...
- Kafka副本管理—— 为何去掉replica.lag.max.messages参数
今天查看Kafka 0.10.0的官方文档,发现了这样一句话:Configuration parameter replica.lag.max.messages was removed. Partiti ...
- SqlServer简单数据分页
手边开发的后端项目一直以来都用的.NET MVC框架,访问数据库使用其自带的EF CodeFirst模式,写存储过程的能力都快退化了 闲来无事,自己写了条分页存储过程,网上类似的文章多的是,这里只列了 ...
- 学习笔记:delphi之TStringGrid
1.说明 最近加入了一个项目组,使用的开发工具是delphi6,想想又要开始搞这个工具有点小忧伤,但没办法谁让咱就是个打杂的尼... 的需求是显示一个类似于Word/excel的那种表格,可以合并列等 ...
- .NET跨平台:在CentOS上编译dnx并运行ASP.NET 5示例程序
在之前的博文中我们在 Ubuntu 上成功编译出了 dnx ,并且用它成功运行了 ASP.NET 5 示例程序.在这篇博文中我们将 Ubuntu 换成 CentOS. 目前 dnx 的编译需要用到 m ...