在SQL Server中启用DTC的副作用

时间:2015-09-26 02:03:14

标签: .net sql-server

我有一个大型遗留数据库,其中DTC被禁用,我需要启用它以使用事务隔离级别“READ UNCOMMITTED”,但我担心启用它的副作用。

这是特定查询所必需的,不会在其他任何地方使用。

有谁知道这是否会给我们现有遗留系统带来任何问题?

详细信息:

我正在尝试在我的.NET应用程序中使用隔离级别为“READ UNCOMMITTED”的TransactionScope,以便不锁定我的查询。此查询通过另一个应用程序的事务搜索在数据库中锁定的寄存器。

也许有一种方法可以让它在不改变DTC配置的情况下运行。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

TransactionScope将根据需要自动将事务提升/登记到分布式事务,这需要MSDTC运行并正确配置。要删除对MSDTC的独立查询依赖性,请尝试以下操作之一:

  • 对System.Data.IsolationLevel.ReadUncommitted使用SqlTransaction
  • 在运行查询之前对连接执行SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED查询
  • 在查询中指定NOLOCK锁定提示

请注意,READ UNCOMMITED将导致脏读(包括丢失或重复的数据),因此只应在并发优势超过数据完整性的情况下使用它。另一种方法是打开READ_COMMITTED_SNAPSHOT数据库选项,以便使用行版本控制而不是锁定来提供默认READ COMMITTED隔离级别的完整性。请参阅Read committed Snapshot VS Snapshot Isolation Level