Sql 是否可以使用同义词更新远程表?

Sql 是否可以使用同义词更新远程表?,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,使用同义词更新远程表时,我的更新不会停止执行,也不会失败 例如,我有: USE [CRM_Staging] GO /****** Object: Synonym [dbo].[CRM_OpportunityBase] Script Date: 05/27/2014 16:22:32 ******/ CREATE SYNONYM [dbo].[CRM_OpportunityBase] FOR [CRMPRODDB].[Training_MSCRM].[dbo].[OpportunityB

使用同义词更新远程表时,我的更新不会停止执行,也不会失败

例如,我有:

USE [CRM_Staging]
GO

/****** Object:  Synonym [dbo].[CRM_OpportunityBase]    Script Date: 05/27/2014 16:22:32 ******/
CREATE SYNONYM [dbo].[CRM_OpportunityBase] FOR [CRMPRODDB].[Training_MSCRM].[dbo].[OpportunityBase]
GO
我在这里使用它:

  update o
  set o.createdon=s.createdon
  ,o.modifiedon=s.modifiedon
  ,o.createdby = (case when s.createdby is not null then s.createdby else o.createdby end)
  ,o.modifiedby = (case when s.modifiedby is not null then s.modifiedby else o.modifiedby end)
  from crm_opportunitybase o
  join Opportunity s
  on o.opportunityid=s.OpportunityId
但是,查询不会停止执行。这根本没用

如果您进入链接服务器并运行它,那么它运行时不会出现问题


是否可以使用同义词更新远程表?

同义词与此无关。更有可能的是,链接服务器上的分布式事务协调器(DTC)导致查询运行缓慢。@真的很糟糕。我该如何加速呢?这是使用链接服务器的本质。我个人使用它们的经验法则很简单,不要。如果您必须这样做,您可以尝试将必要的DML逻辑放入存储过程中,该存储过程位于目标服务器上,并且可以由其他链接服务器调用。顺便问一下,您是如何知道DTC的这一点的?@恶心,因为这是处理两台服务器之间通信的方法。