Мой вопрос прост: каковы различия / сходства / кардинальности между
- операции
- Порции
- Соединения и
- Заявления
в SQL Server?
Насколько я понимаю, соединение представляет собой единый канал связи между экземпляром SQL Server и клиентом, в котором выполняются наборы операторов, сгруппированные в виде пакетов. Пакет либо неявно, либо явно отображается на одну или несколько транзакций. Это правильно?
Транзакции и Пакеты - это две независимые концепции. Оба могут быть использованы в конфигурации один ко многим.
Блоки транзакций - это единая «единица работы», концепция, согласно которой совершенный sql должен либо полностью работать, либо не работать вообще. Например, если вы обновите две таблицы, связанные друг с другом; оба должны быть успешными, чтобы изменение данных было зафиксировано. [ https://msdn.microsoft.com/en-us/library/ms174377.aspx]
Пакет - это концепция Microsoft. С инструментами, созданными Microsoft, такими как sqlcmd и osql, пакет просто обеспечивает единый план выполнения. Например, если вы создаете переменную и используете ее вне пакета, инструмент выдаст ошибку. [ https://msdn.microsoft.com/en-us/library/ms188037.aspx]
Таким образом, вы можете иметь несколько пакетов, которые обновляют несколько таблиц внутри одного блока транзакции. Насколько они не нарушают отдельные планы выполнения партии, то есть.
Кроме того, в пакете вы можете иметь несколько блоков транзакций, обеспечивая целостность данных между объектами базы данных, такими как таблицы.
Соединение - это просто рукопожатие связи, которое одобряет запуск запросов на сервере.
Заявления - это отдельные строки, формирующие запрос. GO (разделитель пакетов T-Sql) и BEGIN TRANSACTION (ANSI SQL для запуска нового блока транзакции) являются операторами.
источник
Пакеты и транзакции существуют на одном уровне. Пакет представляет собой набор команд SQL, не связанных между собой. Транзакция - это набор команд SQL, которые работают (в отношении всех других пользователей этой базы данных) как один оператор.
источник