Язык Transact-SQL

Подкатегории

Хранимые процедуры и функции, определенные пользователем

В этом разделе вводятся описания пакетов и подпрограмм. Пакеты являются последовательностью операторов Transact-SQL и процедурных расширений. Подпрограммы могут быть либо хранимыми процедурами, либо функциями, определенными пользователем (User Defined Function, UDF). В начале главы вводятся все процедурные расширения, поддерживаемые Database Engine. После этого процедурные расширения используются вместе с операторами Transact-SQL, чтобы продемонстрировать, как могут быть реализованы пакеты. Пакет может быть сохранен как объект базы данных в виде хранимой процедуры или UDF. Одни процедуры написаны пользователями, другие предоставляются корпорацией Microsoft, они называются системными хранимыми процедурами. В отличие от пользовательских хранимых процедур функции, написанные пользователем, возвращают вызвавшей программе некоторое значение. Все подпрограммы могут быть написаны либо на Transact-SQL, либо на любом языке программирования, таком как С# или Visual Basic.

Просмотреть материалы...

Система безопасности Database Engine

Этот раздел начинается с краткого обзора наиболее важных концепций безопасности базы данных. Затем обсуждаются специфические особенности системы безопасности Database Engine. Аутентификация требует ответа на следующий вопрос: «Имеет ли этот пользователь легитимные права на доступ в систему?» Следовательно, эта концепция безопасности задает процесс проверки полномочий для предотвращения использования системы неавторизованными пользователями.

Просмотреть материалы...

Управление параллельной работой

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

Просмотреть материалы...

Системный каталог

В этом разделе рассматривается системный каталог Database Engine. За общими сведениями следует описание представлений для просмотра структуры некоторых каталогов; представления позволяют вам просматривать метаданные. В начале главы также рассматривается использование динамически управляемых представлений и динамически управляемых функций. А затем обсуждаются четыре альтернативных способа поиска информации метаданных: системные хранимые процедуры, системные функции, функции свойств и информационная схема.

Просмотреть материалы...

Индексы

В этом разделе описываются индексы и их роль в оптимизации времени отклика запросов. В первой части главы рассматриваются вопросы хранения индексов и существующие для этого формы. В основном глава содержит описание трех операторов Transact-SQL, имеющих отношение к индексам: create index, alter index и drop index. После этого рассматривается фрагментация индексов и ее влияние на производительность системы. Затем приводятся некоторые общие рекомендации по созданию индексов.

Просмотреть материалы...

Представления – View

Этот раздел посвящена исключительно объектам базы данных, называемым представлениями (view). Структура этой главы соответствует структуре, в которых были описаны операторы DDL и DML для базовых таблиц. В первом разделе этой главы рассматриваются операторы DDL, связанные с представлениями: create view, alter view и drop view. Затем описываются операторы DDL для представлений: select, insert, update и delete. Оператор select будет рассмотрен отдельно от других трех операторов. В отличие от базовых таблиц представления не могут быть использованы для операций модификации без некоторых ограничений.

Просмотреть материалы...

Триггеры

Этот раздел посвящен механизму, называемому триггерами. В начале главы описываются операторы Transact-SQL для создания, удаления и изменения триггеров. После этого даются примеры из различных областей приложений для этого объекта базы данных. Каждый пример создается с использованием одного из операторов insert, update или delete. Во второй части этой главы рассматриваются триггеры DDL, которые базируются на таких операторах, как create table. Опять же, даются примеры из различных областей приложений, связанных с триггерами DDL.

Просмотреть материалы...

Основные элементы SQL

В этом разделе вводятся элементарные типы данных и основные операторы, поддерживаемые в языке Transact-SQL. Во-первых, описываются базовые элементы языка, включающие константы, идентификаторы и разделители. Затем, поскольку каждый элементарный объект имеет соответствующий тип данных, подробно описываются типы данных. В дополнение к этому обсуждаются все существующие операторы и функции. В конце этой главы вводятся значения null.

Просмотреть материалы...

Язык описания данных

Этот раздел описывает все операторы Transact-SQL, связанные с языком определения данных DDL (Data Definition Language). Операторы DDL разделены на три группы, которые рассматриваются по порядку. Первая группа включает операторы, которые создают объекты, вторая группа включает операторы, которые изменяют структуру объектов, а третья группа включает операторы, которые удаляют объекты базы данных.

