Конкурентный доступ в многопользовательских системах баз данных может приводить к некоторым негативным эффектам, таким как чтение несуществующих данных или потеря изменений данных. Database Engine, как и все другие СУБД, решает эти проблемы при использовании транзакций. Транзакция является последовательностью операторов Transact-SQL, которые объединяются вместе. Все операторы внутри транзакции составляют атомарную единицу. Это означает, что либо выполняются все операторы, либо в случае ошибок все операции отменяются.
Для реализации транзакций используется механизм блокировки. Задачей блокировки является недопущение изменений заблокированных объектов другими транзакциями. Блокировка имеет следующие аспекты: режим блокировки, гранулярность блокировки и длительность блокировки. Режим блокировки определяет различные типы блокировок, выбор которых зависит от того ресурса, который нужно заблокировать. Длительность блокировки задает временной период, в течение которого ресурс будет заблокирован.
Database Engine предоставляет механизм, называемый триггером, который среди прочих поддерживает общие ограничения целостности. Этот механизм детально рассматривается в следующей главе.