Sql server 使用ADO Ms Sql Server选择正确的事务

Sql server 使用ADO Ms Sql Server选择正确的事务,sql-server,transactions,ado,Sql Server,Transactions,Ado,我有一个计划,并且: 创建一个名为table1的表。现在[database1]。表1为空。 启动我的程序。我的程序调用Ado连接对象的BeginTrans方法。 我的程序通过AdoQuery在[database1].table1上执行耗时的插入次数。 我的程序调用Ado连接对象的CommitTrans方法。 如果我启动程序,然后在ManagementStudio上发出select*FROMTABLE1查询,则在我的程序完成之前,查询不会返回 在ManagementStudio上发出select查

我有一个计划,并且:

创建一个名为table1的表。现在[database1]。表1为空。 启动我的程序。我的程序调用Ado连接对象的BeginTrans方法。 我的程序通过AdoQuery在[database1].table1上执行耗时的插入次数。 我的程序调用Ado连接对象的CommitTrans方法。 如果我启动程序,然后在ManagementStudio上发出select*FROMTABLE1查询,则在我的程序完成之前,查询不会返回

在ManagementStudio上发出select查询时,我希望看到一个空的结果集,而无需等待。 我应该使用哪个事务,如何用ADO编程配置它

编辑:

据我在谷歌上搜索到的,我可以选择可重复读取、快照或可序列化隔离级别和/或乐观锁中的一种。我做了一些测试,并根据测试结果回答我的问题

在Doug_Ivison的评论后编辑: 在我的情况下,另一个封闭源代码软件使用表而不是ManagementStudio。我们正在尝试某种复制对不起,遗漏了细节,我想让问题简短一些

谢谢你阅读我的帖子。 当做
ÖmürÖlmez。

这可能是简单的资源争用——我见过即使没有锁定冲突也会发生这种情况。但如果您认为避免锁定值得一试,那么另一个选项是从表1中选择*withnolock@Doug_Ivison,谢谢你的帮助。对不起,我宁愿把文字缩短。在我的情况下,由于另一个封闭源代码软件进行了第二次select查询,我没有机会使用select with lock、脏读隔离和其他一些解决方案。请注意,如果封闭源代码软件正在确定针对表1的查询,您可以创建一个名为table1….的视图。。。。然后软件会读取你的视图,只要它试图读取该表。这样,您就可以将withnolock或其他任何您想要的内容添加到查询中。。。只要视图创建了完全匹配的列列表,就可以作为输出。