是否可以查看未提交事务中运行了哪些查询?
我的应用程序(使用 SQL Native Client 和 SQL Server 2000 的 C++)始终处于挂起状态。 我相信这是因为一个事务在表的某个地方未提交,并且该表上的 SELECT 查询由于打开事务而被阻塞。
不幸的是,我真的很难确定挂起的事务可能在我的代码中的位置。 有没有办法让 SQL Server 指示在未提交的事务上运行了哪些查询?
My application (C++ using SQL Native Client with SQL Server 2000) is consistently finding its way into a hanging state. I believe this is because a transaction is left uncommitted someplace on a table and a SELECT query on that table, as a result of the open transaction, is blocking.
Unfortunately, I'm really having trouble determining where the hanging transaction might be in my code. Is there any way to get SQL Server to indicate what queries have been run on an uncommitted transaction?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您有管理员 (sa) 权限,则可以运行 sp_Who 或 sp_Who2
要显示所有服务器活动,通过 Spid,运行
以仅查看您感兴趣的一个会话...
要直接查看打开的事务,请运行
DBCC OPENTRAN (T-SQL)
显示有关指定数据库内最早的活动事务以及最早的分布式和非分布式复制事务(如果有)的信息。 仅当存在活动事务或数据库包含复制信息时才会显示结果。 如果没有活动事务,则会显示一条信息性消息。
然而,当用户会话终止时,Sql Server 应该自动回滚任何打开的事务。
if you have admin (sa) proviliges, you can run sp_Who, or sp_Who2
to show all server activity, by Spid, Run
to just see the one session you are interested in...
To directly see open transactions, run
DBCC OPENTRAN (T-SQL)
Displays information about the oldest active transaction and the oldest distributed and nondistributed replicated transactions, if any, within the specified database. Results are displayed only if there is an active transaction or if the database contains replication information. An informational message is displayed if there are no active transactions.
Sql Server should, however, automatically rollback any open transaction when a user session is terminated.