Thursday, August 25, 2005

将MySQL迁移到Microsoft SQL Server 2000

将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。
数字类型
MySQL
大小
SQL Server 2000

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 DECIMAL

NUMERIC
M 字节(D+2,如果 M NUMERIC


日期和时间类型
MySQL
大小
SQL Server 2000

DATE
3 字节
SMALLDATETIME

DATETIME
8 字节
DATETIME

TIMESTAMP
4 字节
TIMESTAMP

TIME
3 字节
SMALLDATETIME

YEAR
1 字节
SMALLDATETIME


字符串类型
MySQL
大小
SQL Server 2000

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



用于数据迁移的 MySQL 工具

MySQL 提供了几个客户端工具和实用程序,最常用的有:
mysql - 一个交互式客户程序,可以对数据库发布查询并查看结果
mysqldump - 此工具可以提取 MySQL 数据库中的架构和数据,并放到一个文件中
mysqlimport - 此工具可以读取文件中的架构和数据,并放到一个 MySQL 数据库中
mysqladmin - 此工具可以执行管理任务,比如创建数据库和删除数据库
myODBC - 一个 32 位的开放式数据库连接软件,可提供 ODBC 级别 0(有级别 1 和级别 2 的功能)驱动程序,用于将 ODBC 识别的应用程序连接到 MySQL
SQL Server 的迁移工具

SQL Server 有一组丰富的工具和实用程序,可以简化从 MySQL 的迁移。SQL Server 2000 数据转换服务 (DTS) 是一组图形化工具和可编程对象,用于从各种来源提取、转换和合并数据到一个或多个目标。
数据转换服务的功能

Microsoft SQL Server 2000 中的数据转换服务提供了从不同数据源迁移数据的方法。DTS 可以用向导程序驱动,也可以用 DTS 程序包设计器创建。DTS 向导可以快速完成数据直接复制。程序包设计器允许开发人员用多种编程语言编写自定义转换脚本。DTS 工具允许您:
将数据从 MySQL 迁移到 SQL Server 2000
在迁移前显示数据
迁移数据表、数据类型,例如文本和日期
用 MySQL 数据表迁移 MySQL 数据库
生成并查看迁移报告
自定义数据表和默认的数据类型映射规则
解决冲突,比如 SQL Server 保留字冲突
删除并重命名 SQL Server 架构模型中的对象
迁移单个数据表数据
数据转换服务术语

以下是用于描述 DTS 的术语:
DTS 程序包是一个连接、DTS 任务、DTS 转换以及工作流约束的有组织的集合,可以在 DTS 设计器中用图形化方式或用编程方式汇编在一起。
DTS 任务是一个分立的功能集合,在程序包中单步执行。每个任务都定义一个数据移动和数据转换过程中要执行的工作项目,或者一个要执行的作业。
DTS 转换是数据到达目的地之前要对它应用的一个或多个功能或操作。
DTS 程序包工作流允许数据转换服务 (DTS) 逐步运行,由优先约束对 DTS 程序包中的工作项目进行排序。您可以在 DTS 设计器中用图形方式设计 DTS 数据包工作流,也可用编程方式设计。
元数据为 DTS 提供的功能可以将程序包元数据和数据沿袭信息保存到元数据服务,并链接那些信息类型。您可以存储程序包中引用的数据库的类别元数据,以及统计与数据集市或数据仓库中特定数据行有关的历史信息。
直接迁移

将数据从 MySQL 迁移到 Microsoft SQL Server 的最直接选项是安装 myODBC 支持并创建一个 DTS 程序包,用它们将数据库从 MySQL 导入并创建到 Microsoft SQL Server。
以下是设置 Microsoft SQL Server 以迁移 MySQL 数据库的逐步操作。
安装 MyODBC 支持,它可在以下网址下载 http://www.mysql.com/
安装过程中,系统会提供以下对话框:

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
填写 ODBC 安装设置,使用如下信息:
Windows DSN 名称:

test


说明:

这是个测试数据库


MySQL 数据库:

test


服务器:

seawolf.microsoft.com


用户:

cgunn


密码:

my_password


端口:

3306


使用上述设置后,Windows DSN 名称在建立连接的计算机上必须唯一,服务器设置会完全验证域名(确保 DNS 或您提供的名称具备名称解析)或 IP 地址的有效性。
然后,执行 DTS 向导程序。从 Microsoft SQL Server 程序组中选择“Import and Export Data”,您会看到以下对话框。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
单击 Next 到下一步。
现在提供必要的数据源选择信息,此信息应该是,ODBC 数据源为 MySQL,test 为 System DSN,然后提供安全证书、用户名和密码(见下一个对话框),然后单击 Next。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
填写目标连接的详细信息,如下面的对话框所示,然后单击 Next。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
Specify Table Copy or Query 对话框让您在此选择数据源中的数据库对象选项,这里的数据源是 MySQL。在来源数据库中选择 Copy Table(s) 和 View(s)。另外需要说明的重要一点是,MySQL 不支持视图,所以选择此选项后,它将只复制数据表对象,单击 Next 继续。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
下一个是 Select Source Tables and View 对话框,您可以在这个对话框中选择来源数据表和目标数据表。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
单击椭圆按钮进行数据转换,如下面的 Column Mappings and Transformations 对话框所示。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
在这个对话框中,来源数据类型已经与目标数据类型匹配,空数据字段已经被选中。完成后,单击 OK。
然后会出现 Save, Schedule, and Replicate Package 对话框,允许您安排迁移时间,避开使用高峰期,同时允许您将 DTS 程序包用不同格式保存到不同地方。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
DTS 保存程序包对话框对 DTS 程序包提供了两类密码。第一个密码是所有者密码,允许您保护程序包内的所有用户/密码信息,而用户密码用于执行程序包和防止对 DTS 程序包的任何未授权执行,如下所示,单击 Next 继续。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
最后,Completing the DTS Import/Export Wizard 对话框会显示在 DTS 向导程序中所选选项的概要。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
单击 Finish 开始数据迁移过程。
Executing Package 对话框显示每项任务执行时的状态。绿色对钩表示任务成功完成。如果任务不能完成,有错误终止了进程,则会出现显示此错误的错误对话框。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。

现在您可以成功地将数据从 MySQL 迁移到 SQL Server 2000。
使用数据加载

您可以使用与 MySQL Server 一起提供的客户程序 mysqldump 将 MySQL 数据库的架构和数据输出到各种格式的 .sql/.txt 文件。DTS 可以使用 mysqldump 输出文件为大型数据表提供脱机数据加载能力。以下主题解释了数据加载过程:
生成 mysqldump 数据提取脚本
设置脚本传输
使用提取的脚本
生成 mysqldump 数据提取脚本

MySQL 有一个实用程序可以转储数据库和数据库集合进行备份,或者将数据传输到 SQL Server。
mysqldump 实用程序提供了创建数据库 SQL 脚本的能力。
mysqldump 最简短的语法是:
Shell> mysqldump [OPTIONS] database [tables]
本白皮书后面有 mysqldump 的可用选项信息,也可以查看 MySql 参考手册获得此信息。
使用 mysqldump 后,您会获得一个数据库的 SQL 脚本。
设置脚本传输

用 mysqldump 生成脚本后,可以将脚本传输到 SQL Server - 使用类似文件传输协议 (FTP) 的应用程序将脚本从 MySQL 主机传输到 SQL Server 2000 计算机。
通过 SQL 查询分析器使用提取的脚本

生成的脚本现在可以用于创建数据库对象和插入数据。从 MySQL 脚本构建数据库架构的比较好的方法是使用 SQL Server 2000 中的 SQL 查询分析器。
您可以直接从开始菜单运行 SQL 查询分析器,也可以从 SQL Server 企业管理器运行。也可以通过执行 isqlw 实用程序从命令行运行 SQL 查询分析器。
为了让脚本正确执行,还需要一些额外的工作,这需要对 SQL 语言进行某些更改。同样,记住逐步运行 SQL 脚本,并将数据类型更改为 SQL Server 兼容类型。下图显示了从 mysqldump 导入的一个脚本,需要说明的重要一点是,转储的是一个 ASCII 脚本文件。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
Microsoft SQL Server 2000 SQL 查询分析器允许您:
创建查询和其它 SQL 脚本并对 SQL Server 数据库执行这些脚本
用预定义脚本迅速创建常用数据库对象
迅速复制现有的数据库对象
无需知道参数就可以执行存储过程
调试存储过程
调试查询性能问题
定位数据库中的对象,或者查看并使用对象
在数据表中迅速插入、更新或删除行
为常用查询创建键盘快捷方式
将常用命令添加到工具菜单
扩展应用程序

将 MySQL 应用程序的数据管理部分移到 Microsoft SQL Server 后,您可以让 SQL Server 保护数据并维护所有引用完整性和用 Transact-SQL 编写的业务规则。
诸如 ADO、OLE DB 和 ODBC 这样的数据库应用程序编程接口 (API) 通过多种编程语言显示数据库数据。您可以用 Microsoft Visual C++、Microsoft Visual Basic 和 Microsoft Visual J++ 这样的开发系统访问这些 API。
此外,如果应用不断扩展,您不需要更改应用程序就可以将 Microsoft SQL Server 移到更大的计算机;SQL Server 能自动识别硬件配置,并因此自我调节,以获得最佳的内存、I/O 和处理器利用率。
从 Internet 访问数据

SQL Server 提供了将应用程序扩展到基于 Web 的接口的能力。这个能力使您可以随时随地访问应用程序。通过使用 IIS Web 服务器并在 Active Server Pages (ASP) 中使用 ActiveX 数据对象 (ADO),SQL Server 可以与 Microsoft Internet Information Services (IIS) 集成在一起,从而提供了一个访问 SQL Server 中所保存数据的快速、高效的用户接口。
详细信息请参见 http://www.msdn.microsoft.com
安全性

SQL Server 2000 中的数据库安全性既稳定又便于维护。不论是 SQL Server 还是 MySQL,重要的是要在两个层面考虑安全性。1) 能访问服务器,2) 能访问单个数据库。
MySQL 有一个独特的加强服务器访问安全性的方法 - 限制对数据源的访问。如果是客户端,则使用 IP 地址或完全合格的域名、通配符(如‘%’)。SQL Server 需要用户帐户,不论是由操作系统管理还是保存在 SQL Server 的 master 数据库中。
SQL Server 利用角色提供了组访问,这可以通过为用户组建立通用访问来方便数据库的管理。
以下步骤概要介绍了 Microsoft SQL Server 如何通过企业管理器工具提供对服务器和数据库的访问。
打开企业管理器,找到“Security Folder”,选择 Logins 图标,用鼠标右键单击并选择 New Login。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
出现 SQL Server Login Properties 对话框后,输入登录名称,这与 MySQL 中的用户名类似。选择 SQL Server 身份验证以提供一个对该 SQL Server 有效的安全级别。
指定默认数据库和语言。

