- •Семантическое моделирование данных: er-диаграммы
- •Реляционная модель данных: домены и отношения Общая характеристика реляционной модели данных
- •Типы данных – множество значений, множество операций
- •Простые типы данных
- •Структурированные типы данных
- •Ссылочные типы данных
- •Типы данных, используемые в реляционной модели
- •Отношения, атрибуты, кортежи отношения Определения и примеры
- •Первая нормальная форма
- •Свойства отношений
- •Реляционная модель данных: целостность
- •Целостность в реляционной модели данных
- •Реляционная модель данных: реляционная алгебра
- •Ограничения на операции
- •Соединение
- •Деление
- •Манипулирование реляционными данными
- •Реляционная модель данных: реляционное исчисление кортежей Реляционное исчисление
- •Исчисление кортежей
- •Реляционная алгебра и реляционное исчисление
- •Проектирование реляционных баз данных на основе принципов нормализации: функциональные зависимости
- •Проектирование реляционных баз данных на основе принципов нормализации: 1nf, 2nf, 3nf, bcnf Нормальная форма
- •Роль нормализации в проектировании реляционных баз данных
- •Нормальные формы
- •Первая нормальная форма (1nf)
- •Типы данных Transact-sql
- •Типы данных
- •Преобразования типа Transact-sql Преобразование типов данных (компонент Database Engine)
- •Скалярные выражения Transact-sql
- •Логические выражения Transact-sql Логические операторы (Transact-sql)
- •Табличные выражения Transact-sql Табличные выражения
- •7.2.1. Предложение from
- •7.2.1.1. Соединённые таблицы
- •7.2.1.2. Псевдонимы таблиц и колонок
- •7.2.1.3. Подзапросы
- •7.2.1.4. Табличные функции
- •7.2.2. Предолжение where
- •7.2.3. Предложения group by и having
- •7.2.4. Обработка оконных функций
- •Обобщенные табличные выражения Transact-sql Применение обобщенных табличных выражений
- •With обобщенное_табличное_выражение (Transact-sql)
- •Рекомендации по созданию и использованию обобщенных табличных выражений
- •Рекомендации по созданию и использованию обобщенных табличных выражений
- •Рекомендации по созданию и использованию рекурсивных отв
- •Инструкции языка управления потоком Transact-sql Язык управления потоком (Transact-sql)
- •Сценарии и пакеты Transact-sql Сценарии языка Transact-sql
- •Инструкции языка описания данных Transact-sql Инструкции языка описания данных ddl (Transact-sql)
- •Инструкции alter (Transact-sql)
- •Инструкции create (Transact-sql)
- •Инструкции drop (Transact-sql)
- •Ограничения целостности Transact-sql
- •Инструкции языка обработки данных Transact-sql
- •Предложение for (Transact-sql)
- •Инструкции языка контроля доступа к данным Transact-sql
- •Хранимые процедуры Transact-sql Хранимые процедуры (компонент Database Engine)
- •Функции Transact-sql Основные сведения о пользовательских функциях
- •Триггеры Transact-sql Триггеры dml
- •Курсоры Transact-sql Курсоры
- •Использование простого курсора и синтаксиса
- •Индексы Transact-sql Индексы
- •Вторичный индекс path типа данных xml
- •Вторичный индекс value типа данных xml
- •Вторичный индекс property
- •Управление транзакциями в sql Server Инструкции транзакций (Transact-sql)
- •Журналирование в sql Server Журнал транзакций (sql Server)
- •Просмотр журнала ошибок sql Server
- •Управление безопасностью в sql Server
- •Массовый импорт и экспорт данных в sql Server Массовый импорт и экспорт данных (sql Server)
- •Методы массового импорта и экспорта данных
- •Файлы форматирования
- •Метаданные в sql Server Метаданные (службы Master Data Services)
- •Распределенные запросы и распределенные транзакции в sql Server Распределенные запросы
- •Распределенные транзакции Transact-sql
- •Распределенные запросы и распределенные транзакции
Распределенные запросы и распределенные транзакции
SQL Server 2008 R2
Компонент SQL Server Database Engine позволяет создавать соединения с источниками данных OLE DB, называемые связанными серверами. После подключения к источнику OLE DB можно делать следующее:
Ссылаться на наборы строк источников OLE DB в инструкциях языка Transact-SQL.
Передавать команды источникам OLE DB и включать результирующие наборы строк как таблицы в инструкции языка Transact-SQL.
Каждый распределенный запрос может ссылаться на несколько связанных серверов и выполнять операции обновления или считывания отдельно на каждом из связанных серверов. В каждом распределенном запросе могут выполняться операции чтения на одних связанных серверах и операции обновления на других. Обычно компонент Database Engine требует поддержки распределенных транзакций от соответствующего поставщика OLE DB, если в транзакции вероятно обновление данных более чем одного связанного сервера. Следовательно, типы запросов, поддерживаемые для связанного сервера, зависят от уровня поддержки транзакций, имеющихся в поставщиках OLE DB. OLE DB определяет два необязательных интерфейса для управления транзакциями:
Интерфейс ITransactionLocal поддерживает локальные транзакции в источниках OLE DB.
Интерфейс ITransactionJoin позволяет поставщику присоединиться к распределенной транзакции, которая включает другие менеджеры ресурсов.
Все поставщики, которые поддерживают интерфейс ITransactionJoin, также поддерживают интерфейс ITransactionLocal.
Если распределенный запрос выполняется при соединении, которое находится в режиме автоматической фиксации, то действуют следующие правила:
Для поставщиков, которые не поддерживают интерфейс ITransactionLocal, допустимы только операции считывания.
Для поставщиков, которые поддерживают интерфейс ITransactionLocal, допустимы все операции обновления.
Управляющий экземпляр компонента Database Engine автоматически вызывает интерфейс ITransactionLocal в каждом связанном сервере, который участвует в операции обновления, чтобы начать локальную транзакцию. Он подтверждает транзакции при успешном выполнении инструкции или в противном случае откатывает транзакции.
Если распределенный запрос выполняется на распределенном секционированном представлении или выполняется тогда, когда соединение является явной или неявной транзакцией, действуют следующие правила:
Для поставщиков, которые не поддерживают интерфейс ITransactionJoin, допустимы только операции чтения. Поставщики, которые не поддерживают транзакции или поддерживают только интерфейс ITransactionLocal, не могут участвовать в операциях обновления.
Если параметр SET XACT_ABORT установлен в ON, для поставщиков, которые поддерживают интерфейс ITransactionJoin, допустимы все операции обновления. Управляющий экземпляр компонента Database Engine автоматически вызывает интерфейс ITransactionJoin на каждом связанном сервере, участвующем в операции обновления, чтобы включить этот сервер в распределенную транзакцию. Координатор распределенных транзакций (Майкрософт) (MS DTC) затем фиксирует или откатывает их, когда управляющий сервер указывает, что транзакция фиксируется или откатывается.
Если параметр SET XACT_ABORT равен OFF, то прежде чем будут разрешены операции обновления, связанный сервер должен также поддерживать вложенные транзакции. Вложенные транзакции поддерживаются, если поставщик поддерживает вызов метода ITransactionLocal::StartTransaction тогда, когда для сессии уже есть транзакция. Это позволяет SQL Server откатывать отдельные инструкции в распределенных запросах, не откатывая всю транзакцию.
Приведенные выше правила подразумевают следующее ограничение для поставщиков, которые не поддерживают вложенные транзакции: операции обновления разрешены в распределенной транзакции только в том случае, если параметр XACT_ABORT равен ON.
