SQL Server всегда и работает только с доступным и включенным журналом транзакций, by design
нельзя сказать, чтобы SQL Server не использовал его.
это не исключает того, что в некоторых случаях у вас есть определенные команды или опции для команд, которые позволяют указывать SQL Server минимизировать запись журнала, например TRUNCATE
отличается от DELETE
, поскольку данные удаляются и удаляются не войти в журнал. В других случаях вы можете указать уровень журнала для некоторых групповых команд, чтобы свести к минимуму ведение журнала.
Сказано, что SQL Server выполняет фиксацию немедленно, если вы выполняете команду в Management Studio или из кода и не указываете какую-либо транзакцию (Begin, Commit или rollback).
Я не очень разбираюсь в SQL, но я знаю, что есть концепция AutoCommit, которая также может быть изменена или установлена на уровень, отличный от уровня по умолчанию.
При удалении, указанном выше, изменения будут применены немедленно, и информация будет записана в журнал.
Обычно в хранимых процедурах мы не внедряем BEGIN и COMMIT или ROLLBACK внутри самого тела хранимой процедуры, но мы используем BeginTrans / Commit или Rollback из C # DAL.
есть и другие способы сделать это, если внутри одного и того же хранимого процесса вы дотрагиваетесь до нескольких таблиц, может иметь смысл иметь локальную транзакцию там, но также будет работать для этого из кода.