dbForge SQL Complete是一款用于Microsoft SQL Server Management Studio和Microsoft Visual Studio的功能强大的插件。SQL代码格式化程序(免费版和高级付费版)能够提供可以取代原生的Microsoft T-SQL Intellisense特性的T-SQL代码自动实现和格式化功能。
dbForge SQL Complete最新试用版
通常,MS SQL Server事务未完成,因此它们的启动者会忘记它们。这是常规数据库开发中经常遇到的情况。最引人注目的示例是当使用SQL Server Management Studio运行脚本以使用BEGIN TRANSACTION语句启动显式事务时,然后在事务中间取消该批处理而没有发出COMMIT或ROLLBACK语句来完成事务的情况并且交易保持打开状态。
这导致在该交易期间获得的锁继续被持有的情况。同时,发起交易的人要么忘记了交易,要么将其搁置了一段时间。结果,持有大量的锁,并且用户被阻止。
所述丢失的交易术语用于指活性(运行)事务不具有任何活动(正在运行)的查询进行足够长的时间T的周期
删除丢失的交易。通用算法
请按照以下步骤删除丢失的交易。
1.首先,我们创建两个表:一个表用于保存和分析有关当前丢失交易的信息,第二个表将从第一个表交易中选择的数据存档以进行进一步分析。
2.收集有关没有查询的事务及其会话的信息(在一定时间段T内已启动且未完成的事务)。
3.更新包含步骤1中当前丢失的事务列表的表(如果未完成的事务获得了活动请求,则不再将其视为丢失,必须将其从表中删除)。
4.确定要终止的会话(一个会话在步骤1的表中至少有一个未完成的事务,并且该会话没有查询在运行)。
5.存档要删除的数据(有关将被杀死的事务,会话和连接的信息)。
6.终止会话。
7.删除已处理的条目以及那些不能删除的条目,这些条目已经在步骤1中存在很长时间了。
以下是该算法实现的工作示例。
如何实现删除丢失交易的算法
创建一个表以列出并检查丢失的交易
应用代码格式
借助dbForge SQL Complete,我们可以快速轻松地创建一个表来存储有关当前丢失的事务的信息。
1.该工具通过针对T-SQL代码的多个嵌入式提示来帮助您加快常规编码的速度。只需单击几下即可创建表格。

这样,我们继续完善表创建脚本:
SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE 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]GOALTER TABLE [srv].[SessionTran] ADD CONSTRAINT [DF_SessionTran_Count] DEFAULT ((0)) FOR [CountTranNotRequest]GOALTER TABLE [srv].[SessionTran] ADD CONSTRAINT [DF_SessionTran_CountSessionNotRequest] DEFAULT ((0)) FOR [CountSessionNotRequest]GOALTER TABLE [srv].[SessionTran] ADD CONSTRAINT [DF_SessionTran_InsertUTCDate] DEFAULT (getutcdate()) FOR [InsertUTCDate]GOALTER 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格式化文档
将格式应用于当前文档

格式化之前,脚本如下所示:
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 [PRIMAGO
差别可以看到:
- 压痕已被采用
- T-SQL关键字大写
- 在每个列名称之前添加了换行符。
这大大提高了代码的可读性和可理解性,从而导致更准确的感知和决策。
将格式应用于外部文档
SQL Complete工具还允许仅将格式应用于脚本的选定片段。请注意,只有在使用鼠标或光标选择要格式化的片段之后,才会启用“ 格式选择”选项。

下图显示了格式化之前的脚本片段。

研究下图,查看格式化后的代码片段外观。

在SQL格式化功能也应该被提及。借助它的帮助,您可以无缝格式化先前编写的脚本。

从“ SQL完整”菜单中选择“ SQL格式化程序”命令后,将出现选择格式化模式的窗口。您可以选择格式化选定文件或特定文件夹中的所有文件的格式。在我们的示例中,我们选择Files。单击下一步按钮继续。

现在,您需要选择要格式化的文件。

编译好要格式化的文件列表后,单击“ 格式”按钮。
因此,启动了格式化。

格式化过程完成后,将出现一个窗口,其中显示了已修改的文件数,并且这些文件在SQL Server Management Studio中打开。
以同样的方式,我们可以重构Scripts目录中所有文件的代码。要格式化指定文件夹中的所有文件,请在“ SQL Formatter向导”中选择“目录”选项。

选择目录模式后,单击下一步按钮继续。在下一个窗口中,单击添加按钮以选择所需的文件夹。值得一提的是,在“ SQL Formatter向导”中,您可以指定要格式化的文件扩展名,还可以选择在格式化后保持修改后的文件打开并包含子文件夹。

请注意,默认情况下,这些文件不会保存,而是以修改后的格式打开。如果要更改此设置,则需要清除“ 格式化后保持打开的已修改文件 ”复选框。取消选中该复选框后,修改后的文件将不会在Management Studio中打开,并且更改将立即应用并保存。
更多内容欢迎持续关注我们后续的教程
想了解更多产品信息或想要购买产品正版授权请点击【咨询在线客服】
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!