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

当你在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都没有被实际用到。。。

时间: 2025-01-02 01:12:44

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

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

我们使用的HashMap一般情况的存储在1W对以上,默认的初始的table容量是16, 默认reHash每次容量翻倍,多次重构,影响性能 说明: HashMap 使用 HashMap(int initialCapacity) 初始化,正例: initialCapacity = (需要存储的元素个数 / 负载因子) + 1.注意负载因子(即loaderfactor)默认为 0.75, 如果暂时无法确定初始值大小,请设置为 16(即默认值).反例: HashMap 需要放置 1024 个元素,由于没

获取数据库中指定类型的数据库名称

/// <summary> /// 获取数据库名称 /// </summary> /// <param name="Account">帐套号</param> /// <returns></returns> public static string GetDBName(string Account) { StringBuilder strSql = new StringBuilder(); strSql.Append

Sql语句在SqlServer中创建数据库、表格并添加约束

通过Sql语句来创建数据库与架构 创建数据库 数据库的创建首先是要引用主数据库的,需要在master数据库的环境下进行创建.大致的语法如下: 1 -- 使用master数据库 2 use master 3 -- 创建数据库 4 create datebase [架构名.]数据库名 5 on [primary]--主文件数据描述 6 ( 7 name = '数据库逻辑名', --一般是数据库的名称 8 filename = '数据文件的名字',--全路径 9 size = 12mb, --数据文件

创建和关联内容数据库到指定Web应用程序和网站集

创建和关联内容数据库到指定Web应用程序和网站集 一个Web应用程序不限于使用单个内容数据库.SharePoint允许你关联多个内容数据库到Web应用程序.原因之一是基于内容数据库的大小.如果大于200G,将它分到两个内容数据库就显得很有道理. 另一个考虑是内容数据库中的数据类型.如果一个营销网站包含图片和视频,只为这个网站集数据创建一个内容数据库就很合理.另一个例子就是给法律部门创建内容数据库保存所有法律数据. 最后还有个好处是灾难恢复.知道你的数据在哪儿,结构是什么样,会是你应用灾难恢复策略

MySQL 创建数据库并且指定编码

GBK: create database test2 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;UTF8: CREATE DATABASE `test2` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci MySQL 创建数据库并且指定编码,布布扣,bubuko.com

PDO创建mysql数据库并指定utf8编码

<?php //PDO创建mysql数据库并指定utf8编码 header('Content-type:text/html; charset=utf-8'); $servername = "localhost"; $username = "root"; $password = ""; $dsn="mysql:host=$servername"; try { $pdo = new PDO($dsn, $username,

SQL语句创建数据库,SQL语句删除数据库,SQL语句创建表,SQL语句删除表,SQL语句添加约束,SQL语句删除约束

创建数据库: 1 CREATE DATABASE Test --要创建的数据库名称 2 ON PRIMARY 3 ( 4 --数据库文件的具体描述 5 NAME='Test_data', --主数据文件的逻辑名称 6 FILENAME='E:\project\Test_data.mdf', --主数据文件的物理名称 7 SIZE=5MB, --主数据文件的初始大小 8 MAXSIZE=100MB, --主数据文件的增长的最大值 9 FILEGROWTH=15% --主数据文件的增长率 10 )

使用sql查询mysql/oracle/sql server/gp数据库中指定表的字段信息(字段名/字段类型/字段长度/是否是主键/是否为空)

1,根据数据库类型拼接不同URL /** * 根据类型不同拼接连接的URL * @param dbType 1:mysql.2:oracle.3:sql server.4:gp * @param ip * @param port * @param databaseName * @return*/ public static String getTestDbUrl(int dbType, String ip, String port, String databaseName){ String ur

sqlserver如何创建镜像图文教程(转)

由于工作中需要做SQL的镜像异地备份,以前都没有研究过,百度了一个文章记录下,方便以后查询 转载地址:http://jingyan.baidu.com/article/d5c4b52b20843fda560dc581.html 数据库镜像”是一种针对数据库高可用性的基于软件的解决 方案.其维护着一个数据库的两个相同的副本,这两个副本分别放置在不同的SQL Server数据库实例中.建议使用不同位置的两台服务器来承载.在同一时刻,其中一台上的数据库用于客户端访问,充当“主体服务器”角色;而另一台则