Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server 2005事务_Sql Server_Transactions - Fatal编程技术网

Sql server SQL Server 2005事务

Sql server SQL Server 2005事务,sql-server,transactions,Sql Server,Transactions,我有一个长时间运行的存储过程,大约30分钟,目前正在事务隔离级别快照中运行。 我已将事务设置为快照,以避免锁定记录,从而阻止其他进程访问数据 我试图做的是写入和读取状态表,但尽管我们在事务中,我还是希望像不在事务中一样写入和读取状态表。我需要它,以便其他进程可以通过我的存储过程读取对此表的任何更新,并且此存储过程还可以读取其他进程所做的任何插入 我意识到不建议在事务中运行我的整个存储过程,但这是出于其他原因,我们需要坚持这种方法 因此,我的问题是在一个事务中,是否可以执行一个查询或调用一个有效地

我有一个长时间运行的存储过程,大约30分钟,目前正在事务隔离级别快照中运行。 我已将事务设置为快照,以避免锁定记录,从而阻止其他进程访问数据

我试图做的是写入和读取状态表,但尽管我们在事务中,我还是希望像不在事务中一样写入和读取状态表。我需要它,以便其他进程可以通过我的存储过程读取对此表的任何更新,并且此存储过程还可以读取其他进程所做的任何插入

我意识到不建议在事务中运行我的整个存储过程,但这是出于其他原因,我们需要坚持这种方法


因此,我的问题是在一个事务中,是否可以执行一个查询或调用一个有效地未登记在事务中的存储过程?

否。您唯一的机会是打开一个单独的会话,例如,使用CLR过程在另一个连接上而不是在内部上下文连接上重新连接


快照隔离仅对读取有帮助。对于写入,是必须使用快照隔离或已在数据库上读取快照的其他事务。写入与写入冲突没有解决方案。

如果在长时间运行的查询和需要从事务中读取数据的查询上都设置了事务隔离读取未限制,则它们应该能够读取脏数据


我不知道这将如何与您的隔离级别快照配合使用,因为我不熟悉它。

我必须测试该理论,但我认为Remus可能会确认或不确认,如果我想在事务之外偷偷地进行调整,我会检查调用msdb.dbo.sp_start_job“yourjob name”并配置执行所需更新语句的作业是否有效

这已经够狡猾了,它可能会工作-代理作业将在不同的帐户上运行,并且应该在您的连接/事务之外

这比编写CLR存储过程简单,尽管我很欣赏这是一种黑客行为

A


测试它-黑客成功了

sp做什么?一笔持续30分钟的交易属于例外。最有可能的情况是,您的代码性能很差,您没有使用游标、相关子查询或任何涉及逐行而不是基于集合的处理的东西吗?sp本身可以简化为一个不会引起那么多锁定的事务