Клиент-серверная архитектура MS SQL Server



Nbsp;  

Методическое пособие

 

              

 

 

Оглавление

Оглавление. 2

Вступление. 3

Язык запросов SQL.. 3

Структура сетевой СУБД.. 4

Часть №1. Первое знакомство. 6

MS SQL Server. 6

Администрирование сервера. 6

Типы данных SQL.. 8

Создание таблиц. 9

Создание диаграмм.. 9

Индексы и ключи. 10

Часть 2. SQL-запросы и представления. Организация транзакций. 13

Синтаксис предложений SQL.. 16

INSERT. 16

SELECT. 16

DELETE.. 17

UPDATE.. 17

Представления («Views») 18

Организация транзакций. 20

Выполнение транзакций в SQL.. 21

Часть 3. Хранимые процедуры и триггеры. 23

Создание процедуры в базе данных. 23

Средства языка Transact-SQL.. 24

Вызов сохраненных процедур. 26

Триггеры.. 27

Свойства триггеров. 28

Ограничения использования триггеров. 28

Триггеры Insert 29

Триггеры Delete. 29

Триггеры Update. 29

Триггеры Instead of. 30

Изменение триггеров. 30

Включение и отключение триггеров. 31

 

 

Внимание! Все умышленно или случайно упомянутые товарные знаки, логотипы, зарегистрированные товарные знаки и пр. принадлежат их владельцам. Автор данного пособия не претендует ни на какие права в отношении указанных товарных знаков, логотипов, зарегистрированных товарных знаков и т.д., упоминая их.

Вступление

Язык запросов SQL

Для доступа прикладного программного обеспечения к информации, хранимой в базе данных, существует множество более или менее специализированных языков. Такие, как dBase (и все его семейство – Clipper, FoxPro), Access, Paradox являются одновременно и языками программирования (или содержат средства доступа к таковым), что позволяет писать достаточно сложные прикладные программы. Их достоинство в том, что язык доступа к базе данных является частью самого языка программирования – они неотделимы друг от друга и органично дополняют друг друга, позволяя сделать многие интересные вещи очень простым путем (типа вычисляемого в процессе выполнения программы выражения макрокомпилятора Clipper). Недостаток же является прямым продолжением достоинства – подобная интегрированность является узким местом при малейшей попытке смены окружения прикладной программы, да и организация связей с модулями, написанными на других языках была очень сложна, если возможна вообще – программисты на Clipper помнят, скольких усилий требовалось для сопряжения хотя бы с языком Си, имеющим принципиально открытую архитектуру. Другой недостаток проистекает из «темного прошлого» такого рода языков. Поскольку они возникали как часть СУБД конкретной, то исполнялись лишь под управлением «своей» СУБД в режиме интерпретации. В отсутствие последней работа прикладной программы была невозможна. При переходе к компилирующим трансляторам разработчики СУБД шли на различные ухищрения, со временем переставшие удовлетворять программистов.

Наконец, были написаны библиотеки API, позволяющие осуществлять доступ к БД из языков программирования общего назначения (Paradox API для Си, библиотеки доступа к dBase-совместимым таблицам практически под все языки вплоть до Бейсика и т.д.) Все это преследовало лишь одну цель – разделить язык программирования и язык манипулирования данными. Т.е., программист писал обращения на языке манипулирования данными, которые обрабатывала библиотека доступа к данным.

 

Язык SQL был создан фирмой IBM в 70-х годах как язык, посредством которого конечные пользователи могли бы самостоятельно писать запросы к базе данных (в ту пору квалификация пользователей еще позволяла возложить на последних такую обязанность). Первоначальная версия называлась SEQueL (Simplified English Query Language), после некоторых доработок появился язык SQL (Structured Query Language – структурированный язык запросов) в его теперешнем виде. Фирма IBM тогда еще вполне могла диктовать моду, поэтому SQL со временем стал промышленным стандартом, и многие СУБД в той или иной мере стали поддерживать обработку SQL-запросов.

