MS-SQL Server表上的Implicit_transaction

我正在尝试在sql server上进行implicit_transaction。 但是,执行完毕后:

SET IMPLICIT_TRANSACTIONS ON; INSERT INTO [Interface].[dbo].[Log] ([String], [Time], [theUser]) VALUES ((SELECT [String] FROM [Interface].[dbo].[Log] WHERE [ID] = '128'), null, 'ROW3'); SET IMPLICIT_TRANSACTIONS OFF; 

但是,当我去做一个SELECT,查询挂起。

我做错了什么?

从文档:

由于此设置为ON而自动打开的事务必须在事务结束时由用户显式提交或回滚。 否则,当用户断开连接时,事务及其包含的所有数据更改都会回滚。 在事务提交之后,执行上面的一个语句会启动一个新的事务。

所以,实际上,你是这样做的:

 begin transaction; INSERT INTO [Interface].[dbo].[Log] ([String], [Time], [theUser]) VALUES ((SELECT [String] FROM [Interface].[dbo].[Log] WHERE [ID] = '128'), null, 'ROW3'); --no commit or rollback, so transaction is still open 

总之,你有一个开放的交易,你需​​要做的事情。