Портирование хранимых процедур MS SQL на MySQL - PullRequest
2 голосов
/ 06 декабря 2009

У меня есть около 140 - 150 хранимых процедур, которые мне нужно перенести с MS SQL 2005 на MySQL 5.1

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

MySQL Administrator не очень полезен, с разочарованием «Ошибка MySQL 1064 У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL для правильного синтаксиса». Учитывая, что среднее значение SP составляет +100 строк, просто угадать, в чем проблема, не вариант.

Например. Это именно та ошибка, которую я получаю:

  Script line: 1    You have an error in your SQL syntax; check the manual that
   corresponds to your MySQL server version for the right syntax to use near '' at line 5

Тогда в строке 5 все, что у меня есть:

declare PropID float;

Ответы [ 3 ]

3 голосов
/ 06 декабря 2009

Gartner Group сообщает, что ручное преобразование между двумя похожими языками происходит со скоростью около 150 строк в день. По их словам, ваш уровень прогресса чуть ниже среднего: -} Хуже того, он предсказывает, что у вас впереди 150 человеко-дней усилий.

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

Следующее, что кто-то скажет, это «используйте регулярные выражения». Это, вероятно, не сработает, потому что вам нужно найти языковые конструкции программирования, которые не являются «обычными», а скорее «свободными от контекста».

Один из способов получить инструмент для этого - использовать программные преобразования . Это запрограммированные действия, которые заменяют один фрагмент кода другим. Как правило, им требуется полный анализатор языка, чтобы действия могли работать с элементами программы, как это делают компиляторы, а не с текстовыми строками.

Хороший способ написания программных преобразований использует поверхностный синтаксис языка в качестве шаблонов, по сути, «если вы видите this , замените его на , что ». Думайте о них как о "регулярных выражениях", которые были созданы для решения проблем, не связанных с контекстом.

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

Требуется некоторое усилие, чтобы закодировать заслуживающие доверия преобразования. У вас есть около 15 000 строк кода для преобразования. Компромисс между кодированием преобразований и простым кусанием пули и выполнением работы труден, когда количество кода для преобразования настолько мало.

1 голос
/ 06 декабря 2009

Вы можете попробовать MySQL Query Browser вместо администратора MySQL:

Где находится MySQL Administrator предназначен для администрирования сервера MySQL, MySQL Query Browser предназначен для помочь вам запрашивать и анализировать данные, хранящиеся в вашей базе данных MySQL.

0 голосов
/ 06 декабря 2009

Вы портируете с мощного инструмента на менее мощный инструмент. Если старые процедуры используют функции, которые не поддерживает MySQL, это может сделать перенос практически невозможным.

Одна вещь, которая может помочь, состоит в том, что большинство процедур SQL Server реализуют какую-то бизнес-логику. Хорошей новостью является то, что часто используется только небольшая их часть. Фильтрация неиспользованных процедур может сэкономить вам много работы.

Плохая новость заключается в том, что бизнес-процедуры должны быть проверены после портирования; даже самый лучший программист не может переписать их на другом языке и быть уверенным, что они работают. Это требует больших усилий по тестированию и большого объема поддержки после запуска перенесенных процедур.

...