Просмотреть материалы...

Запросы к базе данных

В этом разделе вы изучите, как использовать оператор select для выполнения поиска данных. Здесь описывается каждое предложение этого оператора и даются многочисленные примеры с использованием базы данных sample для демонстрации практического использования каждого предложения. После этого рассматриваются агрегатные функции, множество операторов, вычисляемые столбцы и временные таблицы. Затем рассказывается более подробно о сложных запросах. Вводится оператор соединения таблиц. В дополнение к рассмотрению всех форм оператора соединения, который является наиболее важным оператором для реляционных систем баз данных, в главе рассматриваются коррелированные подзапросы и функция exists.

Просмотреть материалы...

Изменение содержимого таблиц

В дополнение к оператору select, который был описан, существуют три других оператора DML: insert, update и delete. Как и оператор select, эти три оператора модификации оперируют либо таблицами, либо представлениями. В данной главе обсуждаются эти операторы в работе с таблицами и даются примеры их использования. Дополнительно рассматриваются два других оператора: truncate table и merge. В то время как оператор truncate table является расширением в языке Transact-SQL стандарта SQL, оператор merge - новая и стандартизованная возможность в SQL Server 2008.

Просмотреть материалы...

Оценить
(0 голоса)
Database Engine поддерживает две различные модели конкурентного доступа: ♦ пессимистический конкурентный доступ; ♦ оптимистический конкурентный доступ. Пессимистический конкурентный доступ применяет замки для блокировки доступа к данным, которые используются другим процессом в то же самое время. Иными словами, система базы данных, которая использует пессимистический конкурентный доступ, предполагает, что конфликт между двумя или более процессами может появиться в любое время, и поэтому блокирует ресурсы (строки, страницы, таблицы), как только они потребуются, на все время выполнения транзакции. Как вы увидите в разд. «Блокировка», пессимистический конкурентный доступ устанавливает совместно используемые замки на прочитанные записи, так что никакой другой процесс не может изменять эти данные.…
Оценить
(0 голоса)
Транзакцией является последовательность операторов Transact-SQL, которые используются программистами базы данных для объединения операций чтения и записи таким образом, что система гарантирует согласованность данных. Существуют две формы транзакций. ♦ Неявная. Определяет любой одиночный оператор insert, update или delete как единицу транзакции. ♦ Явная. Обычно это группа операторов Transact-SQL, где начало и конец такой группы отмечается операторами begin   transaction, commit и rollback. Понятие транзакции лучше всего объяснить на примере. В базе данных sample служащей Ann Jones должен быть назначен новый номер служащего. Этот номер служащего должен быть изменен в двух различных таблицах одновременно. Строка в таблице employee и все соответствующие строки в…
Оценить
(5 голоса)
Транзакции имеют следующие свойства, которые известны под аббревиатурой ACID: ♦ атомарность (Atomicity); ♦ согласованность (Consistency); ♦ изолированность (Isolation); ♦ устойчивость (Durability). Свойство атомарности гарантирует неделимость набора операторов, которые изменяют данные в базе данных и являются частью транзакции. Это означает, что или выполняются все изменения данных в транзакции, или в случае любой ошибки все уже выполненные изменения отменяются. Согласованность гарантирует, что транзакция не даст возможности базе данных содержать несогласованные данные. Другими словами, трансформация данных в рамках одной транзакции переводит базу данных из одного согласованного состояния в другое согласованное состояние. Свойство изолированности разделяет все одновременно выполняющиеся транзакции. Другими словами, ни одна активная…
Оценить
(1 голос)
Существует шесть операторов Transact-SQL, связанных с транзакциями: ♦ begin transaction; ♦ begin distributed transaction; ♦ commit [work]; ♦ rollback [work]; ♦ save transaction; ♦ set implicit_transactions. Оператор begin transaction запускает транзакцию. Он имеет следующий синтаксис: begin transaction [{transaction_name I  Qtrans_var} [with mark  ['description'] } ] Здесь transaction_name- имя, назначаемое транзакции. Оно может быть использовано только в самой внешней паре вложенных операторов begin transaction/commit или begin transaction/rollback. Qtrans_yar- имя определенной пользователем переменной, содержащей допустимое имя транзакции. Опция with mark указывает, что транзакция должна быть отмеченной в протоколе транзакций, description является строкой, которая описывает эту отметку. Если используется with mark, то имя…
Оценить
(1 голос)
Системы реляционных баз данных сохраняют каждое изменение записи, которое они выполнили в базе данных в течение транзакции. Это необходимо в случае появления ошибки в процессе выполнения операторов транзакции. В этой ситуации все ранее выполненные операторы в рамках данной транзакции должны быть отменены. Если система определяет наличие ошибки, она должна использовать сохраненные записи для возврата базы данных к согласованному состоянию, которое имела база данных на момент старта этой транзакции. Database Engine сохраняет все записанные записи, их значения до и после изменения, в одном или более файлах, называемых протоколом транзакций. Каждая база данных имеет собственный протокол транзакций. Следовательно, если нужно отменять одну…
Оценить
(0 голоса)
Конкурентный доступ может приводить к некоторым негативным эффектам, таким как чтение несуществующих данных или потеря модифицированных данных. Рассмотрим такой пример из реальной жизни, который иллюстрирует один из этих негативных эффектов, называемый грязным чтением. Пользователь U1 в отделе кадров получил сведения об изменении адреса у служащего Jim Smith. U1 выполнил изменение адреса, однако потом, просматривая банковский счет у Smith в следующем диалоговом окне, он обнаружил, что изменил адрес не тому человеку. (В организации работают два человека по имени Jim Smith.) К счастью, приложение дает возможность пользователю отменить это изменение щелчком по кнопке. U1 щелкает мышью по этой кнопке, зная, что он…
Оценить
(4 голоса)
Режимы блокировки определяют различные виды замков. Выбор того, какой режим блокировки нужно применить, зависит от того ресурса, который нужно блокировать. Следующие три типа замков используются для блокирования на уровне строк и на уровне страниц: ♦ разделяемый (shared, S); ♦ исключительный (exclusive, Е); ♦ обновление (update, U). Разделяемая блокировка резервирует ресурс (страницу или строку) только для чтения. Другие процессы не могут изменять заблокированный ресурс, пока блокировка не будет снята. С другой стороны, отдельные процессы могут устанавливать разделяемую блокировку для этого ресурса в то же самое время, т. е. другие процессы могут читать ресурс, заблокированный при помощи разделяемой блокировки. Исключительная блокировка резервирует…
Оценить
(0 голоса)
Гранулярность блокировок указывает, какой блокируется ресурс в одной попытке блокирования. Database Engine может блокировать такие ресурсы, как: ♦ строка; ♦ страница; ♦ индексный ключ или диапазон индексных ключей; ♦ таблица; ♦ экстент; ♦ сама база данных. Строка является наименьшим ресурсом, который может быть заблокирован. Поддержка блокировки на уровне строки включает и данные строк, и записи индексов. Блокировка на уровне строки означает, что блокируется только та строка, к которой осуществляется доступ приложения. Следовательно, все другие строки, принадлежащие той же странице, являются свободными и могут использоваться другими приложениями. Database Engine также может блокировать страницу, на которой хранится строка, которая должна быть заблокирована.…
Оценить
(0 голоса)
Если установлено много блокировок с одной и той же гранулярностью в процессе выполнения транзакции, Database Engine автоматически преобразует эти блокировки в блокировку таблицы. Этот процесс конвертирования множества блокировок уровней страницы, строки или индекса в блокировку уровня таблицы называется укрупнением блокировки. Начало укрупнения определяется системой динамически и не требует конфигурирования. (В настоящий момент значением границы укрупнения является 5000 блокировок.) Основной проблемой, связанной с укрупнением блокировки, является то, что сервер базы данных принимает решение, когда следует укрупнять конкретную блокировку, а это решение может не быть оптимальным для приложений с различными потребностями. По этой причине SQL Server 2008 расширяет синтаксис оператора alter table,…
Оценить
(0 голоса)
Для воздействия на блокировки вы можете использовать или подсказки блокировок, или опцию lockjtimeout в операторе set.
© 2021 serversql.ru. Все права защищены.