SQL Server数据库压缩技巧指南
sql server 压缩数据库方法
sql server 压缩数据库方法在SQL Server 中,可以使用几种方法来压缩数据库。
以下是其中一些方法:1. 使用 T-SQL 脚本:可以使用 T-SQL 脚本来压缩数据库。
例如,使用 `ALTER DATABASE` 语句和 `REBUILD_LOG` 或 `REBUILD_FILE` 子句来压缩数据库日志和文件。
```sql-- 压缩日志文件ALTER DATABASE [YourDatabaseName]REBUILD_LOG;-- 压缩数据文件ALTER DATABASE [YourDatabaseName]REBUILD_FILE (N'LogicalFileName', N'NewFileName', 1);```2. 使用 SQL Server Management Studio (SSMS):在 SQL Server Management Studio 中,你可以右击数据库 -> 任务 -> 收缩 -> 文件或文件组。
这将打开一个对话框,你可以选择收缩数据库的方法和设置。
3. 使用 ALTER DATABASE 语句:你可以使用 ALTER DATABASE 语句来设置数据库的自动收缩选项。
例如:```sqlALTER DATABASE [YourDatabaseName]SET AUTO_SHRINK ON;```请注意,自动收缩通常不是一个好的做法,因为它可能会影响性能并导致大量的日志操作。
4. 使用第三方工具:市场上有很多第三方工具,如 Redgate's SQL Compact,可以帮助你更有效地压缩数据库。
这些工具通常提供更高级的压缩选项和更好的性能。
5. 优化数据库设计:在某些情况下,压缩数据库可能不是一个解决方案。
例如,如果数据库太大,可能需要重新考虑数据库设计,例如通过规范化、反规范化、分区或使用其他技术来减少数据库的大小。
如何让SQL Server数据库自动备份并压缩
如何让 SQL Server 数据库自动备份并压缩如果 SQL Server 代理没有启动, 我们先把其启动, 然后新建立一个作业, 名称命名为“MyDb 完全备份 完全备份”, 在分类下面选择“数据库维护”,然后新建立作业第一个步骤,步骤名为“对数据进行完全备份”,然后在命 令框中输入如下的 SQL 代码:DECLARE @strSqlVARCHAR(1000),@strSqlCmd VARCHAR(1000) ,@timeDateDiff INT SET @timeDateDiff = DATEDIFF(week,0,GETDATE()) SET @timeDateDiff = CASE DATEPART(WEEKDAY,GETDATE()) WHEN 1 THEN @timeDateDiff -1 ELSE @timeDateDiff END SET @strSql='D:\DataBase\BackData\MyDb_' -- 备份目录及备份的文件头 +CONVERT(CHAR(8),DATEADD(week, @timeDateDiff,0),112) -- 完全备份日期 +'_0100' +'完全备份' SET @strSqlCmd= @strSql+'.BAK' --备份文件的扩展名 -- 完全备份时间BACKUP DATABASE [MyDb] TO DISK = @strSqlCmd WITH INIT ,NOUNLOAD ,NAME = N'MyDb 备份' ,NOSKIP ,STATS = 10 ,NOFORMAT操作如图一:然后开始执行对数据库的压缩 压缩,在步骤中再新建一个作业,步骤名为“压缩数据库”,然后在命令框中输入 压缩 如下的 SQL 代码:DECLARE @strSqlVARCHAR(1000),@strSqlCmd VARCHAR(1000) ,@timeDateDiff INT ,@strWeekDay VARCHAR(20) SET @timeDateDiff= DATEDIFF(week,0,GETDATE()) SET @timeDateDiff= CASE DATEPART(WEEKDAY,GETDATE()) WHEN 1 THEN @timeDateDiff-1 ELSE @timeDateDiff END SET @strSql='D:\DataBase\BackData\MyDb_' -- 备份目录及备份的文件头 +CONVERT(CHAR(8),DATEADD(week,@timeDateDiff,0),112) -- 完全备份日期 +'_0100' +'完全备份' -- 完全备份时间SET @strWeekDay= CASE DATEPART(WEEKDAY,GETDATE()) WHEN 1 THEN '星期天' WHEN 2 THEN '星期一'WHEN 3 THEN '星期二' WHEN 4 THEN '星期三' WHEN 5 THEN '星期四' WHEN 6 THEN '星期五' WHEN 7 THEN '星期六' ENDSET @strSqlCmd= 'ECHO 压缩开始日期: '+CONVERT(VARCHAR(20),GETDATE(),120)+' '+@strWeekDay+' >> D:\DataBase\BackData\CompressDataBase\MyDb_'+CONVERT(CHAR(6),DATEADD(week, @timeDateDiff,0),112)+'.txt' EXEC master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUTSET @strSqlCmd= 'RAR.EXE A -R '+@strSql+'.RAR '+@strSql+'.BAK >> D:\DataBase\BackData\CompressDataBase\MyDb__'+CONVERT(CHAR(6),DATEADD(week, @timeDateDiff,0),112)+'.txt' PRINT LEN(@strSqlCmd) PRINT (@strSqlCmd)EXEC master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUTSET @strSqlCmd= 'ECHO 压缩日期: '+CONVERT(VARCHAR(20),GETDATE(),120)+' '+@strWeekDay+' >> D:\DataBase\BackData\CompressDataBase\MyDb_'+CONVERT(CHAR(6),DATEADD(week, @timeDateDiff,0),112)+'.txt' EXEC master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUT操作如图二:完成后我们可以看到操作步骤的对话框,如图三:图三 数据完全备份的步骤我们对照上图,注意两点,第一个是步骤 1“成功时”这一列的显示,当成功的时候转到下一步,“失败 时”当失败的时候失败后退出,步骤 2“成功时”当成功的时候成功后退出,“失败时”当失败时失败后退出。
sqlserver数据库过大,收缩方法
sqlserver数据库过大,收缩方法English: To shrink a SQL Server database, you can use the DBCC SHRINKDATABASE command. This command will reduce the physical files of the database to a smaller size by moving pages of data from the end of the file to unoccupied space closer to the beginning of the file. However, it is important to note that shrinking a database can have negative effects on performance and should be done with caution. Before shrinking the database, it is important to identify if the database is actually too large or if there are any underlying issues causing the growth. It is also recommended to backup the database before performing any shrink operations in case any data is lost during the process. Additionally, it is important to monitor the database size regularly and implement better data management practices to prevent the database from growing too large in the future.Translated content: 要收缩 SQL Server 数据库,您可以使用 DBCC SHRINKDATABASE 命令。
sqlserver数据库压缩步骤
数据库压缩是一种优化数据库性能的方法,通过压缩数据来减少磁盘空间的占用,同时也能加速备份和恢复速度,减少资源和性能占用。
本文将介绍如何在SQL Server数据库中启用压缩备份策略,并进行压缩操作。
1. 首先需要打开数据库对象资源管理器,右键单击需要启用压缩备份策略的服务器,然后打开属性对话框。
2. 单击数据库设置节点,建立新的备份媒体。
同时,需要注意备份媒体的文档格式、大小等问题。
3. 选择要压缩的表或存储过程,右键单击,选择“属性”。
4. 在“选项”选项卡中,勾选“压缩”复选框。
然后可以根据需要调整压缩级别,默认为“高”。
5. 在“压缩方式”下拉列表中选择压缩方式,建议选择“存储过程压缩”,这是SQL Server提供的一种高效的压缩方式,可以有效地减少存储过程的体积。
6. 最后点击“确定”,完成设置并保存更改。
通过上述步骤,可以在SQL Server数据库中启用压缩备份策略,并对特定的表或存储过程进行压缩。
注意,压缩备份和非压缩备份不能同时存在,老版本无法读取新版本的压缩备份。
在进行数据库压缩时,需要注意以下几点:1. 压缩可能会影响数据库性能,因此应在非繁忙时间进行压缩操作。
2. 如果要在相同服务器上同时压缩多个数据库,建议将其放在不同的时间段进行,避免同时压缩带来的性能问题。
3. 对于大数据量的表或存储过程,建议分批进行压缩操作,避免一次性压缩导致的性能下降。
4. 对于备份或还原数据库的操作,建议在压缩前进行,以确保备份和还原过程中不会对压缩的数据产生影响。
总之,数据库压缩是一种有效的优化数据库性能的方法,通过减少磁盘空间的占用和加速备份和恢复速度,可以提高数据库的性能和效率。
sqlserver通过脚本进行数据库压缩全备份的方法【推荐】
sqlserver通过脚本进⾏数据库压缩全备份的⽅法【推荐】问题:
⽣产环境的数据库可能⽐较⼤,如果直接进⾏全备⽽不压缩的话,备份集就会占⽤了⼤量磁盘空间。
给备份⽂件的存放管理带来不便。
解决⽅案:
通过with compression显式启⽤备份压缩,指定对此备份执⾏备份压缩,覆盖服务器级默认设置。
适⽤于 SQL Server 2008和更⾼版本。
因为相同数据的压缩的备份⽐未压缩备份⼩,所以压缩备份所需的设备 I/O 通常较少,因此通常可⼤⼤提⾼备份速度。
脚本:
/*
说明:⼿动修改【DB名称】、要备份到的【路径和⽂件名】,再执⾏脚本
脚本来源:https:///zhang502219048/p/11062589.html
*/
backup database DbName to disk = 'D:\DbName.bak' --全备
with compression; --压缩备份
go
参考微软官⽅⽂档:
总结
以上所述是⼩编给⼤家介绍的sql server通过脚本进⾏数据库压缩全备份的⽅法,希望对⼤家有所帮助,如果⼤家有任何疑问欢迎给我留⾔,⼩编会及时回复⼤家的!。
sqlserver数据库收缩步骤
sqlserver数据库收缩步骤数据库收缩是指将数据库中的空间回收和重新组织,以便提高性能和节省磁盘空间。
以下是SQL Server数据库收缩的步骤:1.首先,运行`DBCCSHRINKDATABASE`命令来收缩整个数据库。
该命令将尝试压缩数据库文件并释放未使用的空间。
语法如下:```DBCC SHRINKDATABASE (database_name)```其中,`database_name`是要收缩的数据库的名称。
2.默认情况下,`DBCCSHRINKDATABASE`将尝试将数据库缩小到其实际大小。
但是,如果你希望将数据库缩小到指定的大小,可以使用`TARGET_SIZE`选项。
例如,要将数据库缩小到100MB大小,可以执行以下命令:```DBCC SHRINKDATABASE (database_name, 100)```3.收缩数据库过程可能会造成数据库锁定,因此在收缩数据库之前应考虑该数据库的使用情况。
如果数据库正在被频繁使用,可能需要在低峰时间进行收缩操作。
4.收缩数据库期间,可以将进度信息输出到消息窗口。
要启用此选项,可以使用`WITHNO_INFOMSGS`选项。
例如:DBCC SHRINKDATABASE (database_name) WITH NO_INFOMSGS```5.如果只需要收缩特定的表或索引,可以使用`DBCCSHRINKFILE`命令。
该命令用于收缩特定文件(数据文件或日志文件),而不是整个数据库。
语法如下:```DBCC SHRINKFILE (file_name, target_size)```6. `DBCC SHRINKFILE`命令中的`file_name`参数可以指定要收缩的文件的名称。
可以通过查询`sys.database_files`系统视图或使用SQL Server Management Studio(SSMS)查看文件名称。
7.使用`DBCCSHRINKFILE`命令收缩数据库文件时,可以将文件缩小到其实际大小,或者指定目标大小。
SQLserver数据库压缩空间
SQLserver数据库压缩空间
SQL server数据库,在⼿动删除或者⾃动删除数据后,查看数据库物理⽂件发现占⽤空间并没有释放,果断采⽤万能的重启。
(反正是⾃⼰⽤的⼀个服务器,随便玩。
如果不是只有⾃⼰⽤的服务器,还是建议让运维或者DBA来做)。
服务器重启后发现还是没有释放空间,emmmmmm。
那就请教百度⽼师了。
⽹友的解答是,SQL server数据库不会⾃⼰压缩已经扩展的空间,如果需要压缩需要⼿动操作。
压缩空间的⽅式有两种:1、数据库。
2、⽂件。
在要收缩空间的数据库上右键--》任务--》收缩--》1、数据库,2⽂件(⾃⼰选择)。
然后就等着吧。
两个会有不同,数据库会将该数据库所有的未使⽤空间进⾏收缩。
适⽤于数据和⽇志都有清空或删除。
选择⽂件,
有三种可以进⾏收缩,数据、⽇志和filestream 数据。
前两个⽐较熟悉,就是对数据和⽇志占⽤空间进⾏收缩,第三个⾃⼰也不是很了解,建议百度下,不过很多地⽅都有讲解。
我选择的是数据库收缩,还是很慢的,⼤家等着吧。
SQL Server数据库压缩技巧指南
SQL Server数据库压缩技巧指南中的数据库数据文档增长事务日志文档你能够最大限度地缩小数据库吗?(一)我经常看见人们制定定期缩小数据库文件(数据或T-Log)的SQL Server维护计划和定制任务。
我通常也会建议我的客户和同事除非他们要研究数据库增长原因,否则不要缩小数据库文件,尤其是在一般基础上不要这么做。
我曾经多次和那些更多关注磁盘空间而不是性能的人们讨论过这个话题,所以在这里我决定进行一下测试来证明我所说的属实。
此外我还要告诉大家数据库文件在事务办理过程中增长对SQL Server性能会带来什么样的影响。
我将在以下几个增长环境中进行测试:1、数据库数据文件增长2、数据库T-log增长3、Tempdb增长这是本系列中的第一篇技巧,即检测SQL Server中的数据库数据文件增长。
测试环境硬件和软件配置我进行测试的系统硬件和软件配置如下:你能够最大限度地缩小数据库吗?(三)结果总结将结果放在表格中进行比较,比较项目包括CPU、读和写意及第一个循环和第二个循坏之间的间隔时间,首先是文件增长,后来就不会出现文件增长的情况。
这里有两个地方进行的比较:百分比不同(第二环节和第一个环节之间的比为*100)并且不同的处数也不同((<First loop is > - <Second loop is >)。
如果得到的是正数,那就是说第二个环节进行得比较好。
如果是负数,意思就相反。
在每个比较表的最后,比较得出的平均值就是这三次重复得到的结果平均值。
在这篇文章的最后,我们通过一个表来比较一下所有测试过程中所得到的平均值。
测试1:原始文件大小=256目标文件大小=8448小事务(一次1行),总行数:8160文件增长大小为1MB图3下面是连续执行三次上述代码所得到的SQL Profiler结果(我清除了调试查询):你能够最大限度地缩小数据库吗?(四) 结果总结测试2原始文件大小=256目标文件大小=34816小事务(一次1行),总行数:33373文件增长大小为1MB现在我们来测试一下插入更多数据。
SQL数据库的压缩以及数据的导出讲解学习
S Q L数据库的压缩以及数据的导出SQL数据库的压缩,数据的导出1.SQL数据库的压缩数据库使用时间较长时(一般周期是一年),我们需要对数据库进行压缩,不过我们需要注意的是在压缩前,先要将数据库进行备份(相关步骤已经写出图文教材),这点很重要。
我们压缩数据库时,需要先将过去一年里面的分钟,五分钟,小时数据进行删除,具体步骤如下:先确定好DAS软件使用的数据库名称(在DAS软件中的系统设置里面的基本设置中可以确定),打开企业管理器,选择相对应的数据库名,点击对应数据库前面的小加号,展开,单击表,在弹出的的窗口中,右击pwkdata2项,在打开表中选择返回所有行,具体如图:左击返回所有行,打开,在弹出的的新窗口中点击SQL项,如图:点击SQL后,在弹出的新窗口中,将原来的更改为delete from pwkdata2, 并在其下方输入指令WHERE (res_date >= '2014-1-1') AND (res_date <= '2014-12-31'),期间用空格隔开,此指令的意思就是删除一年的小时数据(Pwkdata2指小时数据),指令中的日期可以进行改动,随现场具体情况而定,指令输好后点击窗口中的红色感叹号,待弹出对话框后点击确认即可,如图:点击确认后,数据删除成功。
上面的pwkdata2是指的小时数据,我们除了删除小时数据,还需要删除pwkdata4(1分钟数据),pwkdata(五分钟数据),pwkdata3(日数据),pwkdata5(实时数据),步骤同上数据删好后,我们就可以进行数据库压缩了,打开企业管理器,选择相对应的数据库名,右击该数据库,在所有任务中选择收缩数据库。
如图打开收缩数据库项,在弹出的窗口中点击文件,在数据库文件一栏中选择das_flow2_data,然后点击确定,然后再点击文件,在数据库文件一栏中选择das_flow2_log,点击确定,然后再点击确定,数据库收缩完成。
如何让SQLServer数据库自动备份并压缩成rar文件
如何让SQLServer数据库⾃动备份并压缩成rar⽂件1、先开启xm_cmdshell服务xp_cmdshell 扩展存储过程将命令字符串作为操作系统命令 shell 执⾏,并以⽂本⾏的形式返回所有输出。
由于xp_cmdshell 可以执⾏任何操作系统命令,所以⼀旦SQL Server管理员帐号(如sa)被攻破,那么攻击者就可以利⽤xp_cmdshell 在SQL Server中执⾏操作系统命令,如:创建系统管理员,也就意味着系统的最⾼权限已在别⼈的掌控之中。
由于存在安全隐患,所以在SQL Server 2005中,xp_cmdshell 默认是关闭的。
两种⽅式启⽤xp_cmdshell 1.打开外围应⽤配置器—> 功能的外围应⽤配置器—> 实例名Database Enginexp_cmdshell—> 启⽤2.sp_configure --开启xp_cmdshell部分---------------------------------------------------- To allow advanced options to be changed.EXEC sp_configure 'show advanced options', 1GO-- To update the currently configured value for advanced options.RECONFIGUREGO-- To enable the feature.EXEC sp_configure 'xp_cmdshell', 1GO-- To update the currently configured value for this feature.RECONFIGUREGO--通过xp_cmdshell执⾏shell命令的部分--------------------------------------------------Exec xp_cmdshell 'bcp 'GO--关闭xp_cmdshell部分------------------------------------------------------- To allow advanced options to be changed.EXEC sp_configure 'show advanced options', 1GO-- To update the currently configured value for advanced options.RECONFIGUREGO-- To enable the feature.EXEC sp_configure 'xp_cmdshell', 0GO-- To update the currently configured value for this feature.RECONFIGUREGO3、新建⽴⼀个作业,名称命名为“MyDb完全备份”,在分类下⾯选择“数据库维护”,然后新建⽴作业第⼀个步骤,步骤名为“对数据进。
sql server数据库文件的压缩方法
sql server数据库文件的压缩方法如果需要压缩sql server数据库文件,应该怎么操作呢?下文将为您介绍sql server数据库文件的压缩详细的方法步骤,希望能够帮助到您兰州白癜风专科医院。
请按步骤进行,未进行前面的步骤时,请不要做后面的步骤,以免损坏你的数据库.一般不建议做第4,6两步,第4步不安全,有可能损坏数据库或丢失数据。
第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复。
1.清空日志DUMP TRANSACTION库名WITH NO_LOG2.截断事务日志BACKUP LOG数据库名WITH NO_LOG3.收缩数据库文件(如果不压缩,数据库的文件不会减小企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了收缩数据库文件(也可以用SQL语句来完成--收缩数据库DBCC SHRINKDATABASE(客户资料)--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select*from sysfilesDBCC SHRINKFILE(1)4.为了最大化的缩小日志文件(如果是sql7.0,这步只能在查询分析器中进行)a.分离数据库:企业管理器--服务器--数据库--右键--分离数据库b.在我的电脑中删除LOG文件c.附加数据库:企业管理器--服务器--数据库--右键--附加数据库此法将生成新的LOG,大小只有500多K或用代码:下面的示例分离pubs,然后将pubs中的一个文件附加到当前服务器兰州白癜风治疗。
压缩数据库
压缩数据库解决方案1、用BACKUP LOG database WITH NO_LOG清除日志把数据库属性中的故障还原模型改为“简单”可以大大减慢日志增长的速度。
如果把还原模型调到简单,这样就不支持时间点还原了,但是日志文件会很小,如果数据比较重要推荐还是把数据库的还原模型调为完全用BACKUP LOG database WITH NO_LOG命名后,会截断不活动日志,不减小物理日志文件的大小,但逻辑日志会减小,收缩数据库后会把不活动虚拟日志删除来释放空间,不会损坏数据。
如果日志被截断并收缩数据库后,就不能直接用最近的一个全库备份做时间点还原,建议立即备份数据库,以防万一。
2、sql server运行中,是否能删除主数据库事务日志文件步骤如下:(1)、分离数据库企业管理器--数据库--右击你要删除日志的数据库--所有任务--分离数据库(2)、然后删除日志文件(3)、然后再附加数据库企业管理器--数据库--右击数据库--所有任务--附加数据库这时候只附加。
mdf就可以了。
3、压缩SQL数据库及日志的详细方法SQL Server 2000基础教程——压缩数据库数据库在使用一段时间后,时常会出现因数据删除而造成数据库中空闲空间太多的情况,这时就需要减少分配给数据库文件和事务日志文件的磁盘空间,以免浪费磁盘空间。
当数据库中没有数据时,可以修改数据库文件属性直接改变其占用空间,但当数据库中有数据时,这样做会破坏数据库中的数据,因此需要使用压缩的方式来缩减数据库空间。
可以在数据库属性选项中选择“Auto shrink”选项,让系统自动压缩数据库,也可以用人工的方法来压缩。
人工压缩数据库有以下两种方式:1、用Enterprise Manager 压缩数据库在Enterprise Manager 中在所要压缩的数据库上单击右键,从快捷菜单中的“所有任务(All Tasks)”中选择“Shrink Database(压缩数据库)”选项,就会出现如图6-10所示的对话框。
SQLServer数据库日志收缩
SQL Server数据库日志压缩注意事项数据库压缩有以下章节描述的3种方法,在使用任意方法时,请注意以下事项:在执行操作前,先备份数据库;所需操作的数据库不能有任何数据库连接,不能有查询窗口、Tomcat服务连接等;下文描述的所有SQL语句都必须在系统master数据库执行;下文描述中的YouDBName为将进行数据库压缩的数据库名;DBCC压缩数据库第一步:在master数据库上执行SQL:backup log YouDBName with no_log;第二步:收缩DB的所有数据和日志文件,执行以下SQL:dbcc shrinkdatabase (YouDBName);卸载数据库重新注册第一步:卸除DB在MSSQL中的注册信息,执行以下SQL:exec sp_detach_db yourDBName,true;第二步:到DB日志物理文件所在的目录中去删除日志文件或将日志文件移出目录;第三步:执行以下SQL:exec sp_attach_single_file_db yourDBName,'d:\mssql\data\yourDBName_data.mdf '说明:以单文件的方式注册该DB,MSSQL自动为这个DB生成一个500K的日志文件,mdf文件的物理路径以现实情况为准。
分离数据库重新附加第一步:进入企业管理器,选中需处理数据库;第二步:右键所有任务->分离数据库;第三步:到数据库文件的存放目录,将yourDBName _log.LDF文件删除;第四步:右键企业管理器->附加数据库,选择yourDBName.mdf文件,并移除(remove) yourDBName_log.ldf选项,如图:第五步:点击“确定(OK)”,MSSQL自动为DB生成一个500K的日志文件。
SQL数据库的备份还原压缩与数据转移的方法
SQL数据库的备份还原压缩与数据转移的方法一、备份:1. 完全备份:将数据库的所有数据和对象都备份到一个文件中。
可以使用SQL Server的备份工具或者命令行工具来进行完全备份。
2.增量备份:只备份自上次完全备份或增量备份之后更改的数据。
可以定期进行增量备份来减少备份时间和空间占用。
3.差异备份:备份自上次完全备份之后更改的数据。
与增量备份的区别是差异备份会基于最近的完全备份而不是上次备份的时间。
二、还原:1.完全还原:将完整备份文件恢复到数据库中,还原数据库到备份时的状态。
2.增量还原:先还原最近的完全备份,然后逐个还原增量备份。
这样可以将数据库恢复到最新状态。
3.差异还原:先还原最近的完全备份,然后只还原最近的差异备份。
这样也可以将数据库恢复到最新状态。
三、压缩:1. 数据压缩:可以使用SQL Server的数据压缩功能来减少数据库文件的大小。
压缩后的文件需要更少的存储空间,提高了数据库的性能和效率。
2.备份压缩:可以在备份数据库时选择压缩备份选项。
压缩后的备份文件可以减少存储空间和备份时间,但同时可能会增加还原时间。
四、数据转移:1. 数据导入导出:可以使用SQL Server的数据导入导出向导或者命令行工具来将数据从一个数据库导出到另一个数据库。
可以选择导出的表、视图或者查询结果,并将其保存为文件,然后再导入到目标数据库中。
2. 数据同步:可以使用SQL Server复制功能来实现数据的实时同步。
可以将数据从一个数据库复制到另一个数据库,这样可以确保数据在不同数据库之间的一致性。
3. 数据传输:可以使用SQL Server的链接服务器功能来实现不同数据库之间的数据传输。
可以在不同的服务器之间建立链接,然后通过链接来查询和传输数据。
总结:SQL数据库的备份、还原、压缩与数据转移是数据库管理中的重要操作。
备份和还原可以保证数据的安全性和完整性,压缩可以减少数据库文件的大小,提高性能和效率,数据转移可以实现数据的导入导出和同步传输。
sql server 压缩数据库日志文件的方法
sql server 压缩数据库日志文件的方法在 SQL Server 中,你可以通过以下步骤压缩数据库的事务日志文件:备份事务日志:在执行任何压缩操作之前,首先建议备份数据库的事务日志。
你可以使用以下 T-SQL 命令:BACKUP LOG YourDatabaseName TO Disk = 'C:\Path\To\Your\Backup.trn';这将创建一个事务日志的备份文件,以便在需要时进行还原。
执行 DBCC SHRINKFILE 命令:使用 DBCC SHRINKFILE 命令来压缩事务日志文件。
以下是一个例子:USE YourDatabaseName;GODBCC SHRINKFILE (YourLogFileName, SIZE);其中,YourLogFileName 是你的事务日志文件名,SIZE 是你希望压缩到的目标大小。
你可以使用 TRUNCATEONLY 选项来释放事务日志文件中的空间而不进行缩小:DBCC SHRINKFILE (YourLogFileName, TRUNCATEONLY);请注意,这并不会改变文件的实际大小,只是释放未使用的空间。
监视事务日志的增长:压缩事务日志文件后,建议监视事务日志的增长情况,以避免再次出现过度膨胀。
你可以通过以下查询检查事务日志的使用情况:USE YourDatabaseName;GODBCC SQLPERF(logspace);这将返回关于数据库事务日志空间使用情况的信息。
请注意,频繁地收缩事务日志并不是一个好的做法,因为它可能影响性能,并且可能会导致事务日志文件再次膨胀。
最好的做法是定期备份事务日志,并根据需求进行压缩。
SQLServer自动备份、压缩、删除旧文件
SQLServer自动备份、压缩、删除旧文件SQLServer自动备份、压缩、删除旧文件作为数据库维护人员,可能大家经常要做的事情就是备份数据库,并且为了安全起见最好是异地备份,但是如果要经常备份,然后把他们传到本地,是一件非常费时费力的事情,尤其像我这种比较懒的程序员,甚至有时候会忘记备份,所以比较好的解决办法就是让SQL Server自动备份,同时自动下载。
同时由于SQL Server自动备份的bak文件通常都比较大,如果直接传到本地,要花比较久的时间,因此为了提高效率最好在备份后先压缩,并且为了安全起见,下载下来的文件还要加密。
那么如何让SQL自动备份、加密压缩、删除旧的BAK文件并自动下载的所有流程都自动完成呢,下面我就将我使用到的工具、方法和代码共享出来,供大家参考。
第一步:在查询分析器中执行以下命令use masterEXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;SQL Server2000可以跳过这一步,而对于SQL Server2005因为它默认是不支持xp_cmdshell执行命令的,SQL Server 已封锁元件'xp_cmdshell' 的程序'sys.xp_cmdshell' 的存取,此元件已经由此伺服器的安全性组态关闭,系统管理员可以使用sp_configure来启用'xp_cmdshell' 的使用,所以我们得恢复其执行命令。
第二步:在SQL企业管理器—>SQL代理(如果服务未启用,先启用该服务)—>作业—>新建作业①在常规选项中输入作业名称如图1:图1②录入作业步骤:在步骤选项中新建作业步骤1,名称命名为‘XX备份、压缩’,然后在命令框中输入如下的SQL 代码:declare@prefix nvarchar(100),@datefile nvarchar(100),@bakfile nvarchar(100),@rarfile nvarchar(100),@delcmd nvarchar(100),@rarcmd nvarchar(150)set @prefix='F:\ERP\'--备份文件夹set @datefile='DB_AAA'+cast(Year(GetDate())as varchar(4))+cast(Month(GetDate())asvarchar(2))+cast(Day(GetDate())as varchar(2))+CAST(DATEPART(Hour,GETDATE())ASnvarchar(2))+CAST(DATEPART(minute,GETDATE())ASnvarchar(2))--备份文件名set @bakfile=@prefix+@datefile+'.bak'set @rarfile=@prefix+@datefile+'.rar'BACKUP DataBASE DB_AAA TO DISK= @bakfile WITH INIT , NOUNLOAD ,NAME= N'DB_AAA数据备份', NOSKIP , STATS = 10, NOFORMATset @delcmd ='del'+@prefix+'RAR\*.rar'--先清空RAR备份文件夹set @rarcmd='C:\Progra~1\WinRAR\WinRAR.exe a -p123'+@rarfile+' '+@bakfile --将yourpw改为您要设置的密码,进行加密压缩exec master..xp_cmdshell @delcmdexec master..xp_cmdshell @rarcmdGO作业步骤1建好后,新建作业步骤2,名称命名为‘删除当天BAK 文件’,然后在命令框中输入如下的SQL代码:declare @d Nvarchar(64);set @d =convert(varchar,dateadd(day,-0,getdate()),120);EXECUTE master.dbo.xp_delete_file 0,N'F:\ERP',N'bak',@d;新建计划任务:在计划选项中新建一个计划任务如下图:作业计划建好后在SQL企业管理器-->SQL代理-->作业在作业上点右键查看该作业是否已经启用。
SQLSERVER2008r2数据压缩的两种方法
SQLSERVER2008r2数据压缩的两种⽅法有时候sql server 2008 数据库⽇志⽂件太⼤,需要收缩释放硬盘内存。
如果ldb⽂件过⼤会导致数据库运⾏缓慢,甚⾄系统都会卡住。
1.登陆项⽬平台数据库服务器。
双击SQL Server Management Studio打开数据库管理。
登陆数据库2.如下图,打开数据库属性窗⼝3.如下图,更改数据库恢复模式4.如下图,收缩数据库⽇志到这⾥已经完成了,数据库的⽇志收缩5.如下图,数据库恢复模式修改为完整经过⼩编测试,完美解决,我们成功的把⼀个84G的⽂件,压缩到1M。
下⾯继续为⼤家分享⼀个通过sql语句实现的,每次⼿⼯操作⿇烦有没有。
sql语句实现步骤如下⾸先查找要收缩⽇志⽂件的数据库⽂件名USE AGOSELECT file_id, name FROM sys.database_files;GO查询结果得到⽇志⽂件的⽂件名叫J4_log不过⼩编测试查询⽐较慢,可以通过下⾯的⽅法数据库属性>⽂件>右侧⽇志前⾯这个名字就是⽇志⽂件名了测试完美没有异常。
USE[master]GOALTER DATABASE A SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE A SET RECOVERY SIMPLE --简单模式GOUSE AGODBCC SHRINKFILE (N'J4_Log', 11, TRUNCATEONLY)GOUSE[master]GOALTER DATABASE A SET RECOVERY FULL WITH NO_WAITGOALTER DATABASE A SET RECOVERY FULL --还原为完全模式GO如果感觉⽐较⿇烦,可以设置⼀个⾃动任务执⾏,将上⾯的⽂件保存为yasuo.sql 然后通过计划任务结合cmd,执⾏如下命令即可,⽬录⾃定设置好sqlcmd -i yasuo.sqlSQL Server 2008R2执⾏⼤⽂件SQL脚本命令cd C:\Program Files\Microsoft SQL Server\110\Tools\Binnsqlcmd -S . -U sa -P 123 -d test -i data.sql参数说明:-S 服务器地址 -U ⽤户名 -P 密码 -d 数据库名称 -i 脚本⽂件路径本地服务器地址可以写 . ⽐较轻松,也可写.或者(local)或者IP地址这样就可以了,以后新建⼀个查询,直接运⾏就可以了。
Sql Server数据库压缩方法
Sql Server数据库压缩方法Sql Server数据库用了一段时间以后,发现数据大小会猛增,最多时增加到十几G,而实际数据占有量其实只有5G左右。
这样的后果就导致数据库运行缓慢,且大大占用磁盘空间。
经过多方研究,最终找到了压缩数据库的方法。
下面将详细介绍一下这种方法的操作步骤:1.重建索引数据库长期使用之后,索引会占用大量的空间,并且这些空间不能直接清理,这时可以重建索引,重建索引的sql脚本语句如下:SET NOCOUNT ON;DECLARE@objectid int;DECLARE@indexid int;DECLARE@partitioncount bigint;DECLARE@schemaname nvarchar(130);DECLARE@objectname nvarchar(130);DECLARE@indexname nvarchar(130);DECLARE@partitionnum bigint;DECLARE@partitions bigint;DECLARE@frag float;DECLARE@command nvarchar(4000);If Object_Id('Tempdb.dbo.#work_to_do')Is Not Null drop table#work_to_doSELECTobject_id AS objectid,index_id AS indexid,partition_number AS partitionnum,avg_fragmentation_in_percent AS fragINTO#work_to_doFROM sys.dm_db_index_physical_stats(DB_ID(),NULL,NULL,NULL,'LIMITED')WHERE avg_fragmentation_in_percent> 10.0 AND index_id> 0;DECLARE partitions CURSOR local FOR SELECT*FROM#work_to_do;OPEN partitions;WHILE (1=1)BEGIN;FETCH NEXTFROM partitionsINTO@objectid,@indexid,@partitionnum,@frag;IF@@FETCH_STATUS< 0 BREAK;SELECT@objectname=QUOTENAME(),@schemaname=QUOTENAME()FROM sys.objects AS oJOIN sys.schemas as s ON s.schema_id=o.schema_idWHERE o.object_id=@objectid;SELECT@indexname=QUOTENAME(name)FROM sys.indexesWHERE object_id=@objectid AND index_id=@indexid;SELECT@partitioncount=count(*)FROM sys.partitionsWHERE object_id=@objectid AND index_id=@indexid;IF@frag< 30.0SET@command=N'ALTER INDEX'+@indexname+N' ON '+@schemaname+N'.'+@objectname+ N'REORGANIZE';IF@frag>= 30.0SET@command=N'ALTER INDEX'+@indexname+N' ON '+@schemaname+N'.'+@objectname+ N'REBUILD';IF@partitioncount> 1SET@command=@command+N'PARTITION='+CAST(@partitionnum AS nvarchar(10));EXEC (@command);PRINT N'Executed:'+@command;END;CLOSE partitions;2.数据库行压缩和页压缩经长期测试发现,TPMS_PaperResultReport这张表占用很大的空间,执行以下sql 脚本语句,可以压缩这张表的占用空间。
sqlserver数据库压缩与数据库日志(ldf)压缩方法分享
sqlserver数据库压缩与数据库⽇志(ldf)压缩⽅法分享 操作很简单,具体不步骤如下:打开你mdb数据库,⼯具-->数据库实⽤⼯具-->压缩和修复数据库(c)...⼀般情况下,SQL数据库的收缩并不能很⼤程度上减⼩数据库⼤⼩,其主要作⽤是收缩⽇志⼤⼩,应当定期进⾏此操作以免数据库⽇志过⼤1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根⽬录中依次点开Microsoft SQLServer-->SQLServer组-->双击打开你的服务器-->双击打开数据库⽬录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择"简单",然后按确定保存2、在当前数据库上点右键,看所有任务中的收缩数据库,⼀般⾥⾯的默认设置不⽤调整,直接点确定3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作⽅法同第⼀点,因为⽇志在⼀些异常情况下往往是恢复数据库的重要依据不过服务器上可以⽤下⾯的语句在查询分析器中执⾏复制代码代码如下:DUMP TRANSACTION [jc8] WITH NO_LOGBACKUP LOG [jc8] WITH NO_LOGDBCC SHRINKDATABASE([jc8])jc8为数据库名,来实现jc8.ldf⽂件的清理。
问:SQLServer中的事务⽇志应该怎样压缩和删除?答:具体⽅法有3种。
⽅法⼀:第⼀步:backup log database_name with no_log或者 backup log database_name with truncate_only-- no_log和truncate_only是在这⾥是同义的,随便执⾏哪⼀句都可以。
第⼆步:1.收缩特定数据库的所有数据和⽇志⽂件,执⾏:dbcc shrinkdatabase (database_name,[,target_percent])-- database_name是要收缩的数据库名称;target_percent是数据库收缩后的数据库⽂件中所要的剩余可⽤空间百分⽐。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL Server数据库压缩技巧指南
中的数据库数据文档增长事务日志文档
你能够最大限度地缩小数据库吗?(一)
我经常看见人们制定定期缩小数据库文件(数据或T-Log)的SQL Server维护计划和定制任务。
我通常也会建议我的客户和同事除非他们要研究数据库增长原因,否则不要缩小数据库文件,尤其是在一般基础上不要这么做。
我曾经多次和那些更多关注磁盘空间而不是性能的人们讨论过这个话题,所以在这里我决定进行一下测试来证明我所说的属实。
此外我还要告诉大家数据库文件在事务办理过程中增长对SQL Server性能会带来什么样的影响。
我将在以下几个增长环境中进行测试:
1、数据库数据文件增长
2、数据库T-log增长
3、Tempdb增长
这是本系列中的第一篇技巧,即检测SQL Server中的数据库数据文件增长。
测试环境
硬件和软件配置
我进行测试的系统硬件和软件配置如下:
你能够最大限度地缩小数据库吗?(三)
结果总结
将结果放在表格中进行比较,比较项目包括CPU、读和写意及第一个循环和第二个循坏之间的间隔时间,首先是文件增长,后来就不会出现文件增长的情况。
这里有两个地方进行的比较:百分比不同(第二环节和第一个环节之间的比为*100)并且不同的处数也不同((<First loop is > - <Second loop is >)。
如果得到的是正数,那就是说第二个环节进行得比较好。
如果是负数,意思就相反。
在每个比较表的最后,比较得出的平均值就是这三次重复得到的结果平均值。
在这篇文章的最后,我们通过一个表来比较一下所有测试过程中所得到的平均值。
测试1:
原始文件大小=256
目标文件大小=8448
小事务(一次1行),
总行数:8160
文件增长大小为1MB
图3
下面是连续执行三次上述代码所得到的SQL Profiler结果(我清除了调试查询):
你能够最大限度地缩小数据库吗?(四) 结果总结
测试2
原始文件大小=256
目标文件大小=34816
小事务(一次1行),
总行数:33373
文件增长大小为1MB
现在我们来测试一下插入更多数据。
代码为:
教你在SQL Server 2000/2005中禁用Shrink Database任务(一)
经常压缩SQL Server数据库并不是节省空间的最佳策略,并且DBA已经意识到下一步就是解决如何终止自动执行任务。
SQL Server专家Michelle Gutzait探讨了三种常见的压缩数据库的方法以及如何停止它们。
问题:
我的数据库正在自动地压缩,但是我不知道如何停止它。
请给我一些建议。
作者注:
我们并不总提倡在例行程序上压缩数据库或数据库文件。
当数据库文件在事务进程中需要增长时,压缩数据库可能会降低性能。
更多信息,请查询我的另一篇技巧文章《你能最大限度缩小数据库吗?》。
自动压缩数据库方法:
1、自动压缩数据库选项
2、压缩数据库维护任务/计划
3、自定义任务
如何停止数据库自动压缩
1)自动压缩数据库选项
这里是关于如何在SQL Server和SQL Server中手动终止自动压缩数据库选项的方法:
4、删除任务调度(如果它仅仅用于压缩数据库/文件)。
(作者:Michelle Gutzait 译者:曾少宁/陈柳 来源:TT 中国)
务日志会一直填充至70%,然后减少至50%左右。
为了保证我能从dbcc sqlperf中获得正确数据,我还可以运行报告(report)查询数据库文件的自动增长率。
(作者:Michelle Gutzait 译者:April 来源:TT中国)
你能最大限度压缩SQL Server事务日志文档吗?(二) 这一次它并没有报告数据库的自动增长数据。
于是我决定用短时间更新(一次一行)检查大事务,多以我增加了一个开始事务:
这次的结果让人觉得非常迷惑。
事务日志文档在最初2 MB的基础上没有增长,并且事务日志中的空余空间比例大于60%。
我删除了这个环节并制定了事务。
之后,事务日志文档中已使用的空间大小甚至还减小了。
在UPDATE命令另外一个测试中,我在表中插入了10,000行并运行以下代码:
我决定在事务日志中行数不变的情况下运行上述UPDATE命令:
(作者:Michelle Gutzait 译者:April 来源:TT中国)
在执行大型操作(包括事务中数量比较多的一些数据)时,事务就会出现增长,但是并不是我们想象的那样成直线增长。
似乎事务有些数据后来又进行了压缩。
(作者:Michelle Gutzait 译者:April 来源:TT中国)。