次の方法で共有


MySQL から Microsoft SQL Server 2000 への移行

概要
このホワイト ペーパーでは、Microsoft SQL Server 2000 の移行機能について詳しく説明し、MySQL データベースから SQL Server 2000 への移行に携わる開発者を支援するための具体的な情報を記載しています。

トピック

Cc997732.arrow_px_down(ja-jp,TechNet.10).gif ã¯ã˜ã‚ã«
Cc997732.arrow_px_down(ja-jp,TechNet.10).gif å¯¾è±¡èª­è€…
Cc997732.arrow_px_down(ja-jp,TechNet.10).gif æ¦‚要
Cc997732.arrow_px_down(ja-jp,TechNet.10).gif ç§»è¡Œã®æ‰‹é †
Cc997732.arrow_px_down(ja-jp,TechNet.10).gif ç§»è¡Œã®ãŸã‚ã®æº–å‚™
Cc997732.arrow_px_down(ja-jp,TechNet.10).gif ãƒ‡ãƒ¼ã‚¿åž‹ã€äºˆç´„語、演算子
Cc997732.arrow_px_down(ja-jp,TechNet.10).gif MySQL のデータ移行用ツール
Cc997732.arrow_px_down(ja-jp,TechNet.10).gif SQL Server の移行用ツール
Cc997732.arrow_px_down(ja-jp,TechNet.10).gif ãƒ‡ãƒ¼ã‚¿å¤‰æ›ã‚µãƒ¼ãƒ“スの機能
Cc997732.arrow_px_down(ja-jp,TechNet.10).gif ãƒ‡ãƒ¼ã‚¿å¤‰æ›ã‚µãƒ¼ãƒ“スの用語
Cc997732.arrow_px_down(ja-jp,TechNet.10).gif ç›´æŽ¥ç§»è¡Œ
Cc997732.arrow_px_down(ja-jp,TechNet.10).gif ãƒ‡ãƒ¼ã‚¿ ロードの使用
Cc997732.arrow_px_down(ja-jp,TechNet.10).gif ã‚¢ãƒ—リケーションの拡張
Cc997732.arrow_px_down(ja-jp,TechNet.10).gif ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£
Cc997732.arrow_px_down(ja-jp,TechNet.10).gif ãƒˆãƒ©ãƒ–ルシューティング
Cc997732.arrow_px_down(ja-jp,TechNet.10).gif MySQL のエラー メッセージ
Cc997732.arrow_px_down(ja-jp,TechNet.10).gif ãŠã‚ã‚Šã«
Cc997732.arrow_px_down(ja-jp,TechNet.10).gif å‚考情報

はじめに

このガイドでは、SQL Server に付属している多数の組み込みのツールやユーティリティを使用して、MySQL から Microsoft SQL Server™ 2000 に移行するための方法について説明します。また、MySQL アプリケーションを SQL Server 2000 で運用するために修正する方法について、そのガイドラインを示しています。MySQL アプリケーションを独自に開発し利用している場合、それらを引き続き利用しながら、SQL Server 2000 の高度な機能を自らのアプリケーション アーキテクチャに加えることができます。

Cc997732.arrow_px_up(ja-jp,TechNet.10).gif ãƒšãƒ¼ã‚¸ã®ãƒˆãƒƒãƒ—へ

対象読者

このホワイト ペーパーの対象読者は SQL Server とその運用に対する知識を必ずしも必要とはしませんが、MySQL DBMS と一般的なデータベースの概念について十分な基礎的知識が必要になります。対象読者には次の知識や条件が求められます。

  • 全般的なデータベース管理知識。

  • MySQL DBMS の基礎に関する十分な背景知識。

  • MySQL 言語に精通していること。

  • sysadmin 固定サーバー ロール内のメンバーシップ。sysadmin ロールはサーバー全般を詳細に制御する権限を持ちます。SQL Server ログインの詳細については、SQL Server 2000 Books Online の「ログイン」の節を参照してください。

以降の説明を簡単にまた明瞭にするため、対象とする開発およびアプリケーションのプラットフォームを Microsoft Windows 2000 オペレーティング システムおよび SQL Server 2000 として説明を進めます。MySQL ODBC ドライバは MySQL で使用され、MySQL のプラットフォームは MySQL 3.23.37 を使用する Red Hat Linux 7.1 です。

