Перенос данных из Visual FoxPro на платформу клиент - сервер



Глава 23. Перенос данных из Visual FoxPro на платформу клиент - сервер

Перенос данных из Visual FoxPro на платформу клиент - сервер Использование мастера наращивания для переноса данных в базу данных SQL Server Отображение выражений из Visual FoxPro в SQL Server мастером наращивания Отображение типов индексов мастером наращивания Отображение объектов мастером наращивания Отображение правил и ссылочной целостности мастером наращивания Установка драйвера ODBC Выбор базы данных и источника данных Выбор переносимых таблиц Определение базы данных назначения и ее параметров



Использование мастера наращивания для переноса данных в базу данных SQL Server



Использование мастера наращивания для переноса данных в базу данных SQL Server

Прежде чем приступить к процессу переноса данных из Visual FoxPro в SQL Server, рассмотрим особенности и ограничения, связанные с переносом полей таблиц, выражений, правил поддержки целостности.

Определение базы данных назначения и ее параметров



Определение базы данных назначения и ее параметров

На следующем этапе определяется база данных назначения (рис. 23.5). Если вы хотите добавить таблицы Visual FoxPro в существующую базу данных SQL Server, то можете задать наращивание до масштабов существующей базы данных. В этом случае мастер сразу переходит к восьмому этапу.

Если вы решили создать новую удаленную базу данных, ее имя может состоять не более чем из 30 символов, включая буквы, цифры и символы "#", "$" и "_". Пробелы не разрешаются.

Предупреждение
Для создания новой базы данных вы должны обладать соответствующими полномочиями. При возникновении проблем обратитесь к администратору базы данных SQL Server.



Отображение объектов мастером наращивания



Отображение объектов мастером наращивания

В табл. 23.4 показано, как отображаются объекты из Visual FoxPro в SQL Server:

Отображение правил и ссылочной целостности мастером наращивания



Отображение правил и ссылочной целостности мастером наращивания

В табл. 23.5 описываются триггеры, создаваемые мастером наращивания. Каждый конкретный триггер может содержать код, эмулирующий какие-либо (или все) функциональные возможности Visual FoxPro из числа указанных.

Отображение типов индексов мастером наращивания



Отображение типов индексов мастером наращивания

Индексы SQL Server и индексы Visual FoxPro очень похожи. В табл. 23.3 показано, как типы индексов Visual FoxPro преобразуются в типы индексов SQL Server.

Отображение выражений из Visual FoxPro в SQL Server мастером наращивания



Отображение выражений из Visual FoxPro в SQL Server мастером наращивания

Несмотря на то что Visual FoxPro и Transact-SQL имеют несколько общих функций, многие функции Visual FoxPro не поддерживаются в SQL Server. Выражения Visual FoxPro, содержащиеся в правилах проверки достоверности на уровне полей и на уровне записей, а также в значениях по умолчанию, мастер наращивания пытается преобразовать в выражения Transact-SQL, используя соответствия, представленные в табл. 23.2.

Перенос данных из Visual FoxPro на платформу клиент — сервер



Перенос данных из Visual FoxPro на платформу клиент — сервер

В последнее время перед разработчиками все чаще возникает необходимость переноса приложений, созданных для базы данных Visual FoxPro, на платформу клиент/сервер. Наиболее простым способом переноса данных является использование мастера наращивания.

Мастер наращивания создает базу данных SQL Server, которая дублирует, насколько это возможно, функциональный диапазон базы данных Visual FoxPro. С помощью мастера наращивания вы можете:

преобразовывать локальные базовые таблицы и локальные представления в удаленные базовые таблицы и удаленные представления; перемещать локальные данные на удаленный сервер; П переносить локальные приложения в среду клиент — сервер.

Наращивание может занимать много времени; это зависит от количества данных, объема сетевого трафика и числа параллельных запросов, обрабатываемых сервером. Для больших таблиц наращивание может выполняться в течение нескольких часов.

В данной главе рассмотрим использование мастера наращивания для переноса данных из Visual FoxPro в базу SQL Server.





Выбор локальной базы данных с исходными таблицами



Рис. 23.1. Выбор локальной базы данных с исходными таблицами