С появлением механизма ODBC (Open DataBase Connection) от компании Microsoft продвижение языка SQL как промышленного стандарта заметно ускорилось. Как правило, конкретные ODBC-драйвера поддерживают SQL в той или иной мере независимо от того, каков реальный источник данных. OBDC механизм позволяет обращаться как к реальным базам данных, так и просто к таблицам, хранимым на локальной машине. Фирма Borland (ныне Inprise) создала свой собственный механизм под названием BDE (Borland Database Engine), но он прижился гораздо хуже и в настоящее время BDE пользуется тем же самым ODBC, поддерживая его в полной мере. Об удачности ODBC-механизма говорит хотя бы и тот факт, что ODBC применяется даже в мире Unix-подобных систем, где традиционно более чем скептически относятся ко всему, что изобретено в Ричмонде.

 

Язык SQL не является языком программирования как таковым – это язык, ориентированный на работу с множествами. С помощью этого языка можно сформировать очень сложный запрос, но достаточно трудно воплотить какой-либо ветвистый алгоритм – SQL просто не предназначен для этого.

Основным предложением языка является инструкция SELECT (выбор), производящая выборку информации из базы данных по указанным критериям. Синтаксис будет рассмотрен ниже.

 

Структура сетевой СУБД

На рисунке видно, что в сети база данных, находящаяся на сервере, удалена от клиента, чего не было ранее, когда-либо имела место просто однопользовательская структура, либо пользователи сидели за терминалами большой ЭВМ, что практически одно и то же с точки зрения самой СУБД – процесс клиента и процесс СУБД выполняются на одном компьютере и могут взаимодействовать в любой момент, когда им это необходимо. При работе же в сети структура СУБД стала разнесенной – появилась серверная часть, управляющая самой БД, хранимой на носителе сервера и часть клиентская, желающая получать информацию с сервера и сохранять ее там. Не следует считать, что вся СУБД расположена только на сервере либо же только на клиентской станции – СУБД разделена и состоит из двух частей, работающих в постоянном взаимодействии.

Очевидно, что объем передаваемой по сети информации должен быть максимально минимизирован, ибо, пропуская способность сетей, даже локальных, весьма низка по сравнению с пропускной способностью внутренних магистралей ЭВМ. Данному условию не удовлетворяет организация вычислительной системы с применением файл-сервера, ибо в таком случае обработку собственно запроса выполняет клиентская станция, что крайне резко увеличивает объем передаваемых по сети данных. Собственно, при такой архитектуре (что используется некоторыми современными программными продуктами типа «сетевой» версии 1С: Бухгалтерия) система управления базой данных распложена на клиентской машине. Сервер предоставляет только услуги по хранению файлов, т.е. нижнего уровня структуры СУБД – все это крайне отрицательно сказывается на надежности и скорости системы в целом.

Специализированный язык запросов, ориентированный на клиент-серверное взаимодействие (например, SQL, QBE и т.д.) позволяет добиться (при грамотном программировании запросов) минимизации трафика сети, ибо сам анализ запроса и выборку данных проводит серверная часть СУБД. Клиентская же часть получает только результат обработки запроса – результирующую выборку, которая может быть весьма невелика по объему. Такая структура позволяет достичь высокой надежности и большой скорости при сетевом взаимодействии с базой данных. Кроме того, решаются проблемы гетерогенности сети (клиент и сервер могут функционировать на различных платформах, если есть интерфейсные модули под все из них), проблемы защищенности данных, надежности хранения информации и резервирования. Поскольку сеть может содержать любое потребное количество серверов, то любая структура хранения БД может быть применена в каждом конкретном случае.

На рынке существует множество различных продуктов, предназначенных для организации клиент-серверного взаимодействия с базами данных. Среди них достаточно известны такие как Microsoft SQL server, Oracle server, Borland Interbase, Apollo Database server (SQL сервер от Vista Software), mySQL (бесплатный SQL-сервер для операционных систем семейства Unix), IMS от IBM (иерархическая модель), UDS от Siemens (сетевая модель), O2 от O2 Technology (объектно-ориентированная СУБД) и многие другие.

В данном курсе лабораторных занятий будет рассмотрен MS SQL 2005, предназначенный для организации сервера реляционных БД и воспринимающий запросы клиентов на языке SQL. Точнее говоря, используется язык Transact-SQL, являющийся расширением Microsoft стандартного SQL.

Часть №1. Первое знакомство.

 