Cc997732.arrow_px_up(ja-jp,TechNet.10).gif ãƒšãƒ¼ã‚¸ã®ãƒˆãƒƒãƒ—へ

概要

MySQL はオープンソースのデータベース管理システム (DBMS) です。クライアント/サーバー アーキテクチャを採用しており、マルチスレッド、マルチユーザーのデータベース サーバーです。MySQL は処理速度が優先するように設計されています。そのため、通常のリレーショナル データベース システムで提供されているようなサブクエリ、外部キー、参照整合性、ストアド プロシージャ、トリガ、ビューといった数多くの機能が提供されていません。また、ロック機構が設けられていますが、このしくみはテーブルの中で異なるユーザーから同時に多数の書き込み処理が発生するような状況では不向きです。さらに、ソフトウェア アプリケーションやツールをサポートするための参照情報も十分には提供されていません。

SQL Server 2000 は完全なリレーショナル データベース管理システム (RDBMS) であり、OLAP およびデータ マイニングのための統合分析機能も備えています。SQL Server 2000 は、大規模なデータ処理システムや商用 Web サイトで必要とされるデータおよび分析のためのストレージ条件を満たすとともに、個人や小規模の企業に対しても使いやすいデータ ストレージ サービスを提供することができます。

Microsoft SQL Server のアーキテクチャでは、行レベルのロック、高度なクエリ最適化、データのレプリケーション、分散データベース管理、分析サービスなどの高度なサーバー機能がサポートされています。T-SQL (Transact-SQL) は SQL Server 2000 がサポートしている SQL 言語です。

この章で説明しているアーキテクチャの特徴は SQL Server 2000 が提供する機能のほんの一部にすぎません。SQL Server 2000 Books Online はアプリケーションのセットアップ時にインストールされる貴重なリソースの 1 つです。Books Online を使用するには、[Microsoft SQL Server] プログラム グループを開いて [Books Online] をクリックしてください。

Cc997732.arrow_px_up(ja-jp,TechNet.10).gif ãƒšãƒ¼ã‚¸ã®ãƒˆãƒƒãƒ—へ

移行の手順

この章では、MySQL および Microsoft SQL Server 2000 の両方のアーキテクチャの概要を示すことによって、移行の手順を説明します。次の内容があります。

  • 移行のための準備

  • データ型、予約語、演算子

  • MySQL のデータ移行用ツール

  • Microsoft SQL Server のデータ移行用ツール

  • 直接移行 : データ変換サービス (DTS)

  • データ ロード機能の使用 : クエリ アナライザ

  • アプリケーションの拡張

  • トラブルシューティング

Cc997732.arrow_px_up(ja-jp,TechNet.10).gif ãƒšãƒ¼ã‚¸ã®ãƒˆãƒƒãƒ—へ

移行のための準備

移行を確実に成功させるためには、移行のための適切な計画を立てる作業が大変重要になります。移行作業を開始する前に、移行の対象となる MySQL データベースのスキーマについて確認してください。MySQL のデータ型と SQL Server 2000 のデータ型とを比較し、それらの違いを控えておきます。このホワイト ペーパーの「MySQL から Microsoft SQL Server への比較変換」では、比較変換が可能なデータ型の概要を示しています。MySQL のデータベース オブジェクトが SQL Server 2000 の予約語と競合する可能性があるので注意が必要です。これらの予約語ついては次の節で説明しています。DTS を使用して SQL Server 2000 に移行する場合は、あらかじめ MySQL のデータベース ファイルのバックアップとコピーをとっておいてください。

Cc997732.arrow_px_up(ja-jp,TechNet.10).gif ãƒšãƒ¼ã‚¸ã®ãƒˆãƒƒãƒ—へ

データ型、予約語、演算子

ここでは SQL Server 2000 の中で使用されるデータ型を示します。移行を容易にするため、MySQL データ型から SQL Server 2000 データ型に比較変換するための表を次に示します。また、Microsoft SQL Server の中で使用される予約語の一覧も示します。次の情報があります。

  • サポートされている SQL Server データ型

  • MySQL から Microsoft SQL Server への比較変換

  • 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