На втором этапе необходимо выбрать источник данных (рис. 23.2). Если вы используете именованное соединение для доступа к источнику данных, мастер наращивания будет связывать это именованное соединение со всеми удаленными представлениями, создаваемыми в процессе наращивания. Если при регистрации в источнике данных вы вместо имени соединения используете

имя источника данных, а в дальнейшем задаете создание удаленных представлений, мастер наращивания создает именованное соединение с именем Upsize (или Upsize2, Upsize3 и т. д., если определение соединения с предлагаемым именем уже существует).



Определение источника данных



Рис. 23.2. Определение источника данных


При нажатии кнопки Next (Далее) мастер откроет диааоговое окно ODBC Login (ODBC Логин). Если вы используете именованное соединение с сохраненным паролем, мастер зарегистрирует вас на выбранном сервере SQL Server, не требуя ввести регистрационную информацию ODBC.





Выбор таблиц для переноса в базу SQL Server



Рис. 23.3. Выбор таблиц для переноса в базу SQL Server


Вы не можете изменить принимаемое по умолчанию соответствие для поля ключа, если новый тип данных не позволит индексировать это поле. Вы можете изменить соответствие для поля, входящего в состав ключа индекса, если выберете тип данных, допускающий индексирование; однако после этого вы, возможно, захотите для единообразия изменить типы данных для остальных полей ключа. Visual FoxPro выдает предупреждающее сообщение при попытке изменить соответствие для поля, которое не является полем ключа, но используется в индексе Visual FoxPro. Если вы сделали ошибку, нажмите кнопку Reset To Defaults (Сброс); произойдет сброс типов данных.

При переносе мастером наращивания таблиц Visual FoxPro, имена полей и типы данных автоматически преобразуются в поля SQL Server.

Мастер показывает вам устанавливаемое по умолчанию преобразование типов данных (рис. 23.4). При необходимости вы можете изменить тип данных на сервере базы данных с помощью раскрывающегося списка Server Type (Тип сервера).



Выбор базы данных назначения



Рис. 23.5. Выбор базы данных назначения


На шестом и седьмом этапах определяются устройство и размер для базы данных и журнала транзакций. Размер новой базы данных должен быть не менее 2 Мбайт: это минимальный размер, допускаемый в SQL Server. SQL Server создает для вашей базы данных журнал транзакций, который можно использовать для восстановления базы данных в случае серьезных ошибок в системе. В идеальном варианте базу данных и соответствующий ей журнал следует размещать на устройствах, находящихся на разных физических дисках. Эти устройства должны быть созданы до запуска мастера наращивания, поскольку он создает все новые устройства на одном и том же физическом диске, на котором расположено главное устройство базы данных.

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

Индексы и значения по умолчанию Visual FoxPro становятся индексами и значениями по умолчанию SQL Server. Если вы решили экспортировать правила, мастер наращивания пытается экспортировать в SQL Server правила уровня поля и правила уровня строки, в результате чего они превращаются в хранимые процедуры, вызываемые из триггеров SQL Server. Экспортированные табличные отношения также становятся частью этих триггеров.

Замечание
Замечание

Если вы наращиваете табличные отношения, не забудьте выполнить и наращивание индексов, иначе производительность может заметно снизиться.

Определение параметров базы данных



Рис. 23.6. Определение параметров базы данных


Если у вас только один физический диск, вы должны разместить базу данных и ее журнал на разных устройствах, чтобы можно было пользоваться командой сервера sql dump transaction.

На последнем этапе вы можете выбрать следующие варианты завершения наращивания:

провести наращивание, не генерируя код SQL; сгенерировать только код SQL для наращивания; провести наращивание и сгенерировать код SQL.

Проект с информацией о переносе данных



Рис. 23.7. Проект с информацией о переносе данных




Часть отчета о выполнении наращивания базы данных



Рис. 23.8. Часть отчета о выполнении наращивания базы данных


Первый и третий варианты доступны только в том случае, если вы обладаете на сервере SQL полномочием create table. Если вы выбрали один из вариантов, предусматривающий сохранение сгенерированного кода SQL, то весь код SQL, генерируемый мастером наращивания, будет сохранен на вашем жестком диске.

Мастер наращивания создает проект Report (Отчет) (рис. 23.7), который содержит таблицы, использующиеся для переноса данных из таблиц Visual FoxPro, а также отчеты о переносе данных (рис. 23.8).