在对话框顶部选择 Server Roles 选项卡,以提供对服务器权限的访问信息,这里突出显示的角色是 sysadmins(系统管理员),它相当于 MySQL 中的根访问。

下一个选项卡是 Database Access。这个属性页不但提供对单个数据库的访问,而且可以访问实际位于 SQL Server 上的索引数据库。选择数据库后,再设置数据库角色。默认情况下,所有用户都可访问公共角色。这个角色仍然需要分配权限。此图中还选择了另一个角色 db_owner,它只允许用户无限制访问数据库,但不能无限制访问整个 SQL Server 或者其它数据库,除非单独选择了其它数据库并分配了 db_owner 权限。

单击 OK 后,会出现输入密码的提示。


企业管理器中出现新的登录。您还会注意到此图中有一个名为“sa”的登录帐户,这个系统管理员帐户需要有密码,在安装 SQL Server 的过程中,会有一个为此登录保留空密码的选项,您应该指定这个密码。
如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
有关创建 Microsoft SQL Server 登录的详细信息,请参阅 SQL Server 联机图书的“管理安全性”主题。
数据库权限

SQL Sever 2000 也通过限制对数据库定义语言 (DDL) 以及数据操纵语言 (DML) 声明权限的访问提供了数据库安全保护能力,设置步骤与创建登录类似。使用企业管理器工具可以方便地设置 SQL Server 数据库权限。
数据操纵语言权限
打开企业管理器,找到数据库文件夹,然后选择要设置权限的数据库。选择 users 图标,然后选择数据库用户,用右键单击并选择 Properties。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
单击 permissions 按钮。

