如何删除sqlserver数据库
2个回答
2016-01-09 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
2015-06-01 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:117538
获赞数:517195
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。
向TA提问 私信TA
关注
展开全部
方法一:
1、打开查询分析器,输入命令
BACKUP LOG database_name WITH NO_LOG
2、再打开企业管理器--右键要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至xxm,这里会给出一个允许收缩到的最小m数,直接输入这个数,确定就可以了。
方法二:
设置检查点,自动截断日志
一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大
1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如用户数据库cwbase1)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存
2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定
3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据
方法三:通过SQL收缩日志
把代码复制到查询分析器里,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE tablename -- 要操作的数据库名
SELECT @LogicalFileName = 'tablename_log', -- 日志文件名
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 1 -- 你想设定的日志文件的大小(M)
-- Setup / initialize
DECLARE @OriginalSize int
SELECT @OriginalSize = size
FROM sysfiles
WHERE name = @LogicalFileName
SELECT 'Original Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
CREATE TABLE DummyTrans
(DummyColumn char (8000) not null)
DECLARE @Counter INT,
@StartTime DATETIME,
@TruncLog VARCHAR(255)
SELECT @StartTime = GETDATE(),
@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Wrap the log if necessary.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)
AND (@OriginalSize * 8 /1024) > @NewSize
BEGIN -- Outer loop.
SELECT @Counter = 0
WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
BEGIN -- update
INSERT DummyTrans VALUES ('Fill Log')
DELETE DummyTrans
SELECT @Counter = @Counter + 1
END
EXEC (@TruncLog)
END
SELECT 'Final Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),size) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
DROP TABLE DummyTrans
SET NOCOUNT OFF
方法四:删除日志文件。
此方法有一定的风险性,因为sql server的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。1、操作前请断开所有数据库连接。
2、分离数据库
分离数据库:企业管理器->服务器->数据库->cwbase1->右键->分离数据库
分离后,cwbase1数据库被删除,但保留了数据文件和日志文件
3、删除log物理文件
删除LOG物理文件,然后附加数据库: 企业管理器->服务器->数据库->右键->附加数据库
此法生成新的log,大小只有500多k。
注意:建议使用第一种方法。操作前请确保所有操作员都已经推出系统,断开数据库的连接。
以上操作前,请务必做好数据备份!
1.sql server 2005 清除日志语句
dump transaction 数据库名称 with no_log
backup log 数据库名称 with no_log
dbcc shrinkdatabase(数据库名称)
2.sql server 2008 清除日志语句
sp_dboption 数据库名称, "trunc. log on chkpt.", true
checkpoint
sp_dboption 数据库名称, "autoshrink", true
清除SQLSERVER数据库日志文件的方法:
1、先将这个数据库卸载:
EXEC sp_detach_db 'database_name', 'true'
然后将该数据库所对应的Log文件删掉;
最后,再将这个数据库注册到系统里面:
EXEC sp_attach_db @dbname = N'database_name',
@filename1 = N'e:\mssql7\data\database_name_data.mdf'
2、数据库上点右键-所有任务-收缩数据库-选择收缩文件为LOG 。
3、清除SQLSERVER数据库日志的方法:
*******下面是转发的邮件*****
The shrinking of log files is not immediate in SQL Server 7.0. The
shrinking of log files does not occur until the active portion of the
log moves. As updates are performed on the database, the shrink
operation occurs at checkpoints or transaction log backups. Each log
file is marked with the target_percent for the shrink operation. Each
subsequent log backup or log truncation attempts to shrink the file to
bring its size as close to the target_percent as possible. Because a log
file can be shrunk only to a virtual log file boundary, it may not be
possible to shrink a log file to a size smaller than the size of a
virtual log file even if it is not being used. Please refer to SQL Book
Online for the details.
RESOLUTION
Below script will help to shrink the log file immediately, pls keep it
running for 3~4 minutes and then stop it manually.
\* Run "select fileid, name,filename from ..sysfiles" to get
the fileid which you want to shrink *\
use
go
dbcc shrinkfile(fileid,notruncate)
dbcc shrinkfile(fileid,truncateonly)
create table t1 (char1 char(4000))
go
declare @i int
select @i = 0
while (1 = 1)
begin
while (@i < 100)
begin
insert into t1 values ('a') select @i = @i +1
end
truncate table t1
backup log with truncate_only
end
go
*****转发内容结束*****
SQLServer数据库日志清理 清除sqlserver2005日志
有时候当系统运行时间比较长的时候,我们把备份的数据库还原的时候发现,数据库中数据文件和日志文件变的好大,特别是日志文件。现在给大家介绍如何清理SQLServer数据库日志;有两种方法如下:
方法一:手动清除sqlserver2005日志
1.右键在清除日志的数据库,如“TestDB”,点击[新建查询(Q)]
2.输入以下SQL语句,其中“TestDB”是数据库名称
DUMP TRANSACTION TestDB WITH NO_LOG
3.执行该SQL,成功后继续以下操作
4.右键该数据库节点,点击[任务(T)] -> [收缩(S)] -> [文件(F)]
5.在弹出的“收缩文件”对话框中,将“文件类型(T)”选为“日志”,将“收缩操作”选中“在释放未使用的空间前重新组织页(O)”
6.在“将文件收缩到(K)”文本框中输入后面提示的最小大小的数值,点击[确定]即可。
1、打开查询分析器,输入命令
BACKUP LOG database_name WITH NO_LOG
2、再打开企业管理器--右键要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至xxm,这里会给出一个允许收缩到的最小m数,直接输入这个数,确定就可以了。
方法二:
设置检查点,自动截断日志
一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大
1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如用户数据库cwbase1)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存
2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定
3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据
方法三:通过SQL收缩日志
把代码复制到查询分析器里,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE tablename -- 要操作的数据库名
SELECT @LogicalFileName = 'tablename_log', -- 日志文件名
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 1 -- 你想设定的日志文件的大小(M)
-- Setup / initialize
DECLARE @OriginalSize int
SELECT @OriginalSize = size
FROM sysfiles
WHERE name = @LogicalFileName
SELECT 'Original Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
CREATE TABLE DummyTrans
(DummyColumn char (8000) not null)
DECLARE @Counter INT,
@StartTime DATETIME,
@TruncLog VARCHAR(255)
SELECT @StartTime = GETDATE(),
@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Wrap the log if necessary.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)
AND (@OriginalSize * 8 /1024) > @NewSize
BEGIN -- Outer loop.
SELECT @Counter = 0
WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
BEGIN -- update
INSERT DummyTrans VALUES ('Fill Log')
DELETE DummyTrans
SELECT @Counter = @Counter + 1
END
EXEC (@TruncLog)
END
SELECT 'Final Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),size) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
DROP TABLE DummyTrans
SET NOCOUNT OFF
方法四:删除日志文件。
此方法有一定的风险性,因为sql server的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。1、操作前请断开所有数据库连接。
2、分离数据库
分离数据库:企业管理器->服务器->数据库->cwbase1->右键->分离数据库
分离后,cwbase1数据库被删除,但保留了数据文件和日志文件
3、删除log物理文件
删除LOG物理文件,然后附加数据库: 企业管理器->服务器->数据库->右键->附加数据库
此法生成新的log,大小只有500多k。
注意:建议使用第一种方法。操作前请确保所有操作员都已经推出系统,断开数据库的连接。
以上操作前,请务必做好数据备份!
1.sql server 2005 清除日志语句
dump transaction 数据库名称 with no_log
backup log 数据库名称 with no_log
dbcc shrinkdatabase(数据库名称)
2.sql server 2008 清除日志语句
sp_dboption 数据库名称, "trunc. log on chkpt.", true
checkpoint
sp_dboption 数据库名称, "autoshrink", true
清除SQLSERVER数据库日志文件的方法:
1、先将这个数据库卸载:
EXEC sp_detach_db 'database_name', 'true'
然后将该数据库所对应的Log文件删掉;
最后,再将这个数据库注册到系统里面:
EXEC sp_attach_db @dbname = N'database_name',
@filename1 = N'e:\mssql7\data\database_name_data.mdf'
2、数据库上点右键-所有任务-收缩数据库-选择收缩文件为LOG 。
3、清除SQLSERVER数据库日志的方法:
*******下面是转发的邮件*****
The shrinking of log files is not immediate in SQL Server 7.0. The
shrinking of log files does not occur until the active portion of the
log moves. As updates are performed on the database, the shrink
operation occurs at checkpoints or transaction log backups. Each log
file is marked with the target_percent for the shrink operation. Each
subsequent log backup or log truncation attempts to shrink the file to
bring its size as close to the target_percent as possible. Because a log
file can be shrunk only to a virtual log file boundary, it may not be
possible to shrink a log file to a size smaller than the size of a
virtual log file even if it is not being used. Please refer to SQL Book
Online for the details.
RESOLUTION
Below script will help to shrink the log file immediately, pls keep it
running for 3~4 minutes and then stop it manually.
\* Run "select fileid, name,filename from ..sysfiles" to get
the fileid which you want to shrink *\
use
go
dbcc shrinkfile(fileid,notruncate)
dbcc shrinkfile(fileid,truncateonly)
create table t1 (char1 char(4000))
go
declare @i int
select @i = 0
while (1 = 1)
begin
while (@i < 100)
begin
insert into t1 values ('a') select @i = @i +1
end
truncate table t1
backup log with truncate_only
end
go
*****转发内容结束*****
SQLServer数据库日志清理 清除sqlserver2005日志
有时候当系统运行时间比较长的时候,我们把备份的数据库还原的时候发现,数据库中数据文件和日志文件变的好大,特别是日志文件。现在给大家介绍如何清理SQLServer数据库日志;有两种方法如下:
方法一:手动清除sqlserver2005日志
1.右键在清除日志的数据库,如“TestDB”,点击[新建查询(Q)]
2.输入以下SQL语句,其中“TestDB”是数据库名称
DUMP TRANSACTION TestDB WITH NO_LOG
3.执行该SQL,成功后继续以下操作
4.右键该数据库节点,点击[任务(T)] -> [收缩(S)] -> [文件(F)]
5.在弹出的“收缩文件”对话框中,将“文件类型(T)”选为“日志”,将“收缩操作”选中“在释放未使用的空间前重新组织页(O)”
6.在“将文件收缩到(K)”文本框中输入后面提示的最小大小的数值,点击[确定]即可。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |