我使用update语句更新表时间比较长,后来发现是磁盘空间不够了,
已经占用了10G了,请教大家该怎么办?服务器的空间是不能再增加了,
update字段也一定要作的,该怎么办呢!!!是不是有些什么设置呢???
8 个解决方案
#1
笨办法,分成几部分作可以么?
#2
//////////////////压缩日志及数据库文件大小////////////////////////////
/*--特别注意
请按步骤进行,未进行前面的步骤,请不要做后面的步骤
否则可能损坏你的数据库.
--*/
1.清空日志
DUMP TRANSACTION 库名 WITH NO_LOG
2.截断事务日志:
BACKUP LOG 数据库名 WITH NO_LOG
3.收缩数据库文件(如果不压缩,数据库的文件不会减小
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
/*--特别注意
请按步骤进行,未进行前面的步骤,请不要做后面的步骤
否则可能损坏你的数据库.
--*/
1.清空日志
DUMP TRANSACTION 库名 WITH NO_LOG
2.截断事务日志:
BACKUP LOG 数据库名 WITH NO_LOG
3.收缩数据库文件(如果不压缩,数据库的文件不会减小
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
#3
800万条的update,完成起來是很費時的,儘量不要這樣做
#4
取消日志文件的自动增长,但是这样对数据就不是很安全了
万一在更新800万条数据的过程中出现异常,就无法恢复数据了,所以不建议这样做,这是不得以才这么做。
最好我觉得还是楼上说的,采取分段更新
万一在更新800万条数据的过程中出现异常,就无法恢复数据了,所以不建议这样做,这是不得以才这么做。
最好我觉得还是楼上说的,采取分段更新
#5
其实我作之前是收缩过的
是不是要将数据库设置乘自动搜索呢?
是不是要将数据库设置乘自动搜索呢?
#6
初始化数据库,修改数据库为大容量日志记录模式
DECLARE @recovery varchar(64)
DECLARE @dbName varchar(64)
SELECT @dbName = db_name() --当前数据库名称
SELECT @recovery =convert(varchar(64), DATABASEPROPERTYEX(@dbName,'recovery'))
IF charindex( @recovery, 'FULL' ) >0 --如果数据库为full模式(故障还原为完整模式)
BEGIN
EXEC ('ALTER DATABASE '+@dbName+' SET recovery BULK_LOGGED ')
PRINT '数据库修改为大容量日志记录恢复模型成功'
END
ELSE
PRINT '数据库已修改为大容量日志记录恢复模型下'
GO
DECLARE @recovery varchar(64)
DECLARE @dbName varchar(64)
SELECT @dbName = db_name() --当前数据库名称
SELECT @recovery =convert(varchar(64), DATABASEPROPERTYEX(@dbName,'recovery'))
IF charindex( @recovery, 'FULL' ) >0 --如果数据库为full模式(故障还原为完整模式)
BEGIN
EXEC ('ALTER DATABASE '+@dbName+' SET recovery BULK_LOGGED ')
PRINT '数据库修改为大容量日志记录恢复模型成功'
END
ELSE
PRINT '数据库已修改为大容量日志记录恢复模型下'
GO
#7
清理数据,分段更新看看
#8
分几次处理吧!
#1
笨办法,分成几部分作可以么?
#2
//////////////////压缩日志及数据库文件大小////////////////////////////
/*--特别注意
请按步骤进行,未进行前面的步骤,请不要做后面的步骤
否则可能损坏你的数据库.
--*/
1.清空日志
DUMP TRANSACTION 库名 WITH NO_LOG
2.截断事务日志:
BACKUP LOG 数据库名 WITH NO_LOG
3.收缩数据库文件(如果不压缩,数据库的文件不会减小
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
/*--特别注意
请按步骤进行,未进行前面的步骤,请不要做后面的步骤
否则可能损坏你的数据库.
--*/
1.清空日志
DUMP TRANSACTION 库名 WITH NO_LOG
2.截断事务日志:
BACKUP LOG 数据库名 WITH NO_LOG
3.收缩数据库文件(如果不压缩,数据库的文件不会减小
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
#3
800万条的update,完成起來是很費時的,儘量不要這樣做
#4
取消日志文件的自动增长,但是这样对数据就不是很安全了
万一在更新800万条数据的过程中出现异常,就无法恢复数据了,所以不建议这样做,这是不得以才这么做。
最好我觉得还是楼上说的,采取分段更新
万一在更新800万条数据的过程中出现异常,就无法恢复数据了,所以不建议这样做,这是不得以才这么做。
最好我觉得还是楼上说的,采取分段更新
#5
其实我作之前是收缩过的
是不是要将数据库设置乘自动搜索呢?
是不是要将数据库设置乘自动搜索呢?
#6
初始化数据库,修改数据库为大容量日志记录模式
DECLARE @recovery varchar(64)
DECLARE @dbName varchar(64)
SELECT @dbName = db_name() --当前数据库名称
SELECT @recovery =convert(varchar(64), DATABASEPROPERTYEX(@dbName,'recovery'))
IF charindex( @recovery, 'FULL' ) >0 --如果数据库为full模式(故障还原为完整模式)
BEGIN
EXEC ('ALTER DATABASE '+@dbName+' SET recovery BULK_LOGGED ')
PRINT '数据库修改为大容量日志记录恢复模型成功'
END
ELSE
PRINT '数据库已修改为大容量日志记录恢复模型下'
GO
DECLARE @recovery varchar(64)
DECLARE @dbName varchar(64)
SELECT @dbName = db_name() --当前数据库名称
SELECT @recovery =convert(varchar(64), DATABASEPROPERTYEX(@dbName,'recovery'))
IF charindex( @recovery, 'FULL' ) >0 --如果数据库为full模式(故障还原为完整模式)
BEGIN
EXEC ('ALTER DATABASE '+@dbName+' SET recovery BULK_LOGGED ')
PRINT '数据库修改为大容量日志记录恢复模型成功'
END
ELSE
PRINT '数据库已修改为大容量日志记录恢复模型下'
GO
#7
清理数据,分段更新看看
#8
分几次处理吧!