提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:吴园园|2020-03-18 09:35:08.317|阅读 361 次
概述:本文讨论了使用SQL Complete工具删除丢失的事务。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
dbForge SQL Complete是一款用于Microsoft SQL Server Management Studio和Microsoft Visual Studio的功能强大的插件。SQL代码格式化程序(免费版和高级付费版)能够提供可以取代原生的Microsoft T-SQL Intellisense特性的T-SQL代码自动实现和格式化功能。
通常,MS SQL Server事务未完成,因此它们的启动者会忘记它们。这是常规数据库开发中经常遇到的情况。最引人注目的示例是当使用SQL Server Management Studio运行脚本以使用BEGIN TRANSACTION语句启动显式事务时,然后在事务中间取消该批处理而没有发出COMMIT或ROLLBACK语句来完成事务的情况并且交易保持打开状态。
这导致在该交易期间获得的锁继续被持有的情况。同时,发起交易的人要么忘记了交易,要么将其搁置了一段时间。结果,持有大量的锁,并且用户被阻止。
本文讨论了使用SQL Complete工具删除丢失的事务。
所述丢失的交易术语用于指活性(运行)事务不具有任何活动(正在运行)的查询进行足够长的时间T的周期
删除丢失的交易。通用算法
请按照以下步骤删除丢失的交易。
1.首先,我们创建两个表:一个表用于保存和分析有关当前丢失交易的信息,第二个表将从第一个表交易中选择的数据存档以进行进一步分析。
2.收集有关没有查询的事务及其会话的信息(在一定时间段T内已启动且未完成的事务)。
3.更新包含步骤1中当前丢失的事务列表的表(如果未完成的事务获得了活动请求,则不再将其视为丢失,必须将其从表中删除)。
4.确定要终止的会话(一个会话在步骤1的表中至少有一个未完成的事务,并且该会话没有查询在运行)。
5.存档要删除的数据(有关将被杀死的事务,会话和连接的信息)。
6.终止会话。
7.删除已处理的条目以及那些不能删除的条目,这些条目已经在步骤1中存在很长时间了。
以下是该算法实现的工作示例。
如何实现删除丢失交易的算法创建一个表以列出并检查丢失的交易
应用代码格式
借助dbForge SQL Complete,我们可以快速轻松地创建一个表来存储有关当前丢失的事务的信息。
1.该工具通过针对T-SQL代码的多个嵌入式提示来帮助您加快常规编码的速度。只需单击几下即可创建表格。
这样,我们继续完善表创建脚本:
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [srv].[SessionTran]( [SessionID] INT NOT NULL, [TransactionID] BIGINT NOT NULL, [CountTranNotRequest] TINYINT NOT NULL, [CountSessionNotRequest] TINYINT NOT NULL, [TransactionBeginTime] DATETIME NOT NULL, [InsertUTCDate] DATETIME NOT NULL, [UpdateUTCDate] DATETIME NOT NULL, CONSTRAINT [PK_SessionTran] PRIMARY KEY CLUSTERED ( [SessionID] ASC, [TransactionID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 95) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [srv].[SessionTran] ADD CONSTRAINT [DF_SessionTran_Count] DEFAULT ((0)) FOR [CountTranNotRequest] GO ALTER TABLE [srv].[SessionTran] ADD CONSTRAINT [DF_SessionTran_CountSessionNotRequest] DEFAULT ((0)) FOR [CountSessionNotRequest] GO ALTER TABLE [srv].[SessionTran] ADD CONSTRAINT [DF_SessionTran_InsertUTCDate] DEFAULT (getutcdate()) FOR [InsertUTCDate] GO ALTER TABLE [srv].[SessionTran] ADD CONSTRAINT [DF_SessionTran_UpdateUTCDate] DEFAULT (getutcdate()) FOR [UpdateUTCDate] GO
在此脚本中:
1) SessionID 标识一个会话
2)TransactionID标识丢失的交易
3)CountTranNotRequest代表交易记录为丢失的次数
4)CountSessionNotRequest代表将会话记录为没有活动查询并包含丢失的事务的次数
5)TransactionBeginTime是指丢失交易的开始日期和时间
6) InsertUTCDate 标识创建记录的日期和时间(UTC)
7) UpdateUTCDate 标识记录更新的日期和时间(UTC)。
如何使用SQL Complete格式化文档将格式应用于当前文档
使用哪个编辑器来创建SQL文档都没有关系,您仍然可以借助SQL Complete Format Document选项对它进行格式化。
格式化之前,脚本如下所示:
create table [srv].[SessionTran]( [SessionID] int not null, [TransactionID] bigint not null, [CountTranNotRequest] tinyint not null, [CountSessionNotRequest] tinyint not null, [TransactionBeginTime] datetime not null, [InsertUTCDate] datetime not null, [UpdateUTCDate] datetime not null, constraint [PK_SessionTran] primary key clustered ([SessionID] asc, [TransactionID] asc) with (pad_index = off, statistics_norecompute = off, ignore_dup_key = off, allow_row_locks = on, allow_page_locks = on, fillfactor = 95) ON [PRIMARY] ) on [PRIMARY] GO以下是应用格式后获得的脚本:
CREATE TABLE [srv].[SessionTran] ( [SessionID] INT NOT NULL ,[TransactionID] BIGINT NOT NULL ,[CountTranNotRequest] TINYINT NOT NULL ,[CountSessionNotRequest] TINYINT NOT NULL ,[TransactionBeginTime] DATETIME NOT NULL ,[InsertUTCDate] DATETIME NOT NULL ,[UpdateUTCDate] DATETIME NOT NULL ,CONSTRAINT [PK_SessionTran] PRIMARY KEY CLUSTERED ([SessionID] ASC, [TransactionID] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 95) ON [PRIMARY] ) ON [PRIMA GO
差别可以看到:
这大大提高了代码的可读性和可理解性,从而导致更准确的感知和决策。
将格式应用于外部文档SQL Complete工具还允许仅将格式应用于脚本的选定片段。请注意,只有在使用鼠标或光标选择要格式化的片段之后,才会启用“ 格式选择”选项。
下图显示了格式化之前的脚本片段。
研究下图,查看格式化后的代码片段外观。
在SQL格式化功能也应该被提及。借助它的帮助,您可以无缝格式化先前编写的脚本。
从“ SQL完整”菜单中选择“ SQL格式化程序”命令后,将出现选择格式化模式的窗口。您可以选择格式化选定文件或特定文件夹中的所有文件的格式。在我们的示例中,我们选择Files。单击下一步按钮继续。
现在,您需要选择要格式化的文件。
编译好要格式化的文件列表后,单击“ 格式”按钮。
格式化过程完成后,将出现一个窗口,其中显示了已修改的文件数,并且这些文件在SQL Server Management Studio中打开。
以同样的方式,我们可以重构Scripts目录中所有文件的代码。要格式化指定文件夹中的所有文件,请在“ SQL Formatter向导”中选择“目录”选项。
选择目录模式后,单击下一步按钮继续。在下一个窗口中,单击添加按钮以选择所需的文件夹。值得一提的是,在“ SQL Formatter向导”中,您可以指定要格式化的文件扩展名,还可以选择在格式化后保持修改后的文件打开并包含子文件夹。
请注意,默认情况下,这些文件不会保存,而是以修改后的格式打开。如果要更改此设置,则需要清除“ 格式化后保持打开的已修改文件 ”复选框。取消选中该复选框后,修改后的文件将不会在Management Studio中打开,并且更改将立即应用并保存。
更多内容欢迎持续关注我们后续的教程
想了解更多产品信息或想要购买产品正版授权请点击
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn
文章转载自:本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@capbkgr.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