当你在SqlServer创建数据库的时候可以指定数据库文件的初始大小,比如下图中我们将新创建的数据库MyDB的大小设置成了1024MB

那么你建好的数据库的确也就会占用1024MB左右的磁盘空间

不过使用存储过程sp_spaceused可以看到其中有1021.85 MB的空间是MyDB占用着并未使用。

于是我们在想是不是可以用DBCC ShrinkDatabase或DBCC ShrinkFile语句收缩未使用的数据库空间

dbcc shrinkdatabase('MyDB',10)

但是执行Shrink语句后我们发现数据库大小没有丝毫变化。。。

并且在执行Shrink语句后得到提示

这说明Sqlserver认为MyDB没有空间可以收缩。。。但是实际上我们通过存储过程sp_spaceused可以看到MyDB的确是有1021.85 MB的空间是没使用的。不能收缩数据库的原因其实是新建SqlServer数据库的时候指定的初始大小是不能被收缩掉的,要使用Alter Database语句或者在SMSS中重新指定MyDB的初始大小才能够收缩未使用的空间。

现在我们在SMSS中将MyDB的初始大小更改为800MB

可以看到现在MyDB的大小的确是在800MB左右了

然后现在再把MyDB的初始大小改回1024MB

然后此时再执行dbcc shrinkdatabase('MyDB',10),可以看到数据库大小变为了800MB左右,所以实际上shrinkdatabase语句只能把数据库收缩为 自数据库创建之初以来指定过的最小的初始文件大小,如果你的数据库第一次创建的时候初始大小就是1024MB,并且之后都没有人为调动过初始大小那么抱歉你的数据最小也就只能收缩到1024MB,尽管可能其中有1023MB都没有被实际用到。。。

数据库文件组中的NDF文件可能需要用Sql语句来指定文件初始大小

有时候在SqlServerManagementStudio中使用UI界面来指定NDF文件大小可能会不起作用,比如下图中我们可以看到tempdb数据库除了主数据库文件tempdb.mdf外,还有7个ndf文件。在下面的UI窗口中指定tempdb.mdf的文件初始大小是没有问题的,但是在指定tempdb_6.ndf的初始大小的时候没有效果。

这时我们使用下面的Sql语句来更改tempdb_6.ndf文件的初始大小就行了。该语句实际上可以更改数据库文件组下任何文件的初始大小。

ALTER DATABASE tempdb
MODIFY FILE (NAME='tempdb_6'/*这里写ndf文件的逻辑名称,在上图中tempdb_6.ndf文件的逻辑名称就是tempdb_6*/,SIZE=200MB/*指定ndf文件的初始大小*/,MAXSIZE=UNLIMITED,FILEGROWTH=100MB);

执行上面语句后再查看tempdb_6.ndf文件的初始大小就变成200MB了。

SqlServer 在创建数据库时候指定的初始数据库大小是不能被收缩的相关推荐

  1. 集合初始化时,指定集合初始值大小

    集合初始化时,指定集合初始值大小

  2. 数据库(一)-------初始数据库

    目录 大家好! 想必大家都知道数据库,不管我们学什么语言,都需要一个东西来存储我们的数据----那就是咱们的数据库 在这里呢! 我给大家带来的 是我正在用,也是目前为止比较热门,比较大具化的数据库-- ...

  3. sqlServer创建数据库并指定mdf,ldf文件所在路径

    sqlServer创建数据库并指定mdf,ldf文件所在路径 CREATE DATABASE [dataBaseName]CONTAINMENT = NONEON PRIMARY ( NAME = N ...

  4. 创建数据库,指定数据库的字符集和编码顺序

    创建数据库,指定它的字符集和编码顺序 create database {数据库名称} CHARACTER SET {字符集} COLLATE {排序规则} 举例: create database co ...

  5. MySQL创建数据库时指定编码和用户授权

    为什么80%的码农都做不了架构师?>>>    MySQL创建数据库时指定编码和用户授权 转载于:https://my.oschina.net/michao/blog/2989144

  6. SQLServer之创建数据库架构

    创建数据库架构注意事项 包含 CREATE SCHEMA AUTHORIZATION 但未指定名称的语句仅允许用于向后兼容性. 该语句未引起错误,但未创建一个架构. CREATE SCHEMA 可以在 ...

  7. dos窗口mysql创建数据库指定字符集_MySQL数据库 dos 命令窗口命令集

    一.DDL:数据库定义语言 数据库的操作:(操作关键字不分大小写) create database day01;//创建数据库 show databases;//查看该帐号下的所有数据库 show c ...

  8. mysql创建数据库指定utf 8_MySQL创建数据库时指定编码utf8mb4和添加用户

    MySQL创建数据库时指定编码utf8mb4和添加用户 CREATE DATABASE `wordpress` DEFAULT CHARACTER SET utf8 COLLATE utf8_gene ...

  9. php指定编码创建,MYSQL创建数据库时指定编码

    mysql 创建 数据库时指定编码很重要,很多开发者都使用了默认编码,但是我使用的经验来看,制定数据库的编码可以很大程度上避免倒入导出带来的乱码问题. 我们遵循的标准是,数据库,表,字段和页面或文本的 ...

  10. SQLServer之创建数据库架构 1

    创建数据库架构注意事项 包含 CREATE SCHEMA AUTHORIZATION 但未指定名称的语句仅允许用于向后兼容性. 该语句未引起错误,但未创建一个架构. CREATE SCHEMA 可以在 ...

最新文章

  1. 语义分割该如何走下去?
  2. nn.embding()使用注意点
  3. 【Android 性能优化】应用启动优化 ( 启动优化项目 | 界面启动时间 | 启动优化项目 | 方法追踪 MethodTracing )
  4. 单链表的的逆置(带头结点)
  5. 二维粗糙海面matlab,三维随机粗糙海面的Monte-Carlo仿真
  6. 理解包装类 Integer 的底层实现,教你破解所有面试难题!
  7. 仿京东商城html网页源码
  8. 程序设计入门c语言代码,C语言程序设计 入门源代码代码集合
  9. 浪潮服务器如何安装win7系统,WIN7旗舰版操作系统中浪潮ERP-GS5.2安装说明.doc
  10. STM32: startup_**.s、Core_cm3.c、宏定义、HAL库
  11. 西门子 Prodave通讯
  12. 图片缩放库 Photoview 和 Gif 控件 GifView 的使用
  13. windows微信多开,超便捷的使用方式,真正一劳永逸的方法
  14. 热评云厂商:青云科技4.29亿元,重研发押注更大发展
  15. date命令显示格式化的年月日时分秒
  16. [附源码]Nodejs计算机毕业设计校园快递代取平台Express(程序+LW)
  17. 倒立摆的simulink模型搭建
  18. c语言整数各位数字求和
  19. html中的空格怎么写,html中空格代码是什么?
  20. Linux下的信号处理(转自计世网)

热门文章

  1. debian解决中文乱码,安装chinese font
  2. 数学之路(3)-机器学习(3)-机器学习算法-欧氏距离(3)
  3. PIE SDK专题制图切换模板
  4. jmeter与jdk的安装
  5. 用Vue.js和Webpack开发Web在线钢琴
  6. iOS开发之单元测试
  7. IOS UIScrollView中 使用 touch 无法响应的问题
  8. 我所遭遇过的游戏中间件--Kynapse
  9. 除自身以外数组的乘积leetcode 238
  10. Docker 容器的数据管理