DECIMAL と機能的に同じ。

MONEY

通貨単位の 10,000 分の 1 の精度を持つ、-2^63 (-922,337,203,685,477.5808) から 2^63-1 (+922,337,203,685,477.5807) までの金額データ値。

SMALLMONEY

通貨単位の 10,000 分の 1 の精度を持つ、-214,748.3648 から +214,748.3647 までの金額データ値。

FLOAT

-1.79E+308 から 1.79E+308 までの浮動小数点数データ。

REAL

-3.40E+38 から 3.40E+38 までの浮動小数点数データ。

DATETIME

300 分の 1 秒、つまり 3.33 ミリ秒の精度を持つ、1753 年 1 月 1 日 から 9999 年 12 月 31 日までの日付と時刻データ。

SMALLDATETIME

分単位の精度を持つ、1900 年 1 月 1 日 から 2079 年 6 月 6 日の日付と時刻データ。

CHAR

最大長 8,000 文字の固定長の Unicode 以外の文字データ。

VARCHAR

最大長 8,000 文字の可変長の Unicode 以外のデータ。

TEXT

最大長 2^31-1 (2,147,483,647) 文字の可変長の Unicode 以外のデータ。

NCHAR

最大長 4,000 文字の固定長の Unicode データ。

NVARCHAR

最大長 4,000 文字の可変長の Unicode データ。sysname は nvarchar(128) と機能的に同等なシステム提供のユーザー定義データ型であり、データベース オブジェクト名の参照に使用します。

NTEXT

最大長 2^30-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 Books Online の「データ型」の項目を参照してください。

MySQL から Microsoft SQL Server への比較変換
次の各表は、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 バイト (M<D の場合、D+2)

DECIMAL

NUMERIC

M バイト (M<D の場合、D+2)

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 制約は、フィールド内で許容される値を制限することによってデータの整合性を実現します。詳細については、Books Online の「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

Cc997732.arrow_px_up(ja-jp,TechNet.10).gif ãƒšãƒ¼ã‚¸ã®ãƒˆãƒƒãƒ—へ

MySQL のデータ移行用ツール

MySQL にはいくつかのクライアント ツールやユーティリティが付属していますが、主に次のものを頻繁に使用します。

  • mysql – データベースに対してクエリを発行し、その結果を表示することのできる対話型クライアント

  • mysqldump – MySQL 内のスキーマとデータを取り出してファイルに格納することのできるツール

  • mysqlimport – ファイルからスキーマとデータを読み取り MySQL データベースに格納することのできるツール

  • mysqladmin – データベースの作成や削除などの管理作業を実行できるツール

  • myODBC – ODBC (Open DataBase Connectivity) 対応アプリケーションから MySQL に接続するための ODBC レベル 0 (レベル 1 およびレベル 2 の機能を併せ持つ) ドライバを提供する、32 ビット ODBC ソフトウェア

Cc997732.arrow_px_up(ja-jp,TechNet.10).gif ãƒšãƒ¼ã‚¸ã®ãƒˆãƒƒãƒ—へ

SQL Server の移行用ツール

SQL Server には MySQL からの移行を容易にするためのツールやユーティリティが多数付属しています。SQL Server 2000 データ変換サービス (DTS) は、多種多様なソースからデータを抽出して変換し、1 つまたは複数の変換先に整理統合するための、1 組のグラフィカル ツール群およびプログラマブル オブジェクト群です。

Cc997732.arrow_px_up(ja-jp,TechNet.10).gif ãƒšãƒ¼ã‚¸ã®ãƒˆãƒƒãƒ—へ

データ変換サービスの機能

