Transação de isolamento de instantâneo interrompida devido a um conflito de atualização

Declaração seguinte:

INSERT INTO dbo.Changes([Content], [Date], [UserId], [CompanyId]) 
  VALUES (@1, @2, @3, @4);
SELECT @@identity;

me dá este erro de SQL 3960:

Transação de isolamento de instantâneo interrompida devido ao conflito de atualização. Não é possível usar o isolamento de instantâneo para acessar a tabela 'dbo.Companies' direta ou indiretamente no banco de dados 'myDatabase' para atualizar, excluir ou inserir a linha que foi modificada ou excluída por outra transação. Tente novamente a transação ou altere o nível de isolamento para a instrução update / delete.

Tanto quanto eu entendi, a partir da mensagem de erro, eu não deveria atualizar, excluir ou inserir a tabeladbo.Companies durante o tempo que outra conexão está modificandodbo.Companies.

Mas porque ocorre quando eu estava inserindo uma nova linha em outra tabeladbo.Changes (que tem chave estrangeira paradbo.Companies) e eu não estava excluindo a linha referenciada emdbo.Companies, mas eu estava apenas atualizando linha emdbo.Companies e não a chave primária? Isso deve funcionar bem, não deveria? (É um bug no SQL Server?)

ATUALIZAR:

Tabelas parece com o seguinte:

dbo.Changes([Id] int PK, [Content] nvarchar, 
  [Date] datetime, [UserId] int, [CompanyId] int -> dbo.Companies.[Id])
dbo.Companies([Id] int PK, [Name] nvarchar)

Segunda atualização está fazendo:

UPDATE dbo.Companies WHERE [Id] = @1 SET [Name] = @2;

questionAnswers(2)

yourAnswerToTheQuestion