2009-04-09 4 views
0

Исключение: «Распределенная транзакция завершена либо завербовать эту сессию в новой транзакции или транзакции NULL»Что это SQL ошибка означает,

Это hapening внутри SProc работает на машине, имеющей как SQL 2005 и Sql 2008 организовано.

C# код выглядит примерно так

(using TransactionScope t = new TransactionScope()) 
{ 
    using(SqlConnection c= new SqlConnection(...)) 
    { 
     c.Open(); 
     DataContext1 ctx = new DataContext1(c);//Linq2SQL 
     c.StoreData(2,3);//Call Sproc 
    } 
} 

Sproc Похоже, этот

Select * Table where x=2 and y=3 
if(@@rowcount =0) 
    Insert into table values(2,3) 
end if 
+0

Можете ли вы предоставить более подробную информацию о том, что вы делаете? Наличие двух баз данных не объясняет, почему создается распределенная транзакция. –

ответ

3

Эта ошибка происходит из-за сбоя ограничения на DB фронте. Ваша транзакция откат (что ничего не происходит с базой данных).

В принципе, это ошибка, возникающая в транзакции, которую мы не можем легко идентифицировать без дополнительной информации. Отправьте свой запрос.

+0

Это смешно, я отправил точно такой же текст из MSDN сразу после того, как вы это сделали. Выглядел глупо, имея тот же пост дважды. – jerebear

+0

@jerebear Ха-ха. Думаю, это просто показалось лучше Google, а не «Google it». Может быть, мы должны научить людей рыбу? –

Смежные вопросы