Microsoft SQL Server 2000 のデータ変換サービスは、各種のデータ ソースを移行するための数多くの方法を提供します。DTS はウィザード形式での実行が可能なほか、DTS パッケージ デザイナを使用して組み込むこともできます。DTS ウィザードは簡単なデータ コピーをすばやく実行します。パッケージ デザイナを使用すると、開発者はさまざまなプログラミング言語を使用して独自の変換スクリプトを記述できます。DTS ツールでは次のことが可能です。

  • MySQL から SQL Server 2000 へのデータの移行

  • 移行前のデータの代替表現表示

  • テキスト、日付などのデータ型やテーブルの移行

  • MySQL テーブルを持つ MySQL データベースの移行

  • 移行に関するレポートの生成と表示

  • テーブル、および既定データ型マッピング規則のカスタマイズ

  • SQL Server 予約語などとの競合の解決

  • SQL Server スキーマ モデル内のオブジェクトの削除と名前変更

  • 個々のテーブル データの移行

Cc997732.arrow_px_up(ja-jp,TechNet.10).gif ãƒšãƒ¼ã‚¸ã®ãƒˆãƒƒãƒ—へ

データ変換サービスの用語

DTS では次の用語を使用しています。

"DTS パッケージ" とは、接続、DTS タスク、DTS 変換、およびワークフロー制約をまとめた集まりのことです。これらは DTS デザイナから、またはプログラムを通じて、グラフィカルに組み立てることができます。

"DTS タスク" とは、パッケージ内で 1 ステップとして実行される、1 組の区別された機能群のことです。タスクはそれぞれ、データの移動や変換のプロセスの一部またはジョブとして実行される作業項目を定義します。

"DTS 変換" とは、データが変換先に到達する前にデータの一部分に対して適用される、1 つまたは複数の関数または操作のことです。

"DTS パッケージ ワークフロー" とは、DTS パッケージ内において、データ変換サービス (DTS) のステップと優先順位制約順序の各作業項目を使用可能にするものです。DTS パッケージ ワークフローは DTS デザイナを利用して、またはプログラムを通じて、設計できます。

"メタ データ" とは、パッケージ メタ データとデータ系統情報をメタ データ サービスに保存し、それらの情報を連結させるための機能を DTS に提供するものです。パッケージ内で参照されるデータベース用にカタログ メタ データを保存したり、データ マート用やデータ ウェアハウス用に特定のデータ行のヒストリに関する情報を保存することができます。

Cc997732.arrow_px_up(ja-jp,TechNet.10).gif ãƒšãƒ¼ã‚¸ã®ãƒˆãƒƒãƒ—へ

直接移行

MySQL から Microsoft SQL Server にデータを移行する場合、myODBC サポートをインストールし、DTS パッケージを作成して、データベースを MySQL から Microsoft SQL Server にインポートして作成する方法が、最も直接的な方法です。