Все программы, относящиеся к серверу и клиентским соединениям, следует искать в системном меню (Пуск → Программы → Microsoft SQL Server 2005).

MS SQL Server

MS SQL Server предназначен для управления реляционными базами данных. Соединение клиента с сервером может быть организовано как с использованием любого сетевого протокола (TCP/IP, IPX/SPX, NetBEUI), так и с помощью именованных каналов (Named Pipes) Windows NT. Сервер функционирует под управлением ОС семейства Microsoft Windows NT (Windows’2000, XP, 2003). Клиент может быть расположен как на том же компьютере, что и сервер, так и на любом другом компьютере сети. Все действия над сервером кроме установки могут быть проделаны с любой клиентской машины. Запуск службы сервера при использовании Windows NT (‘2000, XP, 2003) может также осуществляться с клиентской машины.

Клиент-серверная архитектура MS SQL Server

 

Администрирование сервера

Все действия по управлению сервером, архивированию информации, раздаче прав пользователей могут выполняться с помощью программы Microsoft SQL Server Management Studio. С помощью этой же программы могут быть созданы файлы данных и все сопутствующие элементы (индексы, представления, хранимые процедуры и т.д.)

 

Программа имеет два окна, в левом отображается дерево элементов, в правом – нижележащие элементы данного уровня и оконечные элементы дерева.

Для каждого сервера имеется группа Databases (базы данных), которая и будет интересовать нас. Базы данных master, model, msdb, tempdb являются служебными и непосредственному изменению пользователем не подлежат.

База данных может содержать таблицы (tables), диаграммы (diagrams), представления (views), сохраненные процедуры (stored procedures), пользователи (users), роли (roles), правила (rules), умолчания (defaults), пользовательские типы данных (user-defined data types).

Таблицы являются хранилищем информации, диаграммы предназначены для связи таблиц между собой, представления позволяют осуществлять выборку данных из нескольких таблиц, сохраненные процедуры хранят последовательность действий, которая выполняется по запросу клиентской стороны. Пользователи и роли (точнее, группы пользователей) представляют гибкий механизм контроля прав клиентов. Правила предназначены для указания серверу на логическую связь хранимых данных, умолчания и пользовательские типы данных дают возможность организовать хранение информации, не попадающей под стандартные типы данных.

В курсе данных лабораторных работ будет рассмотрено создание таблиц и управление ими и их индексами, создание представлений и хранимых процедур. Кроме того, будет показано взаимодействие пользователя с SQL-сервером в интерактивном режиме посредством программы Microsoft SQL Server Management Studio.


Типы данных SQL

Всякое поле таблицы, всякая локальная переменная, выражение и параметр процедуры имеют тип. Стандартные типы данных перечислены ниже.

 

Целочисленные

Bit – целое, имеющее значение 0 либо 1.

Int – целое число от -231 (-2,147,483,648) до 231-1 (2,147,483,647).

Smallint – целое число от -215 (-32,768) до 215-1 (32,767).

Tinyint– целое число от 0 до 255.

 

Десятичные и числовые

Decimal – число с фиксированной точностью в диапазоне от -1038-1 до 1038-1.

Numeric – синоним к «Decimal».

 

Денежные

Money – денежная величина от -263 (-922,337,203,685,477.5808) до 263-1 (+922,337,203,685,477.5807), с точностью до десятитысячной части денежной единицы.

Smallmoney – денежная величина от -214,748.3648 до +214,748.3647, с точностью до десятитысячной части денежной единицы.

 

Приближенные числовые

Float – число с плавающей точкой от -1.79E+308 до 1.79E+308.

Real – действительное число с плавающей точкой -3.40E+38 до 3.40E+38.

 

Дата и время

Datetime – дата и время с 1 января 1753 года до 31 декабря 9999 года, с точностью до 3.33 миллисекунд.

Smalldatetime – дата и время с 1 января 1900 года до 6 июня 2079 года, с точностью до минуты.

 

Перечислимые

Cursor – ссылка на курсор (выборка данных с сервера).

Timestamp – уникальный в рамках базы данных идентификатор.

Uniqueidentifier – глобальный уникальный идентификатор.

 


Дата добавления: 2018-08-06; просмотров: 1272; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!