Язык 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 голоса)
Serializable является наиболее строгим уровнем изоляции, потому что он не допускает все четыре ранее рассмотренные проблемы конкурентного доступа. Он получает ряд блокировок на все данные, которые читаются в соответствующей транзакции. Этот уровень изоляции также не допускает добавления новых строк другими транзакциями, пока первая транзакция не будет подтверждена или отменена. Каждый из ранее описанных уровней изоляции снижает степень параллельности менее чем самый последний. Следовательно, уровень изоляции read uncommitted меньше всего уменьшает степень параллельности. С другой стороны, он также менее всего изолирует транзакцию от конкурентных транзакций. Уровень serializable наиболее сильно снижает степень параллельности, однако гарантирует полную изоляцию от всех других конкурентных транзакций.
Оценить
(0 голоса)
Вы можете установить уровень изоляции, используя следующее: ♦ предложение transaction isolation level оператора set. ♦ подсказки уровня изоляции. Предложение transaction isolation level в операторе set предоставляет пять постоянных значений, которые имеют те же имена и те же значения, что и только что описанные стандартные уровни изоляции. Предложение from оператора select поддерживает несколько подсказок для уровней изоляции: ♦ readuncommitted; ♦ readcommitted; ♦ repeatableread; ♦ serializable. Эти подсказки соответствуют уровням изоляции с теми же самыми именами (но при наличии пробелов в именах). Задание уровней изоляции в предложении from оператора select перекрывает текущее значение, установленное оператором set transaction isolation level. Оператор dbcc useroptions…
Оценить
(0 голоса)
Database Engine поддерживает механизм оптимистического управления параллельной работы, основанный на контроле версий строк. Когда данные изменяются с использованием контроля версий строк, то для всех изменяемых данных в базе данных поддерживаются логические копии. Каждый раз, когда изменяется строка, система базы данных сохраняет ее образ до изменения подтвержденной строки в системной базе данных tempdb. Каждая версия отмечается последовательным номером транзакции (XSN) той транзакции, которая выполнила это изменение. (XSN используется для уникальной идентификации транзакций.) Самая последняя версия строки всегда сохраняется в базе данных и соединяется через список связей с соответствующей версией, сохраненной в tempdb. Старая версия строки в базе данных tempdb может содержать…
Оценить
(0 голоса)
read committed snapshot является облегченным вариантом уровня изоляции read committed, обсуждавшегося в предыдущем разделе. Это изоляция на уровне оператора, которая означает, что любая другая транзакция может читать подтвержденные значения, которые существовали на момент начала данного оператора. В случае изменений этот уровень изоляции возвращает версии строк в актуальные данные для выборки строк для их изменения и использует блокировки обновления для выбранных строк данных. Актуальные строки данных, которые должны быть изменены, получают исключительные блокировки. Основное преимущество уровня изоляции read committed snapshot в том, что операции чтения не блокируют обновления, а обновления не блокируют операции чтения. С другой стороны, обновления блокируют другие обновления,…
Оценить
(0 голоса)
Уровень изоляции snapshot является изоляцией на уровне транзакции. Это означает, что любая другая транзакция будет читать подтвержденные изменения, которые существовали непосредственно перед стартом транзакции snapshot. Транзакция snapshot также будет возвращать первоначальные значения данных, пока она не будет завершена, даже если другая транзакция изменила эти данные в течение этого времени. Поэтому другая транзакция может читать  измененные данные только  после завершения транзакции
Оценить
(0 голоса)
Транзакции, выполняющиеся под уровнем изоляции snapshot, получают исключительные блокировки данных перед выполнением модификаций только для поддержания ограничений. В противном случае блокировки на данные не устанавливаются, пока не будут изменены данные. Если данные строки соответствуют критериям обновления, то транзакция snapshot проверяет, не были ли изменены и подтверждены изменения данных этой строки в конкурентной транзакции после того, как была запущена текущая транзакция. Если данные в строке были модифицированы в конкурентной транзакции, то возникает конфликт, и транзакция snapshot завершается. Конфликт обновления обрабатывается системой базы данных, поэтому не существует способа отмены проявления конфликта обновления. Реализация уровня изоляции snapshot является процессом, состоящим из двух шагов.…
Оценить
(0 голоса)
Наиболее важным отличием этих двух оптимистических уровней изоляции является то, что транзакция snapshot может вызывать конфликты обновлений, когда процесс просматривает те же данные во время выполнения транзакции и не является заблокированным. В противоположность этому уровень изоляции read committed snapshot не использует свой собственный XSN при выборе версий строки. Каждый раз при старте оператора подобная транзакция читает самый последний XSN, созданный для этого экземпляра системой базы данных, и выбирает строку с этим номером. Другим отличием является то, что уровень изоляции read committed snapshot позволяет другим транзакциям выполнять модификацию данных до того, как будет завершена транзакция контроля версий строк. Это может привести…
Оценить
(0 голоса)
Конкурентный доступ в многопользовательских системах баз данных может приводить к некоторым негативным эффектам, таким как чтение несуществующих данных или потеря изменений данных. Database Engine, как и все другие СУБД, решает эти проблемы при использовании транзакций. Транзакция является последовательностью операторов Transact-SQL, которые объединяются вместе. Все операторы внутри транзакции составляют атомарную единицу. Это означает, что либо выполняются все операторы, либо в случае ошибок все операции отменяются. Для реализации транзакций используется механизм блокировки. Задачей блокировки является недопущение изменений заблокированных объектов другими транзакциями. Блокировка имеет следующие аспекты: режим блокировки, гранулярность блокировки и длительность блокировки. Режим блокировки определяет различные типы блокировок, выбор которых зависит от…
Оценить
(0 голоса)
Системный каталог содержит таблицы, которые описывают структуру таких объектов, как базы данных, базовые таблицы, представления и индексы. Эти таблицы называются системными базовыми таблицами. Database Engine часто обращается к системному каталогу за информацией, которая является основной для правильного функционирования системы. Database Engine отличает системные базовые таблицы в базе данных master от таблиц, описанных а любой базе данных, созданной пользователем. Системные таблицы из базы данных master находятся в системном каталоге, в то время как системные таблицы конкретной базы данных располагаются в каталоге базы данных. Поэтому системные базовые таблицы существуют только в одном экземпляре во всей системе (если они принадлежат исключительно базе данных…
Оценить
(0 голоса)
Как уже было сказано, следующие интерфейсы являются общими интерфейсами: ♦ представления просмотра каталога; ♦ DMVhDMF; ♦ информационная схема.
© 2018 www.serversql.ru. Все права защищены.