2009-12-06 1 views
2

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

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

Администратор MySQL не очень полезен, с разочаровывающим «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; 
+2

Существует много различий в синтаксисе между mssql и mysql –

+0

Конечно, есть. Проблема в том, что иногда один из этих различий удается прокрасться, а затем я получаю 1064, но не вижу, в чем проблема, или где она находится. – Radu094

+0

Итак, вы когда-нибудь закончили? Как вы это сделали и сколько времени прошло? –

ответ

3

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

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

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

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

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

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

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

1

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

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

0

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

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

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