[!!!]如何减小database_size ?

ForFumm 2010-12-18 01:17:39
请问如何把database_size 减小一些?如何操作?
--运行
EXEC sp_spaceused
--结果
/*
database_name database_size unallocated space
-------------------------------------------------------------------------------------------------------------------------------- ------------------ ------------------
nan 4474.06 MB 45.28 MB

reserved data index_size unused
------------------ ------------------ ------------------ ------------------
4432928 KB 836864 KB 48992 KB 3547072 KB
*/

SELECT name , size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 AS AvailableSpaceInMB
FROM sys.database_files;
--结果
/*
name AvailableSpaceInMB
-------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------
_Data 28.937500
_Log 95.453125

(2 行受影响)
*/
...全文
133 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForFumm 2010-12-18
  • 打赏
  • 举报
回复
谢了。
billpu 2010-12-18
  • 打赏
  • 举报
回复
这个说明你的数据库有不活动日志可以被截断
你运行过backup log吗,备份并截断
backup log dbname to disk='...'
然后再shrinkfile,sqlserver会把不用的日志空间还给操作系统
ForFumm 2010-12-18
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 starseeker7 的回复:]
- -能停掉最好
运行一次日志截取命令,重起数据库=了事
[/Quote]
服务器不能停 -.-!
[Quote=引用 13 楼 billpu 的回复:]
首先并不是你想收缩就能确保截断或者收缩你的数据库日志
你需要了解你的数据库日志能不能被截断(先不要谈收缩)并不一定是你的语句有问题,而是你的日志能否有被可标记为复用的段(截断),比如一个很长很长,或者永远不会结束的事务都会影响你截断事务
用以下语句看一下 是否你的日志文件允许被截断,或者不允许被截断的原因,你只要找log_reuse_wait和log_reuse_wait_desc 两个字段就……
[/Quote]
name                                                                                                                             log_reuse_wait log_reuse_wait_desc
-------------------------------------------------------------------------------------------------------------------------------- -------------- ------------------------------------------------------------
nan 0 NOTHING

(1 行受影响)

starseeker7 2010-12-18
  • 打赏
  • 举报
回复
- -能停掉最好
运行一次日志截取命令,重起数据库=了事
billpu 2010-12-18
  • 打赏
  • 举报
回复
首先并不是你想收缩就能确保截断或者收缩你的数据库日志
你需要了解你的数据库日志能不能被截断(先不要谈收缩)并不一定是你的语句有问题,而是你的日志能否有被可标记为复用的段(截断),比如一个很长很长,或者永远不会结束的事务都会影响你截断事务
用以下语句看一下 是否你的日志文件允许被截断,或者不允许被截断的原因,你只要找log_reuse_wait和log_reuse_wait_desc 两个字段就可以了
select [name],log_reuse_wait,log_reuse_wait_desc from sys.databases

可以的话贴上来看看

ForFumm 2010-12-18
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 maco_wang 的回复:]
sql server 2008 貌似有数据压缩技术
[/Quote]

用的是2000.
ForFumm 2010-12-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wxf163 的回复:]
这要看你数据库经常有什么操作?
[/Quote]

基本都是写入数据
叶子 2010-12-18
  • 打赏
  • 举报
回复
sql server 2008 貌似有数据压缩技术
王向飞 2010-12-18
  • 打赏
  • 举报
回复
这要看你数据库经常有什么操作?
starseeker7 2010-12-18
  • 打赏
  • 举报
回复
还有日志可以缩小,,,但别限制
否则一旦到达你设置的位置,,,
你的数据库非查询以外语句将都会失败- -

本体的话,,,不是就是修改初始大小修改就可以了吗?只要你没设置得大得夸张- -
都不会影响啥吧?你想改小也不可能小于实际的数据大小吧- -
starseeker7 2010-12-18
  • 打赏
  • 举报
回复


--SQL语句的设置方式:
alter database 库名 modify file(name=逻辑文件名,maxsize=20)

--*日誌手動刪除辦法
1.清空日志
DUMP TRANSACTION 库名 WITH NO_LOG

2.截断事务日志:
BACKUP LOG 库名 WITH NO_LOG

--直接刪除日誌
1。detach 数据库
企业管理器: 数据库名----〉右键:tasks---〉detach 即可

sql 语句是:EXEC sp_detach_db 'dbname', 'true';

2。删除掉该日志文件 数据库名log.ldf 文件(或重名)

3。将数据库atach回来 (注意以单文件的形式)

EXEC sp_attach_single_file_db 'dbname','絕對路徑\dbname.mdf';
系统会自动分配一个504kb的日志文件

注意:

在2000中才可以在 企业管理器中使用附加的形式 把數據庫成功的添加回來

在2005中必須使用

EXEC sp_attach_single_file_db 'dbname','絕對路徑\dbname.mdf';

ForFumm 2010-12-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 liangck 的回复:]

[/Quote]

USE [master]
GO
ALTER DATABASE [nan] MODIFY FILE ( NAME = N'nanning_Data', SIZE = 4480000KB )
GO
我想把 SIZE 减小到比 4480000KB 还要小的数,有什么方法?
liangCK 2010-12-18
  • 打赏
  • 举报
回复
backup log nan with no_log;

dbcc shrinkfile('_log',1)
ForFumm 2010-12-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 liangck 的回复:]
ALTER DATABASE nan SET RECOVERY SIMPLE;
GO
DBCC SHRINKFILE('_Log',1);
GO
[/Quote]

未果,
database_size 没发生变化
liangCK 2010-12-18
  • 打赏
  • 举报
回复
ALTER DATABASE nan SET RECOVERY SIMPLE;
GO
DBCC SHRINKFILE('_Log',1);
GO
liangCK 2010-12-18
  • 打赏
  • 举报
回复
收缩日志文件.
ForFumm 2010-12-18
  • 打赏
  • 举报
回复

么人来。。

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