2014-01-27 3 views
0

У нас есть несколько экземпляров нашего приложения, работающих одновременно в разных местах.Несколько экземпляров приложения C#, обновляющих одну таблицу MSSQL

И все экземпляры выполняют запрос insert or update по одной таблице Orders.

Orders 
--------------------------------------- 

OrderID OrderDate OrderTime OrderAmount 

Вопрос, если все экземпляры моего приложения insert or update записи в то же время, что может случиться?

Каким образом база данных MSSQL обрабатывает этот сценарий?

Я гугл, и нашел ROWLOCK, XLOCK, READPAST в виде раствора на concurrent access to MSSQL databaseно не смог найти точный ответ на сценарии выше!

Любые указатели очень ценятся.

+0

[ 'MERGE'] (http://msdn.microsoft.com/en-us/library/bb510625.aspx) –

+0

Вы можете использовать SqlTransaction класс как это: [введите описание ссылки здесь] [1] [1]: http://stackoverflow.com/a/1127839/809613 –

+0

Вы можете использовать SqlTransaction Class, как [это:] [1] [1]: HTTP: // stackoverflow.com/a/1127839/809613 –

ответ

1

Каждый INSERT или UPDATE будет работать в (неявной) транзакции, так что операторы будут поставлены в очередь. Обычно это не проблема.

Если операторы являются частью пакета с другими операторами, которые необходимо запускать без перерыва (например, первое чтение из таблицы, а затем обновление таблицы на основе результата), вы должны рассмотреть вопрос о включении этих операторов в явное предложение BEGIN TRANSACTION/COMMIT TRANSACTION.

0

Вы должны прочитать на Transactions. Это позволит вам избежать повреждения данных, которые могут возникнуть из вашей текущей настройки.

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