SQL Server-聚焦事务对本地变量、临时表、表变量影响以及日志文件存满时如何收缩(三十一)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了SQL Server-聚焦事务对本地变量、临时表、表变量影响以及日志文件存满时如何收缩(三十一),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3729字,纯文字阅读大概需要6分钟。
内容图文
![SQL Server-聚焦事务对本地变量、临时表、表变量影响以及日志文件存满时如何收缩(三十一)](/upload/InfoBanner/zyjiaocheng/475/5216990916b8467195418b0348cd333c.jpg)
通过上述图我们能够很清晰的知道:通过改变本地变量值,但是在回滚后和提交后对变量根本不起作用,所以我们得出结论:本地变量不受事务所影响,因为其作用范围受到限制。
SQL Server事务对临时变量影响
我们首先创建一个临时并插入一条数据,再来开启事务插入一条数据并回滚事务看其结果如何,具体示例如下:
USE AdventureWorks2012 GO -- 创建临时表并插入一行数据 CREATE TABLE #TempTable (Col1 VARCHAR(100)) INSERT INTO #TempTable (Col1) VALUES(‘Temp Table - Outside Tran‘); --查询临时表插入的值 SELECT Col1 AS TempTable_BeforeTransaction FROM #TempTable; BEGIN TRAN -- 插入一行数据 INSERT INTO #TempTable (Col1) VALUES(‘Temp Table - Inside Tran‘); ROLLBACK -- 查询临时表中的值 SELECT Col1 AS TempTable_AfterTransaction FROM #TempTable; GO -- 删除临时表 DROP TABLE #TempTable GO
从上图观察到当默认插入一条为 Temp Table - Outside Tran 的数据时,接下来我们开启事务再插入一条为 Temp Table - Inside Tran 的数据,然后进行事务回滚,此时回滚之后的数据和默认插入的数据一致,基于此我们得出结论:临时表受事务影响。
SQL Server事务对表变量影响
USE AdventureWorks2012 GO -- 创建表变量并插入一行数据 DECLARE @TableVar TABLE(Col1 VARCHAR(100)) INSERT INTO @TableVar (Col1) VALUES(‘Table Var - Outside Tran‘); --查询未开启事务之前数据 SELECT Col1 AS TableVar_BeforeTransaction FROM @TableVar; BEGIN TRAN -- 开启事务并插入一行数据 INSERT INTO @TableVar (Col1) VALUES(‘Table Var - Inside Tran‘); ROLLBACK --查询开启事务之后数据 SELECT Col1 AS TableVar_AfterTransaction FROM @TableVar; GO
当默认插入一条为 Table Var - Outside Tran 的数据后,我们开启事务插入一条为 Table Var - Inside Tran 的数据,接下来再来进行回滚发现其结果仍为 Table Var - Inside Tran ,至此我们得出结论:表变量不受事务所影响。
收缩日志文件
当日志文件占满时,我们可能需要收缩日志文件到最小,那么我们该如何做呢?我们可以通过如下三种方式收缩日志文件,请继续往下看。
收缩方式一(通过新建查询语句执行)
在SQL Server 2005之前我们可以通过如下做
USE AdventureWorks2012 GO DBCC SHRINKFILE(‘TruncateLog‘, 1) BACKUP LOG AdventureWorks2012 WITH TRUNCATE_ONLY DBCC SHRINKFILE(‘TruncateLog‘, 1) GO
如果在SQL Server 2005下运行上述命令则会出现如下错误:
此时我们应该运行如下查询。
USE [AdventureWorks2012] GO ALTER DATABASE [AdventureWorks2012] SET RECOVERY SIMPLE WITH NO_WAIT DBCC SHRINKFILE(AdventureWorks2012_Log, 1) ALTER DATABASE [AdventureWorks2012] SET RECOVERY FULL WITH NO_WAIT GO
此时运行成功将得到如下结果:
此时我们再右键数据库属性将得到我们收缩后最小的日志文件大小,如下:
收缩日志文件方式二(在正确时间收缩日志文件)
通过右键你要收缩的日志文件对应的数据库的任务->收缩->文件,如下:
收缩日志文件方式三(完全移除日志文件)
有时候我们完全不需要大日志文件,此时我们需要完全移除日志文件来释放硬盘空间,我们通过以下四步即可达到我们所需。
(1)分离数据库
(2)重命名日志文件
(3)重新附加不带日志文件的数据库
(4)删除日志文件
演示如下:
总结
本节我们详细讲解了事务对本地变量和表变量不起作用以及当日志文件占满时我们采取几种方式来收缩日志,我们下节开始进入SQL Server基础系列中有关死锁的最后几篇。
SQL Server-聚焦事务对本地变量、临时表、表变量影响以及日志文件存满时如何收缩(三十一)
标签:运行 右键 database png 默认 事务所 文件 日志文件 llb
本文系统来源:http://www.cnblogs.com/CreateMyself/p/6395670.html
内容总结
以上是互联网集市为您收集整理的SQL Server-聚焦事务对本地变量、临时表、表变量影响以及日志文件存满时如何收缩(三十一)全部内容,希望文章能够帮你解决SQL Server-聚焦事务对本地变量、临时表、表变量影响以及日志文件存满时如何收缩(三十一)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。