权限窗口提供了对所有数据库对象(比如数据表、视图和存储过程)设置 DML 声明的能力。选择权限后,请单击 OK。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
数据定义语言权限
要想为数据库提供 DDL 声明访问,需要选择该数据库的属性。选择数据库图标并用右键单击。选择 Properties。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
然后选择数据库属性窗口中的 permissions 选项卡。

如果您的浏览器不支持内嵌框,请单击此处在单独的页中查看。
选择相应权限后,单击 OK。
故障排除

本章提供以下方面的故障排除方案和有关信息:
定义用户帐户
转储 MySQL 数据
优化命令行选项
定义用户帐户

当您往系统中安装 MySQL 服务器时,会默认设置一个根用户,它是拥有全部 DBA 特权的用户帐户。您应该用根用户通过 ODBC 登录到 MySQL 服务器。(注意:默认情况下,根用户只能登录对本地主机的访问,请记住允许根用户从运行 DTS 向导的计算机 IP 或 DNS 地址登录。)
转储 MySQL 数据

下面的表提供了转储 MySQL 数据和用 mysqldump 文本文件重新生成数据库时使用的语法解释。 命令
说明

mysqldump

此工具可以将 MySQL 数据库中的架构和数据提取到一个文件中。


mysql

加载 MySQL 以便您使用命令。


