Меню
Главная
Авторизация/Регистрация
 
Главная arrow Информатика arrow Информационная система бурового предприятия

Разработка хранимых процедур

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

Решением стала возможность создания в MS Microsoft SQL Server хранимых процедур, которые заменили бы часто используемые запросы к базе, что позволило бы существенно увеличить производительность системы.

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

н о к 24 - Схема основной базы данных для MS SQL Server 2008 Express

Р и с у н о к 24 - Схема основной базы данных для MS SQL Server 2008 Express

н о к 25 - Схема временной базы данных для MS SQL Server 2008 Express

Р и с у н о к 25 - Схема временной базы данных для MS SQL Server 2008 Express

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

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER procedure [dbo].[importProc]

as

begin

declare @a int

declare cur cursor for

select number from tempBase..partys

open cur

fetch next from cur into @a

while(@@FETCH_STATUS=0)

begin

exec importByPartyID @a

fetch next from cur into @a

end

close cur

deallocate cur

end

В этой процедуре происходит последовательная синхронизация данных из отчётов, присланных партиями. Процесс отправки данных с партии на сервер и последующую синхронизацию баз данных можно разбить на этапы:

- отправка данных с клиента на сервер, при этом в временной базе удаляются строки, которые были удалены в локальной базе клиента, а так же передаются обновлённые или новые строки;

- раз в сутки или по команде администратора выполняется запуск команды синхронизации путём вызова хранимой процедуры importNew;

- хранимая процедура осуществляет попартийное удаление устаревших данных из основной базы данных, после этого выполняется обновление изменившихся строк и добавление новых.

Ниже приведён запрос на добавление новых строк в таблицу оборудования, используемый в данной хранимой процедуре.

insert equipments(number,typeID,classID,used,partyNumber,dateDelivery,dateSend,usedTime,reason,clientID)

select

ge.Number,gt.recID typeId,ec.recID classID,ge.used,ge.partyNumber,ge.dateDelivery,ge.dateSend,ge.usedTime,ge.reason,ge.clientID

from tempBase..Equipments ge

join tempBase..equipmentClass gec on gec.clientID = ge.ClassID

join equipmentClass ec on ec.name = gec.name

left join (select geqt.clientID,eqt.recid from

tempBase..EquipmentType geqt

join tempBase..EquipmentClass geqc on geqc.clientID = geqt.EquipmentClassID

join EquipmentClass eqc on eqc.name = geqc.name

join EquipmentType eqt on eqt.name = geqt.name

where

geqc.partyNumber = @partyId and

geqt.partyNumber = @partyId) gt on gt.clientID = ge.TypeID

where

ge.partyNumber = @partyId and

gec.partyNumber = @partyId

 
< Предыдущая   СОДЕРЖАНИЕ   Следующая >
 

Предметы
Агропромышленность
Банковское дело
БЖД
Бухучет и аудит
География
Документоведение
Естествознание
Журналистика
Инвестирование
Информатика
История
Культурология
Литература
Логика
Логистика
Маркетинг
Математика, химия, физика
Медицина
Менеджмент
Недвижимость
Педагогика
Политология
Политэкономия
Право
Психология
Региональная экономика
Религиоведение
Риторика
Социология
Статистика
Страховое дело
Техника
Товароведение
Туризм
Философия
Финансы
Экология
Экономика
Этика и эстетика
Прочее