MySQL データベースを移行するための Microsoft SQL Server のセットアップ手順は次のとおりです。

  1. myODBC サポートをインストールします。http://www.mysql.com/(英語) から入手できます。

  2. インストールの間、次のダイアログ ボックスが表示されます。

    mysql01

    次のような情報を使用して、ODBC セットアップの設定を完了します。

    Windows DSN Name:

    test

    Description:

    これはテスト データベースです

    MySQL Database:

    test

    Server:

    seawolf.microsoft.com

    User:

    cgunn

    Password:

    my_password

    Port:

    3306

    上の設定を使用する場合、Windows DSN Name は接続を行うコンピュータ上で一意にする必要があり、サーバー設定には完全修飾ドメイン名 (その DNS を確定するもの、それ以外の場合は何らかの名前解決を指定したもの) か、あるいは IP アドレスを指定する必要があります。

  3. 次に、DTS ウィザードを実行します。[Microsoft SQL Server] プログラム グループから [データのインポートとエクスポート] を選択すると、次のダイアログ ボックスが表示されます。

    mysql02

    [次へ] をクリックし、次のステップに移ります。

  4. ここで、必要なデータ ソース情報の選択のオプションが提示されます。次に示すダイアログ ボックスで、[ODBC データ ソース] として MySQL を、システム DSN として test を選択し、セキュリティ資格証明としてユーザー名およびパスワードを指定し、[次へ] をクリックします。

    mysql03

  5. 下のダイアログ ボックスのように変換先の接続詳細情報を指定し、[次へ] をクリックします。

    mysql04

  6. [テーブルのコピーまたはクエリの指定] ダイアログ ボックスでは、ソースからデータベース オブジェクトを選択するオプションが使用できます。この場合は MySQL です。[変換元データベースからテーブルとビューをコピー] を選択します。また、ここでも MySQL がビューをサポートしていないことに注意することが重要です。このオプションを選択するとテーブル オブジェクトだけがコピーされることになります。[次へ] をクリックして続行します。

    mysql05

  7. 次に、[変換元テーブルとビューの選択] ダイアログ ボックスが表示されます。このダイアログ ボックスでは、変換元のテーブルを選択し、作成先のテーブルを指定できます。

    mysql06

  8. データ変換を開始するために、省略記号 (...) ボタンをクリックします。下の [列マッピングと変換] ダイアログ ボックスが表示されます。

    mysql07

    このダイアログ ボックスでは、変換元と変換先のデータ型が一致しており、null 値を許容するデータ フィールドが選択されています。処理が完了したら [OK] をクリックします。

    次に、[パッケージの保存、スケジュール設定、およびレプリケート] ダイアログ ボックスが表示され、移行作業のスケジュールを混雑していない時間帯に設定したり、DTS パッケージを異なる場所や形式で保存することができます。

    mysql08

  9. [DTS パッケージの保存] ダイアログ ボックスでは、下図のように DTS パッケージに対して 2 種類のパスワードが提供されます。1 つ目のパスワードは所有者パスワードで、パッケージ内部に収められるすべてのユーザーおよびパスワード情報を保護するものです。一方、ユーザー パスワードは DTS パッケージの実行を許可すると同時にその不正な実行を防止するためのものです。[次へ] をクリックして続行します。

    mysql09

  10. 最後に、[DTS インポート/エクスポート ウィザードの完了] ダイアログ ボックスで、DTS ウィザードの中で選択したオプションがまとめて表示されます。

    mysql10

    [完了] をクリックするとデータの移行処理が開始します。

  11. [パッケージ実行中] ダイアログ ボックスには、実行されるそれぞれの作業の状態が表示されます。緑のチェックマークは作業が正常に完了したことを示します。作業の完了に失敗し、エラーによって処理が停止した場合は、エラー ボックスがエラーに関する情報とともに表示されます。

    mysql11

これで、MySQL から SQL Server 2000 へのデータの移行が正常に完了しました。

Cc997732.arrow_px_up(ja-jp,TechNet.10).gif ãƒšãƒ¼ã‚¸ã®ãƒˆãƒƒãƒ—へ

データ ロードの使用

MySQL サーバーに付属のクライアント プログラム mysqldump を使用すると、MySQL データベースのスキーマとデータを各種の形式で .sql ファイルまたは .txt ファイルに出力できます。DTS は mysqldump の出力ファイルを使用して、大きなテーブルに対してオフラインでのデータ ロード機能を提供できます。次の各トピックではデータ ロードの手順について説明します。

  • mysqldump データ抽出スクリプトの生成

  • スクリプト転送のセットアップ

  • 抽出したスクリプトの使用

mysqldump データ抽出スクリプトの生成

MySQL には、データのバックアップや SQL Server への転送のために、データベースまたはデータベース コレクションをダンプ出力するユーティリティが付属しています。

mysqldump はデータベースの SQL スクリプトを作成する機能を備えたユーティリティです。

mysqldump の最も簡単な構文は次のとおりです。

Shell> mysqldump [OPTIONS] database [tables]

mysqldump で使用できるオプションについては、このホワイトペーパーのこの後の説明か、または MySql のリファレンス マニュアルを参照してください。

mysqldump を使用すると、データベースの SQL スクリプトが作成されます。

スクリプト転送のセットアップ
mysqldump を使用してスクリプトを生成した後、FTP (File Transfer Protocol) のようなネットワーク アプリケーションを使用して、それらのスクリプトを MySQL ホストから SQL Server 2000 コンピュータに転送できます。

抽出したスクリプトの SQL クエリアナライザでの使用
生成されたスクリプトは、データベース オブジェクトの作成やデータの挿入に使用できます。MySQL スクリプトからデータベース スキーマを作成するには、SQL Server 2000 に付属の SQL クエリ アナライザ ツールを使用するのが好ましい方法です。