-u user name

MySQL 根用户名。此用户应该有全部的 DBA 特权。


-ppassword

您的 MySQL 数据库服务器的根用户密码。


--opt

优化数据表转储速度并写一个保证重载速度最快的转储文件。此选项可以启用 -add-drop-table、--add-locks、--all、--extended-insert, --quick 和 -lock-tables 选项。由 -opt 启用的选项列表请参见“MySQL 优化选项”部分。


databasename

您要将其内容转储到一个文本输出文件的数据库的名称。


<

用于重定向 UNIX 和 Windows NT/2000 中的输入的符号。


filename.sql

含有 MySQL 的文件名。



要想转储 MySQL 数据,请使用以下命令:
#> mysqldump -u user name -ppassword -opt databasename < filename.sql
若想用 mysqldump 输出文本文件重新创建数据库,请使用以下命令:
#> mysql -u user name -ppassword databasename < filename.sql
优化命令行选项

使用 -opt 可以自动在 mysqldump 命令行中启用选项。有关转储 MySQL 数据的更多信息,请参见“转储 MySQL 数据”一节。下表是 --opt 命令: 命令
说明

--add-drop-table

在每个 CREATE TABLE 语句之前添加 DROP TABLE If EXISTS 语句。


--all

包括所有 MySQL 特有的创建选项。


--extended-insert

写多个行插入语句


--quick

不缓存查询,直接转储到标准输出。如果使用此选项时您暂停了 mysqldump,您可能会干扰其它客户机,因为它会导致服务器等待。


--lock-tables

将所有表锁定为只读



MySQL 错误消息

本节提供了在 MySQL 数据库迁移到 SQL Server 2000 的过程中可能会出现的错误消息。
错误消息

用 DTS 迁移数据时,可能会出现以下错误消息: 错误消息
解决方案

无法连接 MSQL Server
您要连接的系统/或端口上是否正在运行 MySQL 服务器?

引发该错误的原因可能是:
?源端口默认设置为 3306。这个端口号指 MySQL 通讯要使用的端口。如果 MySQL 上对这个端口的定义不同,请在 MySQL ODBC 设置中更改此端口设置。
?确保用户具有访问 MySQL 服务器的相应 DBA 权限。
?确保用户名有效。


数据库中已经有一个名为“tablename”的对象

这个数据表是在执行 DTS 程序包的过程中创建的,请确保在程序包执行过程中已经删除或重新创建了该数据表。



结论

本白皮书提供了成功将数据库架构和数据从 MySQL 迁移到 Microsoft SQL Server 2000 所需的基本信息和背景知识。对应用程序来说,SQL Server 2000 更可靠、伸缩性更强、功能更多。

No comments: