一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此 *** 作以免数据库日志过大
1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存
2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定
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),(@OriginalSize8/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),(size8/1024)) + 'MB'FROM sysfiles
WHERE name = @LogicalFileName
DROP TABLE DummyTrans
SET NOCOUNT OFF
-------------------------------------
或者参考一下这个:
--压缩日志及数据库文件大小
/--特别注意
请按步骤进行,未进行前面的步骤,请不要做后面的步骤
否则可能损坏你的数据库
--/
1清空日志
DUMP TRANSACTION 库名 WITH NO_LOG
2截断事务日志:
BACKUP LOG 数据库名 WITH NO_LOG
3收缩数据库文件(如果不压缩,数据库的文件不会减小
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
也可以用SQL语句来完成
--收缩数据库
DBCC SHRINKDATABASE(客户资料)
--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select from sysfiles
DBCC SHRINKFILE(1)
4为了最大化的缩小日志文件(如果是sql 70,这步只能在查询分析器中进行)
a分离数据库:
企业管理器--服务器--数据库--右键--分离数据库
b在我的电脑中删除LOG文件
c附加数据库:
企业管理器--服务器--数据库--右键--附加数据库
此法将生成新的LOG,大小只有500多K
或用代码:
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。
a分离
EXEC sp_detach_db @dbname = 'pubs '
b删除日志文件
c再附加
EXEC sp_attach_single_file_db @dbname = 'pubs ',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubsmdf '
5为了以后能自动收缩,做如下设置:
企业管理器--服务器--右键数据库--属性--选项--选择 "自动收缩 "
--SQL语句设置方式:
EXEC sp_dboption '数据库名 ', 'autoshrink ', 'TRUE '
6如果想以后不让它日志增长得太大
企业管理器--服务器--右键数据库--属性--事务日志
--将文件增长限制为xM(x是你允许的最大数据文件大小)
--SQL语句的设置方式:
alter database 数据库名 modify file(name=逻辑文件名,maxsize=20)需要进SQL SERVER的控制面板,删除你不想要的服务。
不要想删除什么就到注册表里删,一个大型的应用软件也许在注册表里会有很多相关的信息,如果你不熟悉,很可能找不全也有可能误删造成软件运行不正常。使用查询从数据库中删除一条或多条记录
了解如何使用查询删除数据
可以使用两类查询来删除 Access 数据库中的数据。具体使用哪种查询取决于要执行的删除的类型。
如果需要删除一个或多个表中的记录的个别字段,您可以使用更新查询将现有值更改为空值(即不包含数据)或零长度字符串(中间不包含空格的一对双引号)。
您需要使用更新查询来删除个别字段中的数据,因为在默认情况下,删除查询仅删除整行。使用更新查询“删除”数据的过程包含以下主要步骤:创建一个选择查询并确保该查询仅返回您要删除的数据。然后将此查询转换为更新查询,并使用 NULL 值或零长度字符串作为更新值,再运行查询以更新现有数据。
如果需要删除整条记录(行),您可以使用删除查询。
默认情况下,删除查询将删除每个字段中的所有数据,包括唯一标识记录的键值。运行该查询时,它始终会从表中删除整个行。此过程包括以下主要步骤:创建一个选择查询并确保该查询返回您要删除的记录,然后将此查询转换为删除查询,并运行该查询以删除数据。
进行 *** 作时,请记住:如果要删除的记录位于一对多关系的“一”端,必须先更改关系的属性,然后才能运行查询,本文后面的准备删除相关数据一节介绍了如何执行此任务。您还必须进行其他一些更改才能执行删除 *** 作,因为默认情况下,Access 禁止删除一对多关系的“一”端中的数据。
如果需要了解有关一对多关系的详细信息,请参阅文章数据库设计基础和创建、编辑或删除关系。
此外,还请记住:更新或删除部分或整条记录后,将不能撤消更改,因此,运行删除查询之前,应始终先备份数据。有关详细信息,请参阅本文后面的备份数据库。
以下各节中的步骤介绍了如何创建更新查询以删除单个字段中的数据;以及如何创建删除查询以删除整条记录。
注释 通常,只有当需要快速更改或删除大量数据时,才使用更新查询和删除查询。如果只需要删除少量记录(便于手动删除的任何数量),您可以在数据表视图中打开表,选择要删除的字段或行,然后按 Delete。
有关删除数据的其他方法的详细信息,请参阅从数据库中删除一条或多条记录一文。
数据库中删除记录的 *** 作
要使ASP应用程序能够删除数据库表中的现有记录,一般要完成四个步骤,也就是说删除页中必须具有四个构造块:
①一个用于从数据库表格中检索记录的过滤记录集(创建记录集);
②一个要删除记录数据的只读显示;
③一个将删除命令发送给服务器的“提交”按钮;
④一个更新数据库表的“删除记录”服务器行为,即对删除了记录的数据库表进行刷新。
删除页一次只能包含一个记录编辑服务器行为。不能在删除页中同时还使用“插入记录”或“更新记录”的服务器行为。
打开“删除记录”对话框(如下图所示),可以通过Dreamweaver8的“插入”菜单来 *** 作,也可以通过Dreamweaver8的“服务器行为”面板 *** 作。 *** 作步骤类似于数据库中添加、更新记录的 *** 作。
此对话框用于将服务器行为添加到包含HTM表单的页,以便当用户单击表单上的“提交”按钮时可以在数据库表中删除记录。对话框的设置步骤:
1、在“连接”下拉列表菜单中,选择一个到数据库的连接。如果您需要定义连接,则单击“定义”按钮。
2、在“从表格中删除”下拉列表菜单中,选择包含要删除的记录的数据库表。
3、在“选取记录自”下拉列表菜单中,指定一个包含要删除的记录集。
4、在“唯一键列”下拉列表菜单中,选择一个键列(通常是记录ID列)来标识数据库表中的记录。如果该值是一个数字,则选择“数字”选项。键列通常只接受数值,但有时候也接受文本值。
5、在“提交此表单以删除”d出菜单中,指定具有将删除命令发送到服务器的“提交”按钮的HTML表单。
6、在“删除后,转到”框中,输入在从数据库表中删除记录后打开的页或单击“浏览”按钮浏览到该文件。
7、单击“确定”。
参考:Dreamweaver8帮助
[二00六年八月十四日上午]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)