SQL クエリ アナライザは、[スタート] メニューから直接実行するか、または SQL Server Enterprise Manager の中から実行できます。また、コマンド プロンプトから isqlw ユーティリティを実行することで SQL クエリ アナライザ を実行することもできます。

スクリプトを正しく実行するためには、SQL 言語間の差異に基づく変更など、さらにいくつかの作業が必要になります。また、SQL スクリプト全体を確認し、データ型を SQL Server 互換のデータ型に変更することも忘れずに行ってください。下の図は mysqldump からインポートしたスクリプトを示したものです。ダンプ出力は ASCII スクリプト ファイルであることに注意してください。

mysql12

Microsoft SQL Server 2000 の SQL クエリ アナライザでは次のことが可能です。

  • クエリその他の SQL スクリプトを作成し、それらを SQL Server データベースに対して実行する。

  • 一般的に使用するデータベース オブジェクトを定義済みのスクリプトから簡単に作成する。

  • 既存のデータベース オブジェクトをすばやくコピーする。

  • パラメータを意識せずにストアド プロシージャを実行する。

  • ストアド プロシージャをデバッグする。

  • クエリのパフォーマンス上の問題をデバッグする。

  • データベース内でオブジェクトを探したり、オブジェクトの表示や操作を行う。

  • テーブル内の行の挿入、更新、または削除をすばやく行う。

  • 頻繁に使用するクエリのためにキーボード ショートカットを作成する。

  • 頻繁に使用するコマンドを [ツール] メニューに追加する。

Cc997732.arrow_px_up(ja-jp,TechNet.10).gif ãƒšãƒ¼ã‚¸ã®ãƒˆãƒƒãƒ—へ

アプリケーションの拡張

MySQL アプリケーションのデータ管理部分を Microsoft SQL Server に移動すれば、既に Transact-SQL でコード化したすべての参照整合性およびビジネス ルールの管理と、データの保護とを、SQL Server に任せることができます。

データベースのデータは、ADO や OLE DB、ODBC などのデータベース API (アプリケーション プログラミング インターフェイス) により、各種のプログラミング言語を通じて公開されます。これらの API には Microsoft Visual C++、Microsoft Visual Basic、Microsoft Visual J++ などの開発システムを利用してアクセスできます。

また、アプリケーションの規模が大きくなった場合でも、アプリケーションに変更を加えることなく Microsoft SQL Server をより大きなコンピュータに移動することが可能です。SQL Server には、ハードウェア構成を自動認識してメモリ や I/O、プロセッサ使用率などが最適になるように SQL Server 自身を調節する機能があります。

インターネットからのデータ アクセス

SQL Server にはアプリケーションを Web ベースのインターフェイスに拡張する機能があり、これを利用することでいつどこからでもアプリケーションにアクセスできます。IIS (インターネット インフォメーション サービス) Web サーバーを使用し、ASP (Active Server Page) の中で ADO (ActiveX Data Object) を使用することで、SQL Server を IIS に統合し、SQL Server に格納されているデータに対して高速で効率的なユーザー インターフェイスを実現できます。

詳細については https://www.microsoft.com/japan/msdn/ を参照してください。

Cc997732.arrow_px_up(ja-jp,TechNet.10).gif ãƒšãƒ¼ã‚¸ã®ãƒˆãƒƒãƒ—へ

セキュリティ

SQL Server 2000 のデータベース セキュリティは堅牢でありながら、管理が容易です。SQL Server および MySQL のどちらの場合においても、セキュリティをサーバーへのアクセス、個々のデータベース (1 つまたは複数) へのアクセスの 2 つのレベルで捉えることが重要です。

MySQL は、サーバーへのアクセスを保護する手段としてソースへのアクセス制限による独自の方法を備えています。たとえばクライアントの場合は、IP アドレスや完全修飾ドメイン名、"%" などのワイルドカードによって、ソースへのアクセスを制限します。SQL Server では、オペレーティング システムが管理するユーザー アカウントか、または SQL Server の master データベース内部に格納されているユーザー アカウントの、どちらかが必要になります。

SQL Server はロールを使用したグループ アクセス機能を備えており、ユーザーのグループに対して共通のアクセスを設定することで、データベースの管理を容易にすることができます。

