- 热门文章:
- · PEAR:创建中间的数据库应用层1
- · PEAR:创建中间的数据库应用层2
- · PHP如何透過ODBC來存取資料庫
- · MySQL中文模糊检索问题的解决方法
- · MySQL修改密码方法总结
- · Microsoft SQL Server 7.0 的数据迁移到MySQL上的一种方法(转)
- · php调用ms sql存储过程。。。
- · PHP+MySQl的事务处理(兼回 luobutou 兄的 ID:573852贴子)
- · PHP中操作MySQL数据库的一些要注意的问题(转) 有些问题说得很不错。。挺新颖的。。
- · PHP中对数据库操作的封装(转) 如果我早知道的话。我的论坛就不会像现在这样了。。:(
- · MySQL数据导入与导出 [转]
- · MySQL索引经验之浅见
上一篇:我的一个php_mysql分页类 >>
将MySQL迁移到Microsoft SQL Server 2000 (一)
摘要
本白皮书描述了 Microsoft SQL Server 2000 的迁移能力,并提供了帮助开发人员将 MySQL 数据库迁移到 SQL Server 2000 的特定信息。
引言
本指南解释如何利用几个内置的 SQL Server 工具和实用程序将 MySQL 迁移到 Microsoft? SQL Server? 2000。它还提供了如何修改 MySQL 应用程序,使之与 SQL Server 2000 一起工作的指南。如果您购买了 MySQL 应用程序,您可以继续让这项投资发挥效用,同时又为应用程序结构提供了 SQL Server 2000 的高级功能。
读者对象
本白皮书的读者对象可以是刚接触 SQL Server 及其操作的人,但应非常熟悉 MySQL DBMS 和普通数据库的概念。目标读者必须具备:
- 一般的数据库管理知识。
- 足够的 MySQL DBMS 基础知识背景。
- 熟悉 MySQL 语言。
- 具有 sysadmin 固定服务器角色的成员资格。sysadmin 角色对该服务器有全权控制。要想了解登录 SQL Server 的更多信息,请参见 SQL Server 2000 联机图书的“登录”一节。
为了让说明清楚易懂,使用的基准开发和应用程序平台是 Microsoft Windows? 2000 操作系统 和 SQL Server 2000。MySQL ODBC 驱动程序与 MySQL 一起使用,MySQL 平台是使用 MySQL 3.23.37 的 Red Hat Linux 7.1。
概述
MySQL 是一个开放源代码的数据库管理系统 (DBMS)。它采用客户端/服务器结构,是一个多线程、多用户的数据库服务器。MySQL 是为高速应用设计的,因此,它并不提供关系数据库系统提供的许多功能,比如子查询、外键、引用完整性、存储过程、触发器和视图。此外,它有一个锁定机制,这对同时有不同用户进行许多写操作的数据表来说是不够的。它还缺少对软件应用程序和工具的支持。
SQL Server 2000 是一个完整的关系数据库管理系统 (RDBMS),它还包括用于 OLAP 和数据挖掘的集成分析功能。SQL Server 2000 满足最大的数据处理系统和商业 Web 站点对数据及分析的存储要求,同时可以为个人和小企业提供易用的数据存储服务。
Microsoft SQL Server 的结构支持高级的服务器功能,比如行一级的锁定、高级查询优化、数据复制、分布式数据库管理以及分析服务。Transact-SQL (T-SQL) 是 SQL Server 2000 支持的 SQL 语言。
本章中提到的结构特点只是 SQL Server 2000 提供的众多特点的一部分。SQL Server 2000 联机图书是安装应用程序时可以利用的一个有用资源。要使用联机图书,请打开 Microsoft SQL Server 程序组并单击“联机图书”。
迁移过程
本章通过列出 MySQL 和 Microsoft SQL Server 2000 的结构来介绍迁移过程。本章包括以下内容:
- 迁移准备
- 数据类型、保留字和运算符
- MySQL 的数据迁移工具
- Microsoft SQL Server 的数据迁移工具
- 直接迁移:数据转换服务 (DTS)
- 使用数据加载能力:查询分析程序
- 扩展应用程序
- 故障排除
迁移准备
正确的迁移规划对确保最终成功极其重要。开始迁移前,请查看待迁移 MySQL 数据库的架构。比较 MySQL 和 SQL Server 2000 的数据类型,了解二者的区别。本白皮书的“比较 MySQL 与 Microsoft SQL Server”一节提供了可比数据类型的框架。注意某些 MySQL 数据库对象可能会与 SQL Server 2000 的保留字冲突。下一节中有这些保留字。使用 DTS 迁移到 SQL Server 2000 之前应该先备份并复制 MySQL 数据库文件。
数据类型、保留字和运算符
本节介绍 SQL Server 2000 中使用的数据类型。为了顺利迁移,这里提供了一张 MySQL 和 SQL Server 2000 的数据类型对照表。同时还提供了 Microsoft SQL Server 中使用的保留字列表。它包括以下信息:
- 支持的 SQL Server 数据类型
- 比较 MySQL 与 SQL Server 2000
- SQL Server 保留字
支持的 SQL Server 数据类型
| BIGINT | 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(整数)。 |
| INT | 从 -2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647) 的整型数据(整数)。 |
| SMALLINT | 从 2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。 |
| TINYINT | 从 0 到 255 的整型数据。 |
| BIT | 非 1 即 0 的整型数据。 |
| DECIMAL | 从 -10^38 +1 到 10^38 -1 的固定精度和标度的数字数据。 |
| NUMERIC | 功能上相当于十进制数。 |
| MONEY | 从 -2^63 (-922,337,203,685,477.5808) 到 2^63 - 1 (+922,337,203,685,477.5807) 的货币型数据,精确到货币单位的万分之一。 |
| SMALLMONEY | 从 -214,748.3648 到 +214,748.3647 的货币型数据,精确到货币单位的万分之一。 |
| FLOAT | 从 -1.79E + 308 到 1.79E + 308 的浮点精度数字数据。 |
| REAL | 从 -3.40E + 38 到 3.40E + 38 的浮点精度数字数据。 |
| DATETIME | 从 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和时间数据,精确到三百分之一秒(3.33 毫秒)。 |
| SMALLDATETIME | 从 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和时间数据,精确到一分钟。 |
| CHAR | 最大长度 8000 个字符的固定长度非 Unicode 字符数据。 |
| VARCHAR | 最大长度 8000 个字符的可变长度非 Unicode 字符数据。 |
| TEXT | 最大长度 2^31 - 1 (2,147,483,647) 个字符的可变长度非 Unicode 数据。 |
| NCHAR | 最大长度 4,000 个字符的固定长度 Unicode 数据。 |
| NVARCHAR | 最大长度 4000 个字符的可变长度 Unicode 数据。sysname 是系统提供的用户定义数据类型,功能上相当于 nvarchar(128),用于引用数据库对象名称。 |
| NTEXT | 最大长度 2^31 - 1 (1,073,741,823) 个字符的可变长度 Unicode 数据。 |
| BINARY | 最大长度 8,000 个字节的固定长度二进制数据。 |
| VARBINARY | 最大长度 8,000 个字节的可变长度二进制数据。 |
| IMAGE | 最大长度 2^31 - 1 (2,147,483,647) 字节的可变长度二进制数据。 |
| CURSOR | 对光标的引用。 |
| SQL_VARIANT | 存储 SQL Server 支持的数据类型(text、ntext、timestamp 和 sql_variant 除外)值的数据类型。 |
| TABLE | 用于存储结果集合供以后处理的特殊数据类型。 |
| TIMESTAMP | 整个数据库中都唯一的一个数字,随着行的每次更新而更新。 |
| UNIQUEIDENTIFIER | 全局唯一标识符 (GUID)。 |
详细信息请参见 SQL Server 2000 联机图书的“数据类型”主题。
比较 MySQL 与 SQL Server 2000
下表显示了 MySQL 和 SQL Server 2000 的数据类型映射关系。对于某些 MySQL 数据类型,SQL Server 中有不止一种对应的数据类型。此表包括以下信息:
- 数字类型
- 数据和时间类型
- 字符串类型
注意
D:用于浮点型,表示小数点后面的位数。最大值可以是 30,但至少应大于 M-2。
L:列值的实际长度
M:表示最大显示尺寸。最大有效显示尺寸是 255。
数字类型
| TINYINT | 1 字节 | TINYINT |
| SMALLINT | 2 字节 | SMALLINT |
| MEDIUMINT | 3 字节 | |
| INT | 4 字节 | INT |
| INTEGER | 4 字节 | INT |
| BIGINT | 8 字节 | BIGINT |
| FLOAT(X<=24) | 4 字节 | FLOAT(0) |
| FLOAT(25<=X<=53) | 8 字节 | FLOAT(25) |
| DOUBLE | 8 字节 | FLOAT(25) |
| DOUBLE PRECISION | 8 字节 | FLOAT (53) |
| REAL | 8 字节 | REAL |
| DECIMAL | M 字节(D+2,如果 M<D) | DECIMAL |
| NUMERIC | M 字节(D+2,如果 M<D) | NUMERIC |
日期和时间类型
| DATE | 3 字节 | SMALLDATETIME |
| DATETIME | 8 字节 | DATETIME |
| TIMESTAMP | 4 字节 | TIMESTAMP |
| TIME | 3 字节 | SMALLDATETIME |
| YEAR | 1 字节 | SMALLDATETIME |
字符串类型
| CHAR(m) | M 字节,1<=M<=255 | CHAR |
| VARCHAR(m) | L+1 字节,L<=M 且 1<=M<=255 | VARCHAR |
| TINYBLOB | L + 1 字节,L<2^8 | BINARY |
| BLOB | L + 2 字节,L<2^16 | VARBINARY |
| TEXT | L + 2 字节,L<2^16 | TEXT |
| MEDIUMBLOB | L + 3 字节,L<2^24 | IMAGE |
| MEDIUMTEXT | L + 3 字节,L<2^24 | TEXT |
| LONGBLOB | L + 4 字节,L<2^32 | IMAGE |
| LONGTEXT | L + 4 字节,L<2^32 | TEXT |
| ENUM (VALUE1, VALUE2, ...) | 1 或 2 字节,取决于枚举值的数量(最多 65535 个值)。 | 无可用数据类型,但 CHECK 约束* 提供功能。 |
| SET (VALUE1, VALUE2, ...) | 1、2、3、4 或 8 字节,取决于集合成员的最大数量 |
* Check 约束通过限制字段中可以接受的值,强制实现数据完整性。详细信息请参见联机图书的“CHECK 约束”主题。
Microsoft SQL Server 2000 保留字
| ADD | EXCEPT | PERCENT |
| ALL | EXEC | PLAN |
| ALTER | EXECUTE | PRECISION |
| AND | EXISTS | PRIMARY |
| ANY | EXIT | PRINT |
| AS | FETCH | PROC |
| ASC | FILE | PROCEDURE |
| AUTHORIZATION | FILLFACTOR | PUBLIC |
| BACKUP | FOR | RAISERROR |
| BEGIN | FOREIGN | READ |
| BETWEEN | FREETEXT | READTEXT |
| BREAK | FREETEXTTABLE | RECONFIGURE |
| BROWSE | FROM | REFERENCES |
| BULK | FULL | REPLICATION |
| BY | FUNCTION | RESTORE |
| CASCADE | GOTO | RESTRICT |
| CASE | GRANT | RETURN |
| CHECK | GROUP | REVOKE |
| CHECKPOINT | HAVING | RIGHT |
| CLOSE | HOLDLOCK | ROLLBACK |
| CLUSTERED | IDENTITY | ROWCOUNT |
| COALESCE | IDENTITY_INSERT | ROWGUIDCOL |
| COLLATE | IDENTITYCOL | RULE |
| COLUMN | IF | SAVE |
| COMMIT | IN | SCHEMA |
| COMPUTE | INDEX | SELECT |
| CONSTRAINT | INNER | SESSION_USER |
| CONTAINS | INSERT | SET |
| CONTAINSTABLE | INTERSECT | SETUSER |
| CONTINUE | INTO | SHUTDOWN |
| CONVERT | IS | SOME |
| CREATE | JOIN | STATISTICS |
| CROSS | KEY | SYSTEM_USER |
| CURRENT | KILL | TABLE |
| CURRENT_DATE | LEFT | TEXTSIZE |
| CURRENT_TIME | LIKE | THEN |
| CURRENT_TIMESTAMP | LINENO | TO |
| CURRENT_USER | LOAD | TOP |
| CURSOR | NATIONAL | TRAN |
| DATABASE | NOCHECK | TRANSACTION |
| DBCC | NONCLUSTERED | TRIGGER |
| DEALLOCATE | NOT | TRUNCATE |
| DECLARE | NULL | TSEQUAL |
| DEFAULT | NULLIF | UNION |
| DELETE | OF | UNIQUE |
| DENY | OFF | UPDATE |
| DESC | OFFSETS | UPDATETEXT |
| DISK | ON | USE |
| DISTINCT | OPEN | USER |
| DISTRIBUTED | OPENDATASOURCE | VALUES |
| DOUBLE | OPENQUERY | VARYING |
| DROP | OPENROWSET | VIEW |
| DUMMY | OPENXML | WAITFOR |
| DUMP | OPTION | WHEN |
| ELSE | OR | WHERE |
| END | ORDER | WHILE |
| ERRLVL | OUTER | WITH |
| ESCAPE | OVER | WRITETEXT |
下一篇:PEAR:创建中间的数据库应用层1 >>
相关文章:
- · 用PHP取Select影响行数的方法
- · 根据数据库自动生成INSERT/UPDATE更新语句
- · 一个PostgreSQL存储过程的例子:
- · SQL Server和Oracle防止数据锁定的比较
- · UNIX下ORACLE数据库的创建
- · HP-UX下ORACLE 8I的安装与配置
- · Oracle 和 mysql 的一些简单命令对比参照
- · MySQL以速度为目标(zt)
- · ODBC to mySQL
- · 写了一个odbc连mssql分页的类,请大家指教一二(原创).
- · 好了,我经过大家的支持现在已经成功的把access数据倒换为mysql形式,本人将奉献给那些需要的朋友们!
- · Tutorial for migrating data from MS Access to MySQL(英文的哦,要有思想准备)
- · 一个php处理oracle的 long型数据的简单例子
- · 谈谈数据从sql server数据库导入mysql数据库的体验(原创)
- · 最小化数据传输——在客户端存储数据
- · 自己动手做一个SQL解释器
- · 使用MySQL时的一些常见错误
- · 大家在碰到这样的情况下注意一下!
- · 给大家一个php+oracle的经验。
- · 使用php通过smtp发送邮件新手指南
- · 判断字符串emailAddr是否为合法的email格式
- · 使用PHP开发qmail邮件服务器管理系统
- · 用SMTP传送邮件时的问题
- · 检查email地址格式的代码
- · 用php发送带附件的Email
- · PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
- · php写的发送附件的程序(二)
- · php写的发送附件的程序(一)
- · 如何用PHP发电子邮件(2)
- · 如何用PHP发电子邮件(1)
- · 解码mime邮件的代码
- · 用PHP3阅读IMAP邮件
- · 实现用php发送带附件的邮件
- · PHP邮件专题
- · 用Socket发送电子邮件(利用需要验证的SMTP服务器)
- · [转帖]PHP的类--功能齐全的发送邮件类 ---(抱歉作者不好意思我忘了地址了,我从本地拷贝上来的)
- · 使用php的编码功能-问题发现(1)
- · 使用php的编码功能-mime.inc(2)
