SQL数据库中日志收缩、截断等等是什么

SQL数据库中日志收缩、截断等等是什么,第1张

如:shgzts为数据库

dump transaction shgzts with no_log --截断日志

backup log shgzts with no_log --备份日志

dbcc shrinkdatabase(shgzts,truncateonly) --数据库收缩

一、工具:电脑、SQL Server 2008

二、 *** 作步骤:

1在开始菜单中点击“SQL Server Management Studio”在d出的界面点击连接,在数据库选项中选择需要备份的数据库文件,然后右击选择“任务”中的“备份。”

2在备份数据库TOBHIS,数据库选择“tobhis”,备份类型选择“完整”然后点击“添加”按钮。

3在出现的界面中点击文件夹后面的“”选择按钮。

4在“定位数据库文件中”选择“backup”文件路径,以及文件类型,还有写入数据库名称,然后点击“确定”按钮

5在出来的界面中就可以看到备份文件的名称以及路径了。然后点击确定按钮。

6然后数据库就会执行备份程序,备份成功后会出现如下面的提示框。

7为了确定数据库备份是否成功,可以找到刚才的备份路径来查看有没有备份好的数据。如下面图,说明备份成功了。

注意事项:

备份数据库的时候可以在备份类型中选择类型的,如差异备份。

Tempdb 信息

tempdb 是一个临时工作区。除其他用途外,SQL Server 还将 tempdb 用于:

显式创建的临时表的存储。

保存在查询处理和排序过程中创建的中间结果的工作表。

具体化的静态光标。

SQL Server 在 tempdb 事务日志中记录的信息只足够用于回滚事务,而不足以用于在数据库故障恢复过程中重新执行事务。这一特点提高了

tempdb 中 INSERT 语句的性能。另外,由于每次重新启动 SQL Server 时都会重新创建

tempdb,无需记录用于重新执行任何事务的信息。因此,没有任何要前滚或回滚的事务。当 SQL Server 启动时,通过使用 model

数据库的副本重新创建 tempdb,并将其重置为上次配置的大小。

默认情况下,tempdb

数据库配置为根据需要自动增长;因此,此数据库可能最终增长到大于所需的大小。简单地重新启动 SQL Server 会将 tempdb

的大小重置为上次配置的大小。配置的大小是用文件大小更改 *** 作(如带有 MODIFY FILE 选项的 ALTER DATABASE 或者 DBCC

SHRINKFILE 语句)设置的上次显式大小。本文说明您可以用来将 tempdb 收缩到小于其配置的大小的三种方法。

收缩 Tempdb 的方法 1

此方法要求您重新启动 SQL Server。

1

停止 SQL Server。打开命令提示符,然后键入以下命令启动 SQL Server:

sqlservr -c -f

-c 和 -f 参数使 SQL Server 以最小配置模式启动,让数据文件的 tempdb 大小为 1 MB,日志文件的 tempdb 为 05 MB。

注意:如果使用 SQL Server 命名实例,必须切换到适当的文件夹 (Program Files/Microsoft SQL Server/MSSQL$instance name/Binn),并使用 -s 开关 (-s%instance_name%)。

2

用查询分析器连接到 SQL Server,然后运行下列 Transact-SQL 命令:

ALTER DATABASE tempdb MODIFY FILE

(NAME = 'tempdev', SIZE = target_size_in_MB)

--Desired target size for the data file

ALTER DATABASE tempdb MODIFY FILE

(NAME = 'templog', SIZE = target_size_in_MB)

--Desired target size for the log file

3

通过在命令提示符窗口中按 Ctrl-C 停止 SQL Server,将 SQL Server 作为服务重新启动,然后验证 Tempdbmdf 和 Templogldf 文件的大小。

此方法的局限是它只能对默认的 tempdb 逻辑文件 tempdev 和 templog 进行 *** 作。如果将其他文件添加到了 tempdb,您可以在将 SQL Server 作为服务重新启动后收缩它们。在启动过程中将重新创建所有 tempdb 文件;因此,它们是空的并可删除。要删除 tempdb 中的其他文件,请使用带有 REMOVE FILE 选项的 ALTER DATABASE 命令。

收缩 Tempdb 的方法 2

使用 DBCC SHRINKDATABASE 命令将 tempdb 数据库作为整体收缩。DBCC SHRINKDATABASE 接收参数 target_percent,该参数是数据库收缩后数据库文件中剩余可用空间的所需百分比。如果使用 DBCC SHRINKDATABASE,可能必须重新启动 SQL Server。

重要说明:如果运行 DBCC SHRINKDATABASE,则 tempdb 数据库不能正在发生其他活动。要确保在运行 DBCC SHRINKDATABASE 时其他进程无法使用 tempdb,必须以单用户模式启动 SQL Server。有关更多信息,请参考本文的在使用 Tempdb 时执行 DBCC SHRINKDATABASE 或 DBCCSHRINKFILE 的结果 一节。

1

通过使用 sp_spaceused 存储过程确定 tempdb 中当前使用的空间。然后,计算剩余可用空间的百分比,它将用作 DBCC SHRINKDATABASE 的参数;该计算是基于所需数据库大小进行的。

注意:在某些情况下,您可能必须执行 sp_spaceused @updateusage=true 来重新计算使用的空间和获得更新的报告。有关 sp_spaceused 存储过程的更多信息,请参考 SQL Server 联机丛书。

请考虑以下示例:

假定 tempdb 有两个文件:主数据文件 (Tempdbmdf) 和日志文件 (Tempdbldf),其大小分别为 100 MB 和 30 MB。假定 sp_spaceused 报告主数据文件包含 60 MB 的数据。还假定您要将主数据文件收缩到 80 MB。计算收缩后剩余可用空间的所需百分比,即 80 MB - 60 MB = 20 MB。现在,用 20 MB 除以 80 MB = 25%,这就是您的 target_percent。事务日志文件将据此进行收缩,从而在数据库收缩后剩下 25% 即 20 MB 的可用空间。

2

用查询分析器连接到 SQL Server,然后运行下列 Transact-SQL 命令:

dbcc shrinkdatabase (tempdb, 'target percent')

-- This command shrinks the tempdb database as a whole

对 tempdb 数据库使用 DBCC SHRINKDATABASE

命令具有局限性。数据文件和日志文件的目标大小不能小于创建数据库时指定的大小,也不能小于用文件大小更改 *** 作(如带有 MODIFY FILE 选项的

ALTER DATABASE 命令或 DBCC SHRINKFILE 命令)显式设置的上次大小。DBCC SHRINKDATABASE

的另一个限制是 target_percentage 参数的计算和它对当前使用的空间的依赖。

收缩 Tempdb 的方法 3

使用命令 DBCC SHRINKFILE 收缩单个 tempdb 文件。DBCC SHRINKFILE 比 DBCC SHRINKDATABASE 提供更多的灵活性,因为您可以对单个数据库文件使用它而不必影响属于同一数据库的其他文件。DBCC SHRINKFILE 接收 target size 参数,这是所需的数据库文件的最终大小。

重要说明:必须在 tempdb 数据库不发生任何活动时运行 DBCC SHRINKFILE 命令。要确保在执行 DBCC SHRINKFILE 时其他进程不能使用 tempdb,必须以单用户模式重新启动 SQL Server。有关 DBCC SHRINKFILE 的更多信息,请参见本文中在使用 Tempdb 时执行 DBCC SHRINKDATABASE 或 DBCCSHRINKFILE 的结果 一节。

1

确定主数据文件 (tempdbmdf)、日志文件 (templogldf) 和/或添加到 tempdb 的其他文件的所需大小。确保在这些文件中使用的空间小于或等于所需的目标大小。

2

用查询分析器连接到 SQL Server,然后为需要收缩的特定数据库运行下列 Transact-SQL 命令:

use tempdb

go

dbcc shrinkfile (tempdev, 'target size in MB')

go

-- this command shrinks the primary data file

dbcc shrinkfile (templog, 'target size in MB')

go

-- this command shrinks the log file, look at the last paragraph

DBCC SHRINKFILE 的一个优点是它可以将文件大小减小到小于其原始大小。您可以对任何数据文件或日志文件执行 DBCC SHRINKFILE。DBCC SHRINKFILE 的一个局限是您无法使数据库小于 model 数据库的大小。

在 SQL Server 70 中,事务日志收缩是一个推迟 *** 作,您必须执行日志截断和备份,以帮助进行数据库中的收缩 *** 作。但是,默认情况下,tempdb 将 trunc log on chkpt 选项设置为“打开”(ON);这样,您就无需为该数据库执行日志截断。有关如何在 SQL Server 70 中收缩数据库事务日志的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

256650 (>

数据库文件的收缩性不大

主要是对数据库的log日志进行收缩

这个收缩度非常的大,5G的日志文件最终都有可能收缩到512K

给你说个简单的收缩方法

1清空日志

DUMP TRANSACTION 库名 WITH NO_LOG

2截断事务日志:

BACKUP LOG 数据库名 WITH NO_LOG

3收缩数据库文件(如果不压缩,数据库的文件不会减小

企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件

--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

这个方法非常的立竿见影,祝你好运了

企业管理器里

->在所要进行备份的数据库上

右键

->所有任务

->维护计划

->点四次下一步

->

就是备份了

说明:这个页面上你可以点更改来

详细的配置如"每周-~周五00:00自动备份",及路径设置等。

--------------------------------------------

问题补充:强调一下,备份的文件名是“数据库名+备份日期”,每次更新的,否则会覆盖原来的备份,就没有意义了!

提问者:汉之尊

-

经理

五级

--------------------------------------------

针对你的这种做法那你尝试用存储过程吧,灵活、可以根据具体需要定制:

在要备份的数据上建立以下存储过程:

CREATE

PROCEDURE

[dbo][过程名]

AS

declare

@filename

nvarchar(100),--文件名

@NowDay

int

--设置时间

set

@filename='D:\data'+cast(Day(GetDate())

as

varchar(2))+'dat'

--文件路径及文件名

Set

@NowDay=Day(GetDate())

if

(@NowDay>=20)

or

(@NowDay<=10)

--这个月的20到下个月的10要备份

begin

print

@filename

BACKUP

DATABASE

[数据库名()你也可以设参数]

TO

DISK

=

@filename

WITH

INIT

,

NOUNLOAD

,

NAME

=

N'XX数据备份',

NOSKIP

,

STATS

=

10,

NOFORMAT

end

自己推敲一下,相信你会实现的!

以上就是关于SQL数据库中日志收缩、截断等等是什么全部的内容,包括:SQL数据库中日志收缩、截断等等是什么、如何备份sql server 2008日志文件、如何收缩 SQL Server 中的 Tempdb 数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10168617.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存