次の手順は、Microsoft SQL Server によるサーバーへのアクセスの提供方法と、Enterprise Manager ツールを介したデータベースへのアクセスの提供方法について、それらの概要を示したものです。

  1. Enterprise Manager を開き、[セキュリティ] フォルダを参照します。[ログイン] アイコンを選択してマウスで右クリックし、[新規ログイン] を選択します。

    mysql13

    [SQL Server ログインのプロパティ] ダイアログ ボックスが表示されます。ここでログイン名を入力します。ログイン名は MySQL におけるユーザー名と同様です。[SQL Server 認証] を選択し、SQL Server において有効性が確立されるセキュリティ レベルを指定します。

  2. 既定のデータベースと言語を指定します。

    mysql14

  3. ダイアログ ボックス上部の [サーバー ロール] タブを選択し、サーバーへのアクセス権限を設定します。下図で強調表示されているロールは sysadmins (システム管理者) で、MySQL におけるルート アクセスに相当します。

    mysql15

  4. 次の [データベース アクセス] タブのプロパティ ページでは、1 つのデータベースへのアクセスだけでなく、SQL Server 上に物理的に常駐しているすべてのデータベースへのアクセスを指定します。データベースを選択するとデータベースのロールも設定できます。既定では、すべてのユーザーが public ロールへのアクセス権を持っています。このロールに対しては引き続き権限を割り当てる必要があります。この図で選択されている追加のロールは db_owner です。db_owner では、ユーザーが無制限にアクセスできるのは指定されたデータベースだけで、SQL Server 全体にはアクセスできず、データベースを個別に選択して db_owner 権限を割り当てないかぎり、ほかのデータベースにもアクセスできません。

    mysql16

  5. [OK] をクリックすると、パスワード入力のためのプロンプトが表示されます。

    mysql17

新しいログインは Enterprise Manager の中で表示することができます。また、図で "sa" というログイン アカウントがあることもわかります。このシステム管理者アカウントはパスワードを持っており、SQL Server のインストールの間、このログインに対して空のパスワードを選択するオプションがありますが、パスワードは常に指定するようにしてください。

mysql18

Microsoft SQL Server ログインの作成の詳細については、SQL Server Books Online のトピック「セキュリティの管理」を参照してください。

データベース権限

SQL Sever 2000 にも、データ定義言語 (DDL) とデータ操作言語 (DML) の各ステートメント権限への制限付きアクセスを通じてデータベースを保護するのと同じ機能があり、そのための手順はログインの作成と同様です。SQL Server の権限は Enterprise Manager ツールを使用して簡単に設定できます。

データ操作言語の権限

  1. Enterprise Manager を開き、[データベース] フォルダを展開して、権限を設定するデータベースを選択します。[ユーザー] アイコンを選択し、データベース ユーザーを選択してマウスで右クリックし、[プロパティ] を選択します。

    mysql19

  2. [権限] ボタンをクリックします。

    mysql20

  3. 権限ウィンドウでは、テーブル、ビュー、ストアド プロシージャなどのすべてのデータベース オブジェクトについて、それらの DML ステートメントを設定できます。権限を選択したら [OK] をクリックします。

    mysql21

データ定義言語の権限

  1. データベースへの DDL ステートメント アクセスを提供するには、データベースのプロパティを選択する必要があります。対象データベースのアイコンを選択して右クリックし、[プロパティ] を選択します。

    mysql22

  2. 次に、データベースのプロパティ ウィンドウ内の [権限] タブを選択します。

    mysql23

  3. 該当する権限を 1 つまたは複数選択したら、[OK] をクリックします。

Cc997732.arrow_px_up(ja-jp,TechNet.10).gif ãƒšãƒ¼ã‚¸ã®ãƒˆãƒƒãƒ—へ

トラブルシューティング

この章では次のことがらに関するトラブルシューティングの解決方法および情報について説明します。

  • ユーザー アカウントの定義

  • MySQL データのダンプ出力

  • 最適化コマンド ライン オプション

ユーザー アカウントの定義