Соответствие типов данных



Таблица 23.1. Соответствие типов данных

Сокращенное обозначение Тип данных Visual FoxPro

Тип данных SQL Server

С Character char
Y Currency money
D Date datetime
Т DateTime datetime
В Double float
F Float float
G General image
I Integer int
L Logical bit
М Memo text
М (binary) Memo binary image
С (binary) Character binary binary
N Numeric float




Отображение выражений из Visual FoxPro в SQL Server



Таблица 23.2. Отображение выражений из Visual FoxPro в SQL Server

Выражение Visual FoxPro Выражение SQL Server
Истина (.T.) 1
Ложь (.F.) 0
# <>
.AND. AND
.NOT. NOT
.NULL. NULL
.OR. OR
=< < —
— > >=
ASCO ASCII 0
AT() CHARINDEXO
CDOW() DATENAME(dw, ...)
CHR() CHAR()
CMONTH() DATENAME(mm, ...)
CTOD() CONVERT(datetime, ...)
CTOT() CONVERT(datetime, ...)
DATE() GETDATE()
DATETIMEO GETDATE()
DAY() DATEPART(dd, ...)
DOW() DATEPART(dw, ...)
DTOC() CONVERT(varchar, ...)
DTOR() RADIANS( )
DTOT() CONVERT(datetime, ...)
HOUR() DATEPART(hh, ...)
LIKEO PATINDEX()
MINUTE() DATEPART(mi, ...)
MONTH() DATEPART(mm, ...)
MTON() CONVERT(money, ...)
NTOM() CONVERT(float, ...)
RTOD() DEGREES()
SUBSTR() SUBSTRING!)
TTOC() CONVERT(char, ...)
TTOD() CONVERT(datetime, ...)
YEAR() DATEPART(yy, ...)

Следующие функции имеют одинаковый вид и в Visual FoxPro, и в SQL Server.

CEILING() LOG( LOWER()
LTRIM( RIGHT() RTRIM()
SOUNDEX() SPACE() STR( )
STUFF() UPPER()  




Сопоставление типов индекса Visual FoxPro типам индекса SQL Server



Таблица 23.3. Сопоставление типов индекса Visual FoxPro типам индекса SQL Server

Тип индекса Visual FoxPro Тип индекса SQL Server
Первичный Кластеризованный уникальный
Кандидат Уникальный
Уникальный, обычный Не уникальный

Мастер наращивания использует имена индексов Visual FoxPro в качестве имен индексов в SQL Server. Если имя индекса оказывается зарезервированным ключевым словом, мастер наращивания изменяет это имя, присоединяя к нему символ "_".

Замечание
Замечание

SQL Server не поддерживает убывающие и возрастающие индексы и не разрешает использовать выражения в индексах сервера. Мастер наращивания в ходе наращивания индекса удаляет выражения Visual FoxPro из выражений индекса; на сервер передаются только имена полей.



Триггеры, создаваемые мастером наращивания



Таблица 23.5. Триггеры, создаваемые мастером наращивания

Триггер Эмулируемые функциональные возможности Visual FoxPro
UPDATE Правила проверки достоверности (на уровне полей и на уровне записей). Ссылочная целостность
INSERT Правила проверки достоверности (на уровне полей и на уровне записей). Ссылочная целостность (только триггеры дочерних таблиц)
DELETE (только родительские таблицы)

Ссылочная целостность




Таблица соответствия между типами данных



Таблица соответствия между типами данных




Установка драйвера ODBC



Установка драйвера ODBC

Перед запуском мастера наращивания необходимо установить драйвер ODBC для выбранной базы данных и определить источник данных для связи с базой данных. Также желательно определить именованное удаленное соединение.

Замечание
Замечание

Установку драйверов ODBC, определение источника данных и создание именованного удаленного соединения мы рассмотрели в главе 22.



Выбор базы данных и источника данных



Выбор базы данных и источника данных

Для запуска мастера наращивания необходимо в меню Tools (Сервис) выбрать команду Wizards (Мастера), а затем значение Upsizing (Наращивание).

На первом этапе работы с мастером наращивания вам необходимо выбрать и открыть локальную базу данных, которая будет переноситься в базу данных SQL Server (рис. 23.1).



Выбор переносимых таблиц



Выбор переносимых таблиц

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

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