大家好,欢迎来到IT知识分享网。
工作用使用sqlserver数据库常遇到数据库和日志wenj文件过大,简单记录下手动收缩文件大小:
执行代码:
use [master] go –alter database dw set recovery simple with no_wait –go alter database dw set recovery simple –简单模式 go use dw –当前数据库日记的逻辑名列表 select name,* from sys.database_files — where type=1 代表是日记文件 go –把DW_log日记文件收缩到5M dbcc ShrinkFile(DW_log,5) –减小 DW 用户数据库中数据文件和日志文件的大小,以便在数据库中留出 10% 的可用空间。 dbcc SHRINKDATABASE(DW,10) go use [master] –go –alter database dw set recovery full with no_wait –go –alter database dw set recovery full –还原为完全模式 GO |
SHRINKDATABASE 参数解析
语法
SQL复制
DBCC SHRINKDATABASE ( database_name | database_id | 0 [ , target_percent ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ) [ WITH NO_INFOMSGS ]
参数
database_name | database_id | 0
要收缩的数据库名称或 ID。 0 指定使用当前数据库。
target_percent
数据库收缩后的数据库文件中所需的剩余可用空间百分比。
NOTRUNCATE
将分配的页面从文件的末尾移动到文件前面的未分配页面。 此操作会压缩文件中的数据。 target_percent 是可选的。 Azure SQL 数据仓库不支持此选项。
文件末尾的可用空间不会返回给操作系统,并且文件的物理大小也不会更改。 因此,指定 NOTRUNCATE 时,数据库似乎不会收缩。
NOTRUNCATE 只适用于数据文件。 NONTRUNCATE 不会影响日志文件。
TRUNCATEONLY
将文件末尾的所有可用空间释放给操作系统。 不移动文件内的任何页面。 数据文件仅收缩到最后指定的盘区。 如果使用 TRUNCATEONLY 指定,则会忽略 target_percent。 Azure SQL 数据仓库不支持此选项。
TRUNCATEONLY 将影响日志文件。 若要仅截断数据文件,请使用 DBCC SHRINKFILE。
示例:
SHRINKFILE 参数解析:
语法SQL复制
参数备注 可以使用 DBCC SHRINKFILE target_size 缩小空文件的默认大小。 例如,如果创建一个 5 MB 的文件,然后在文件仍然为空的时候将文件收缩为 3 MB,默认文件大小将设置为 3 MB。 这只适用于永远不会包含数据的空文件。 对于 FILESTREAM 文件组容器,无法使用 ALTER DATABASE 删除文件,除非 FILESTREAM 垃圾回收器已运行,并删除了 EMPTYFILE 已复制到另一个容器的所有不必要文件组容器文件。 有关详细信息,请参阅 sp_filestream_force_garbage_collection (Transact-SQL) 备注 有关删除 FILESTREAM 容器的信息,请参阅 ALTER DATABASE 文件和文件组选项 (Transact-SQL) 中的相应章节 TRUNCATEONLY |
示例:
示例:
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/155493.html