MySQL サーバーをシステムにインストールしたとき、ユーザー アカウントは既定で完全な DBA 権限を持つルート ユーザーに設定されています。MySQL サーバーへはこのルート ユーザーを使用して ODBC 経由でログオンしてください (メモ : 既定では、ルート ユーザーにはローカルホストへのログオン アクセスだけが与えられています。必ず、ルート ユーザーが 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 により有効になるオプションの一覧については、「最適化コマンドライン オプション」の節を参照してください。

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

すべてのテーブルを読み取り専用としてロックする。

Cc997732.arrow_px_up(ja-jp,TechNet.10).gif ãƒšãƒ¼ã‚¸ã®ãƒˆãƒƒãƒ—へ

MySQL のエラー メッセージ

この節では、MySQL データベースを SQL Server 2000 に移行している際に発生する可能性のあるエラー メッセージを示します。

エラー メッセージ

DTS を使用してデータを移行する際、次のエラー メッセージが表示されることがあります。

エラー メッセージ

解決方法

MySQL Server <名前> に接続できません。
接続しようとしているシステム/ポート上で実行されている MySQL サーバーが存在していますか?

次のいずれかがエラーの原因の可能性があります。
キ ソース ポートは既定で 3306 に設定されています。このポート番号が MySQL との通信を果たすポートとして参照されます。違うポートが MySQL で定義されている場合は、MySQL ODBC 設定内のポート設定を変更します。
キ ユーザーが MySQL サーバーにアクセスするための適切な DBA 権限を持っているか確認します。
キ ユーザー名が有効か確認します。

"テーブル名" という名前のオブジェクトは既にデータベースに存在します

テーブルは DTS パッケージの実行中に作成されます。パッケージの実行中にテーブルが削除または再作成されていないか確認します。

Cc997732.arrow_px_up(ja-jp,TechNet.10).gif ãƒšãƒ¼ã‚¸ã®ãƒˆãƒƒãƒ—へ

おわりに

このホワイト ペーパーでは、MySQL から Microsoft SQL Server 2000 にデータベースのスキーマとデータを正常に移行する際に必要となる基本的な情報とその背景情報について説明しました。SQL Server 2000 は従来よりも高いレベルの信頼性、スケーラビリティ、および機能をアプリケーションに提供します。

Cc997732.arrow_px_up(ja-jp,TechNet.10).gif ãƒšãƒ¼ã‚¸ã®ãƒˆãƒƒãƒ—へ

参考情報

Microsoft SQL Server Web サイト

MSDN (Microsoft Developer Network) Web サイト

Microsoft Universal Data Access Web サイト

MySQL Web サイト (英語)

この文書に記載されている情報は、発行時点で議論されている問題点に関する Microsoft Corporation の最新の見解を示しています。Microsoft は変化する市場状況に対処しなければならないため、本書の内容を Microsoft の確約事項として解釈してはならず、Microsoft は発行日以降に提示された情報の精度についてはいかなるものであれ保証いたしません。

この文書は、情報の通知のみを目的としており、Microsoft は本書に記載されている情報について明示的にも暗黙的にも一切の保証をいたしません。

お客様ご自身の責任において、適用されるすべての著作権関連法規に従ったご使用を願います。このドキュメントのいかなる部分も、米国 Microsoft Corporation の書面による許諾を受けることなく、その目的を問わず、どのような形態であっても、複製または譲渡することは禁じられています。ここで言う形態とは、複写や記録など、電子的な、または物理的なすべての手段を含みます。ただしこれは、著作権法上のお客様の権利を制限するものではありません。

この文書の内容に関する特許、特許出願、商標、著作権、およびその他の知的財産は、Microsoft が所有します。Microsoft との書面によるライセンス契約に明記されていない限り、本書の提供が、以上の特許、商標、著作権、あるいはその他の知的財産権の利用を認めるものではありません。

© 2001 Microsoft Corporation. All rights reserved.

Microsoft、Developer Studio、MSDN、Visual Basic、Visual C++、Visual Studio、Windows、および Windows NT は、米国およびその他の国または地域における Microsoft Corporation の登録商標または商標です。

この文書に記載されている実際の企業名および製品名は、各所有者の商標です。

Cc997732.arrow_px_up(ja-jp,TechNet.10).gif ãƒšãƒ¼ã‚¸ã®ãƒˆãƒƒãƒ—へ