Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект лекций по СУБД.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.79 Mб
Скачать

Импорт, экспорт данных в субд: особенности и потери при выполнении операций

Пример импорта данных из MS Access в MS SQL Server

Рис. Импорт данных в MS SQL Server из Access. 1 шаг

Рис. Импорт данных в MS SQL Server из Access. 2 шаг

Рис. Импорт данных в MS SQL Server из Access. 3 шаг.

Рис. Импорт данных в MS SQL Server из Access. 4 шаг

Рис. Импорт данных в MS SQL Server из Access. 5 шаг

Рис. Импорт данных в MS SQL Server из Access. 6 шаг

Рис. Импорт данных в MS SQL Server из Access. Конец.

Транзакции

При создании систем на основе технологии "клиент-сервер" возникает ряд технических проблем, в частности, — получение на стороне клиента досто­верной информации. Один из способов решения этой задачи основывается на применении механизма транзакций.

Смысл использования транзакций достаточно прост: несколько команд, свя­занных логикой выполнения, объединяется в одну операцию. Невыполне­ние какой-либо из них может привести к общему неверному результату, ис­править который будет достаточно сложно.

Транзакция — это группа инструкций SQL, исполняемых как единое целое. Невыполнение одной инструкции приводит к откату состояния данных на нача­ло транзакции.

Проблемы одновременного доступа к данным

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

  • Потеря обновления. Ситуация возникает при использовании неизолиро­ванных друг от друга транзакции. По этой причине несколько транзак­ций могут считывать и изменять одни и те же данные. В результате все изменения кроме последнего будут потеряны.

  • "Грязное" чтение. Если одни и те же данные будут одновременно читать­ся и изменяться разными транзакциями, то полученная информация мо­жет оказаться противоречивой. Причины тому, по крайней мере, две:

  • транзакция еще не закончила все изменения данных (например, кор­ректировка в связанных таблицах — часть данных уже изменилась, а часть нет);

  • поскольку транзакция еще не закончена, то вообще неочевидно, что она будет зафиксирована. В случае ошибки произойдет ее откат. Получится так, что другая транзакция прочитала модифицированные данные, которые на самом деле не изменились.

  • Неповторяющиеся считывания. Если одна транзакция в процессе работы многократно считывает данные, а в это время вторая транзакция их из­меняет, то первая транзакция, по крайней мере, дважды получит разные значения одних и тех же данных.

  • Фантомные считывания. Проблема возникает, когда одна транзакция считывает данные из таблицы, а вторая в этот момент вставляет (или удаля­ет) строки. Результат выполнения первой транзакции может оказаться для клиента весьма неожиданным.

Программирование транзакций

При работе на стороне сервера может оказаться недостаточным использова­ние исключительно автоматических транзакций, т. к. они действуют только в рамках одной команды. И вам придется управлять транзакциями программным путем. Довольно часто в транзакцию включают весь код хранимой процедуры.