Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Тали Смит
Введение
С появлением драйвера SQL Server для PHP разработчики PHP теперь имеют надежную платформу для разработки и запуска веб-приложений: Windows Server 2008 и Microsoft® SQL Server® 2008.
Миграция из MySQL в SQL Server 2008
Вы можете перенести базу данных MySQL в SQL Server 2008, выполнив следующие действия:
Определите, как сопоставлять базы данных MySQL с SQL Server 2008. У вас есть два основных варианта:
- Сопоставляйте каждую базу данных MySQL с отдельной базой данных SQL Server.
Например, можно сопоставить базу данных MyDB MySQL с базой данных SQL Server MyDB. - Сопоставляйте каждую базу данных MySQL с одной базой данных SQL Server, но отдельной схемой.
Например, можно сопоставить базу данных MyDB MySQL с базой данных SQL Server MySQLDatabases, схемой MyDB.
- Сопоставляйте каждую базу данных MySQL с отдельной базой данных SQL Server.
В SQL Server схемы не обязательно связаны с конкретным пользователем или именем входа, а один сервер содержит несколько баз данных.
Преобразование объектов базы данных; это таблицы, ограничения таблиц, индексы, представление, процедуры, функции и триггеры.
Сопоставление типов данных из типа данных MySQL с типом данных SQL Server.
Перезапись представлений, процедур и функций в соответствии с синтаксисом SQL Server.
Измените приложения по мере необходимости, чтобы они могли подключаться и работать с SQL Server 2008.
После успешного преобразования базы данных перенесите данные из старой базы данных MySQL в только что созданную базу данных SQL Server 2008. Для этой задачи можно использовать службы Microsoft® SQL Server® Integration Services (SSIS), например.
Преобразование объектов базы данных
Затем необходимо преобразовать объекты базы данных.
Имена объектов схемы
В SQL Server 2008 имя объекта может содержать до 128 символов.
Имена неквотированных идентификаторов должны соответствовать этим правилам:
- Первый символ должен быть буквенно-цифровым, символом подчеркивания (_), знаком по адресу (@) или номерным знаком (#).
- Последующие символы могут включать буквенно-цифровые символы, знак подчеркивания, знак (@), знак числа или знак доллара.
- Идентификатор не должен быть зарезервированным словом Transact-SQL.
- Внутри идентификаторов запрещается использовать символы пробела или специальные символы.
Идентификаторы, начинающиеся с @или знака числа, имеют специальные значения. Идентификаторы, начиная с @, являются именами локальных переменных. Те, которые начинаются с знака числа, являются временными именами таблиц.
Чтобы процитировать имя идентификатора в Transact-SQL, необходимо использовать квадратные скобки ([]).
Таблицы, ограничения, индексы и представления
- Преобразование таблиц с помощью сопоставления типов данных столбцов (см. раздел "Сопоставление типов" далее в этом руководстве).
- SQL Server 2008 поддерживает следующие ограничения таблицы (столбца): NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY и CHECK. Преобразуйте каждый тип ограничения в соответствии с синтаксисом Transact-SQL.
- Инструкции SELECT с VIEW также должны быть преобразованы в синтаксис Transact-SQL SELECT.
Хранимые процедуры и пользовательские функции
- Преобразуйте хранимые процедуры и функции с помощью синтаксиса Transact-SQL.
- SQL Server 2008 не поддерживает инструкции DML в определяемых пользователем функциях. Это означает, что вы не можете изменить данные из функции.
Триггеры
- В SQL Server 2008 нет триггеров BEFORE.
- Преобразуйте несколько триггеров ДО в один триггер INSTEAD OF.
Перенос типов данных MySQL
Вам потребуется перенести типы данных MySQL. Следуйте рекомендациям по сопоставлениям типов для преобразования столбцов таблицы, аргументов вложенных значений, возвращаемых значений и локальных типов данных переменных, как показано в документации. http://tinyurl.com/yf9cfcg
Перенос системных функций MySQL
Затем потребуется перенести системные функции MySQL.
Эквивалентные функции
Следующие системные функции MySQL доступны так же, как и в коде SQL Server:
ASCII, LEFT, LOWER, LTRIM, REPLACE, REVERSE, RIGHT, RTRIM, SOUNDEX, SPACE, SUBSTRING, UPPER, ABS, ACOS, ASIN, ATAN, ATAN2, CEILING, COS, COT, DEGREES, EXP, FLOOR, LOG, LOG10, PI, POWER, RADIANS, RAND, ROUND, SIGN, SIN, SQRT, TAN, DAY, MONTH, COALESCE, NULLIF, CAST, CONVERT.
Неподдерживаемые функции
Следующие функции MySQL нельзя легко эмулировать в SQL Server из-за различий в логических и физических организациях и модели безопасности:
BENCHMARK, CHARSET, COERCIBILITY, COLLATION, CRC32, DATE_ADD с интервалом, DATE_SUB с интервалом, GET_FORMAT, PERIOD_ADD, PERIOD_DIFF, SUBTIME, TIMESTAMPADD, TIMESTAMDIFF, MATCH, EXTRACTVALUE, UPDATEXML, GET_LOCK, IS_FREE_LOCK, MASTER_POS_WAIT RELEASE_LOCK.
Примечание.
: В этой статье приведены краткие материалы: "Руководство по миграции из MySQL в SQL Server 2008" АлександрОм Павловым, Юрием Русаковом и Юрием Тернакова, опубликованном в августе 2009 года.*
Ссылки для получения дополнительных сведений:
- Руководство по миграции с MySQL на SQL Server 2005.
- Документация по драйверу SQL Server для PHP.
[1] IBM Corporation. 14 ноября 2006 года. Используйте PHP в System i, часть 1. Введение и примеры.