MySQL 提供了幾個客戶端工具和實用程序,最常用的有:
eUcN=o
mysql - 一個交互式客戶程序,可以對數據庫發布查詢并查看結果
xn_hbb2
mysqldump - 此工具可以提取 MySQL 數據庫中的架構和數據,并放到一個文件中
]:O91Dx{X
mysqlimport - 此工具可以讀取文件中的架構和數據,并放到一個 MySQL 數據庫中
YjuTB~8ug
mysqladmin - 此工具可以執行管理任務,比如創建數據庫和刪除數據庫
P_tdB!oW~
myODBC - 一個 32 位的開放式數據庫連接軟件,可提供 ODBC 級別 0(有級別 1 和級別 2 的功能)驅動程序,用于將 ODBC 識別的應用程序連接到 MySQL
LN:0xOYm
SQL Server 的遷移工具
`|fSe2J
B1+a}' T
SQL Server 有一組豐富的工具和實用程序,可以簡化從 MySQL 的遷移。SQL Server 2000 數據轉換服務 (DTS) 是一組圖形化工具和可編程對象,用于從各種來源提取、轉換和合并數據到一個或多個目標。
3Lm eMZ\
數據轉換服務的功能
r SU=GB
6[ oU}om~
Microsoft SQL Server 2000 中的數據轉換服務提供了從不同數據源遷移數據的方法。DTS 可以用向導程序驅動,也可以用 DTS 程序包設計器創建。DTS 向導可以快速完成數據直接復制。程序包設計器允許開發人員用多種編程語言編寫自定義轉換腳本。DTS 工具允許您:
^w:,7$rFB
將數據從 MySQL 遷移到 SQL Server 2000
+5m)U<+m:
在遷移前顯示數據
t<!`I,v4
遷移數據表、數據類型,例如文本和日期
rV@
用 MySQL 數據表遷移 MySQL 數據庫
Ub(EQ"
生成并查看遷移報告
;+nKlf +
自定義數據表和默認的數據類型映射規則
9d`"Z@|3
解決沖突,比如 SQL Server 保留字沖突
f"rlZ
刪除并重命名 SQL Server 架構模型中的對象
nIp=`mZn&
遷移單個數據表數據
]u>|(hB&
數據轉換服務術語
:%XK(k2
r]NFHX3h
以下是用于描述 DTS 的術語:
O8|f{Q(
DTS 程序包是一個連接、DTS 任務、DTS 轉換以及工作流約束的有組織的集合,可以在 DTS 設計器中用圖形化方式或用編程方式匯編在一起。
8f'\>/u
DTS 任務是一個分立的功能集合,在程序包中單步執行。每個任務都定義一個數據移動和數據轉換過程中要執行的工作項目,或者一個要執行的作業。
U BMEy:I
DTS 轉換是數據到達目的地之前要對它應用的一個或多個功能或操作。
X~k;E~U
DTS 程序包工作流允許數據轉換服務 (DTS) 逐步運行,由優先約束對 DTS 程序包中的工作項目進行排序。您可以在 DTS 設計器中用圖形方式設計 DTS 數據包工作流,也可用編程方式設計。
> ``[B F
元數據為 DTS 提供的功能可以將程序包元數據和數據沿襲信息保存到元數據服務,并鏈接那些信息類型。您可以存儲程序包中引用的數據庫的類別元數據,以及統計與數據集市或數據倉庫中特定數據行有關的歷史信息。
tg0Jj')L
直接遷移
MZbXr\
>8O=ec>Gy
將數據從 MySQL 遷移到 Microsoft SQL Server 的最直接選項是安裝 myODBC 支持并創建一個 DTS 程序包,用它們將數據庫從 MySQL 導入并創建到 Microsoft SQL Server。
KVTaC
以下是設置 Microsoft SQL Server 以遷移 MySQL 數據庫的逐步操作。
{ ^67
安裝 MyODBC 支持,它可在以下網址下載
http://www.mysql.com/ "D`/$Cx
安裝過程中,系統會提供以下對話框:
~r?GuC
/M]F"tLE
如果您的瀏覽器不支持內嵌框,請單擊此處在單獨的頁中查看。
Z!MA g;
填寫 ODBC 安裝設置,使用如下信息:
#[@t)P2t
Windows DSN 名稱:
jHnhR1t`
qgx#OTu
test
7|$kmETMY
-**mBR
1rR~s
說明:
G1>(u@w'8
a]UeJK#x
這是個測試數據庫
'm@hG0
Tf<EMv$
|(-,GZ!
MySQL 數據庫:
H?ZV$m.
:'z5VXJdYg
test
:\z*ZdzrJ
EvaW@0
+IM'DWv'5o
服務器:
]JPI27 ]l
|'|5uZXO
seawolf.microsoft.com
^Z@V.wF/J
#" \0r&U
iuUlm?a
用戶:
X:f'R&?%
`CN j>
cgunn
t!L .^ O9
H20 4Xg|
s>{eME UO
密碼:
Z8? OyV
g=X_" w
my_password
r#oKK9w5
IQ%M+6
beVT;E>;/
端口:
z/= um3b)
*my[aPf5
3306
AWL}oRl)A
Z}41.
<{HR"71
使用上述設置后,Windows DSN 名稱在建立連接的計算機上必須唯一,服務器設置會完全驗證域名(確保 DNS 或您提供的名稱具備名稱解析)或 IP 地址的有效性。
{_hs3z\t
然后,執行 DTS 向導程序。從 Microsoft SQL Server 程序組中選擇“Import and Export Data”,您會看到以下對話框。
/mxDj>
8xSue;2lI
如果您的瀏覽器不支持內嵌框,請單擊此處在單獨的頁中查看。
4}F]pNeF:
單擊 Next 到下一步。
M=4q%},JH;
現在提供必要的數據源選擇信息,此信息應該是,ODBC 數據源為 MySQL,test 為 System DSN,然后提供安全證書、用戶名和密碼(見下一個對話框),然后單擊 Next。
$/s.W
kl:&|O2%h
如果您的瀏覽器不支持內嵌框,請單擊此處在單獨的頁中查看。
G?(2LuGu
填寫目標連接的詳細信息,如下面的對話框所示,然后單擊 Next。
Ra 6 {J*
XQ9~Z^3iN
如果您的瀏覽器不支持內嵌框,請單擊此處在單獨的頁中查看。
l!D@: /
Specify Table Copy or Query 對話框讓您在此選擇數據源中的數據庫對象選項,這里的數據源是 MySQL。在來源數據庫中選擇 Copy Table(s) 和 View(s)。另外需要說明的重要一點是,MySQL 不支持視圖,所以選擇此選項后,它將只復制數據表對象,單擊 Next 繼續。
7 vtWXl
!r1 /%6=
如果您的瀏覽器不支持內嵌框,請單擊此處在單獨的頁中查看。
<TPLT%6'
下一個是 Select Source Tables and View 對話框,您可以在這個對話框中選擇來源數據表和目標數據表。
?$^'4Bjx
0ay t`1
如果您的瀏覽器不支持內嵌框,請單擊此處在單獨的頁中查看。
2dspD 3'v
單擊橢圓按鈕進行數據轉換,如下面的 Column Mappings and Transformations 對話框所示。
!6KtF><-
&x\` 6.
如果您的瀏覽器不支持內嵌框,請單擊此處在單獨的頁中查看。
>J.#<"s'
在這個對話框中,來源數據類型已經與目標數據類型匹配,空數據字段已經被選中。完成后,單擊 OK。
ioGn {
然后會出現 Save, Schedule, and Replicate Package 對話框,允許您安排遷移時間,避開使用高峰期,同時允許您將 DTS 程序包用不同格式保存到不同地方。
A`nD4QmU?
83p@WVjB
如果您的瀏覽器不支持內嵌框,請單擊此處在單獨的頁中查看。
/b=JP SqH
DTS 保存程序包對話框對 DTS 程序包提供了兩類密碼。第一個密碼是所有者密碼,允許您保護程序包內的所有用戶/密碼信息,而用戶密碼用于執行程序包和防止對 DTS 程序包的任何未授權執行,如下所示,單擊 Next 繼續。
GEeEoAs
>wor\e'.E
如果您的瀏覽器不支持內嵌框,請單擊此處在單獨的頁中查看。
5GdotJ>c%
最后,Completing the DTS Import/Export Wizard 對話框會顯示在 DTS 向導程序中所選選項的概要。
ihI[ ms+{u
^\\ODQvx0
如果您的瀏覽器不支持內嵌框,請單擊此處在單獨的頁中查看。
MK/0c5lL
單擊 Finish 開始數據遷移過程。
qNV30^/
Executing Package 對話框顯示每項任務執行時的狀態。綠色對鉤表示任務成功完成。如果任務不能完成,有錯誤終止了進程,則會出現顯示此錯誤的錯誤對話框。
m|6y6>bs
564o1Lo
如果您的瀏覽器不支持內嵌框,請單擊此處在單獨的頁中查看。
qtjsD)`
*K5*Y$ws
現在您可以成功地將數據從 MySQL 遷移到 SQL Server 2000。
rSQ*$k*r
使用數據加載
] >[asC
l~xm=-
您可以使用與 MySQL Server 一起提供的客戶程序 mysqldump 將 MySQL 數據庫的架構和數據輸出到各種格式的 .sql/.txt 文件。DTS 可以使用 mysqldump 輸出文件為大型數據表提供脫機數據加載能力。以下主題解釋了數據加載過程:
tgca7
生成 mysqldump 數據提取腳本
6/41V [ ,
設置腳本傳輸
XWljhx_
使用提取的腳本
yWWB6p#z
生成 mysqldump 數據提取腳本
s|=i>s$B
Fiy%>Ud
MySQL 有一個實用程序可以轉儲數據庫和數據庫集合進行備份,或者將數據傳輸到 SQL Server。
8 "(Tji
mysqldump 實用程序提供了創建數據庫 SQL 腳本的能力。
V+aB<_V3
mysqldump 最簡短的語法是:
& yIxVb
Shell> mysqldump [OPTIONS] database [tables]
8)jGP#&[
本白皮書后面有 mysqldump 的可用選項信息,也可以查看 MySql 參考手冊獲得此信息。
BXs`Vvuw
使用 mysqldump 后,您會獲得一個數據庫的 SQL 腳本。
o0"(3r;&G%
設置腳本傳輸
'5@,\*>~!
4#Bv%r
用 mysqldump 生成腳本后,可以將腳本傳輸到 SQL Server - 使用類似文件傳輸協議 (FTP) 的應用程序將腳本從 MySQL 主機傳輸到 SQL Server 2000 計算機。
b}d3Kx>[ '
通過 SQL 查詢分析器使用提取的腳本
7K THMc
(|?z|R
生成的腳本現在可以用于創建數據庫對象和插入數據。從 MySQL 腳本構建數據庫架構的比較好的方法是使用 SQL Server 2000 中的 SQL 查詢分析器。
K%K"v0l1
您可以直接從開始菜單運行 SQL 查詢分析器,也可以從 SQL Server 企業管理器運行。也可以通過執行 isqlw 實用程序從命令行運行 SQL 查詢分析器。
B0qU&p=6
為了讓腳本正確執行,還需要一些額外的工作,這需要對 SQL 語言進行某些更改。同樣,記住逐步運行 SQL 腳本,并將數據類型更改為 SQL Server 兼容類型。下圖顯示了從 mysqldump 導入的一個腳本,需要說明的重要一點是,轉儲的是一個 ASCII 腳本文件。
5]x'Fit
~eO*7{|<
如果您的瀏覽器不支持內嵌框,請單擊此處在單獨的頁中查看。
=ULe*On/
Microsoft SQL Server 2000 SQL 查詢分析器允許您:
r{Z B<C[F
創建查詢和其它 SQL 腳本并對 SQL Server 數據庫執行這些腳本
?6*8L#>D
用預定義腳本迅速創建常用數據庫對象
%=al_ <R=
迅速復制現有的數據庫對象
sB-AO=|A
無需知道參數就可以執行存儲過程
2L@& QWEu
調試存儲過程
(eb?^y& g
調試查詢性能問題
&o7f WGD]
定位數據庫中的對象,或者查看并使用對象
YDG]\
在數據表中迅速插入、更新或刪除行
]} ru"`6$
為常用查詢創建鍵盤快捷方式
3#I1jF>6%
將常用命令添加到工具菜單
@X; o j
擴展應用程序
m:1,"Jc
)Yk}g x
將 MySQL 應用程序的數據管理部分移到 Microsoft SQL Server 后,您可以讓 SQL Server 保護數據并維護所有引用完整性和用 Transact-SQL 編寫的業務規則。
Y"@>ULx-x
諸如 ADO、OLE DB 和 ODBC 這樣的數據庫應用程序編程接口 (API) 通過多種編程語言顯示數據庫數據。您可以用 Microsoft Visual C++、Microsoft Visual Basic 和 Microsoft Visual J++ 這樣的開發系統訪問這些 API。
`;ZUTG&u\
此外,如果應用不斷擴展,您不需要更改應用程序就可以將 Microsoft SQL Server 移到更大的計算機;SQL Server 能自動識別硬件配置,并因此自我調節,以獲得最佳的內存、I/O 和處理器利用率。
gi$_Z48"
從 Internet 訪問數據
@'D`$!s;e
z >V\'tI
SQL Server 提供了將應用程序擴展到基于 Web 的接口的能力。這個能力使您可以隨時隨地訪問應用程序。通過使用 IIS Web 服務器并在 Active Server Pages (ASP) 中使用 ActiveX 數據對象 (ADO),SQL Server 可以與 Microsoft Internet Information Services (IIS) 集成在一起,從而提供了一個訪問 SQL Server 中所保存數據的快速、高效的用戶接口。
t)f qy
詳細信息請參見
http://www.msdn.microsoft.com %wwt$
安全性
+(^k?Z*O
@&P<kBD`6
SQL Server 2000 中的數據庫安全性既穩定又便于維護。不論是 SQL Server 還是 MySQL,重要的是要在兩個層面考慮安全性。1) 能訪問服務器,2) 能訪問單個數據庫。
.d%ktSQC+
MySQL 有一個獨特的加強服務器訪問安全性的方法 - 限制對數據源的訪問。如果是客戶端,則使用 IP 地址或完全合格的域名、通配符(如‘%’)。SQL Server 需要用戶帳戶,不論是由操作系統管理還是保存在 SQL Server 的 master 數據庫中。
r0W2zg92
SQL Server 利用角色提供了組訪問,這可以通過為用戶組建立通用訪問來方便數據庫的管理。
'd{&4 h~uA
以下步驟概要介紹了 Microsoft SQL Server 如何通過企業管理器工具提供對服務器和數據庫的訪問。
gT!iYf#3>
打開企業管理器,找到“Security Folder”,選擇 Logins 圖標,用鼠標右鍵單擊并選擇 New Login。
ojwL?R
Lup?XO}8Q
如果您的瀏覽器不支持內嵌框,請單擊此處在單獨的頁中查看。
{WZ"8q -
出現 SQL Server Login Properties 對話框后,輸入登錄名稱,這與 MySQL 中的用戶名類似。選擇 SQL Server 身份驗證以提供一個對該 SQL Server 有效的安全級別。
2wh;S;R
指定默認數據庫和語言。
0.?%%r/
,PB|$vf%a
在對話框頂部選擇 Server Roles 選項卡,以提供對服務器權限的訪問信息,這里突出顯示的角色是 sysadmins(系統管理員),它相當于 MySQL 中的根訪問。
UuS8Lc
=# im[N
下一個選項卡是 Database Access。這個屬性頁不但提供對單個數據庫的訪問,而且可以訪問實際位于 SQL Server 上的索引數據庫。選擇數據庫后,再設置數據庫角色。默認情況下,所有用戶都可訪問公共角色。這個角色仍然需要分配權限。此圖中還選擇了另一個角色 db_owner,它只允許用戶無限制訪問數據庫,但不能無限制訪問整個 SQL Server 或者其它數據庫,除非單獨選擇了其它數據庫并分配了 db_owner 權限。
Ccr_G-
>ZPTgJRC
單擊 OK 后,會出現輸入密碼的提示。
MvnFSMU
W /Y}S2
%KA6&Vc+E
企業管理器中出現新的登錄。您還會注意到此圖中有一個名為“sa”的登錄帳戶,這個系統管理員帳戶需要有密碼,在安裝 SQL Server 的過程中,會有一個為此登錄保留空密碼的選項,您應該指定這個密碼。
AMIU?:
如果您的瀏覽器不支持內嵌框,請單擊此處在單獨的頁中查看。
WFJWTzY
有關創建 Microsoft SQL Server 登錄的詳細信息,請參閱 SQL Server 聯機圖書的“管理安全性”主題。
Jums~#
數據庫權限
0_<z=`
_oQ] ae
SQL Sever 2000 也通過限制對數據庫定義語言 (DDL) 以及數據操縱語言 (DML) 聲明權限的訪問提供了數據庫安全保護能力,設置步驟與創建登錄類似。使用企業管理器工具可以方便地設置 SQL Server 數據庫權限。
W]mPa`1
數據操縱語言權限
,`G0CA|I
打開企業管理器,找到數據庫文件夾,然后選擇要設置權限的數據庫。選擇 users 圖標,然后選擇數據庫用戶,用右鍵單擊并選擇 Properties。
vpW%LMR#0
6D8qJ'Jy
如果您的瀏覽器不支持內嵌框,請單擊此處在單獨的頁中查看。
BapROn@
單擊 permissions 按鈕。
~ I`.cu]
%|QT_z]<%
權限窗口提供了對所有數據庫對象(比如數據表、視圖和存儲過程)設置 DML 聲明的能力。選擇權限后,請單擊 OK。
}4A!.U/2
iFg *
如果您的瀏覽器不支持內嵌框,請單擊此處在單獨的頁中查看。
C^;|tY
數據定義語言權限
: SD08P
要想為數據庫提供 DDL 聲明訪問,需要選擇該數據庫的屬性。選擇數據庫圖標并用右鍵單擊。選擇 Properties。
(i<#U\TE
W^,QlS*r0z
如果您的瀏覽器不支持內嵌框,請單擊此處在單獨的頁中查看。
#{0INt~J
然后選擇數據庫屬性窗口中的 permissions 選項卡。
5EQNu }ZP
*$\>"+CKu
如果您的瀏覽器不支持內嵌框,請單擊此處在單獨的頁中查看。
L[CmJFE$
選擇相應權限后,單擊 OK。
Es2U
故障排除
F5 :mExL
oT?\qlw
本章提供以下方面的故障排除方案和有關信息:
w +<0$
定義用戶帳戶
p\ILj"
轉儲 MySQL 數據
f&!> %'j!,
優化命令行選項
2 W]q >W
定義用戶帳戶
{pgt\0J-
U co8U"i
當您往系統中安裝 MySQL 服務器時,會默認設置一個根用戶,它是擁有全部 DBA 特權的用戶帳戶。您應該用根用戶通過 ODBC 登錄到 MySQL 服務器。(注意:默認情況下,根用戶只能登錄對本地主機的訪問,請記住允許根用戶從運行 DTS 向導的計算機 IP 或 DNS 地址登錄。)
\*st 2
轉儲 MySQL 數據
g-.`QQ|Mc0
S(h| -PP
下面的表提供了轉儲 MySQL 數據和用 mysqldump 文本文件重新生成數據庫時使用的語法解釋。 命令
.SF4Lf!
說明
7tj(!M/v
W M&z?/R:
mysqldump
^ERg0K9+v
RE%a]^ %[
此工具可以將 MySQL 數據庫中的架構和數據提取到一個文件中。
4d VNb|q)
.-]G>R<CF
sW>Nyu
mysql
Sxb^D^s c
_]Sulr
加載 MySQL 以便您使用命令。
:+,SZ) R
^Dd4 sXFm.
c 7QSb%e
-u user name
'(^4? .~
D?ssVdbu
MySQL 根用戶名。此用戶應該有全部的 DBA 特權。
4`l!@DY
X)C&ZB7<g
s%7K
-ppassword
3Zf9!
~J|JVj.<
您的 MySQL 數據庫服務器的根用戶密碼。
$8Bvu
H_.n"VwMn`
)-um^DVD
--opt
s _`9Kz
TA suE`%
優化數據表轉儲速度并寫一個保證重載速度最快的轉儲文件。此選項可以啟用 -add-drop-table、--add-locks、--all、--extended-insert, --quick 和 -lock-tables 選項。由 -opt 啟用的選項列表請參見“MySQL 優化選項”部分。
GPG 2M
q7{lf$
tgu'+kU{
databasename
2w*!cD"8
3S9%Ak'
您要將其內容轉儲到一個文本輸出文件的數據庫的名稱。
=,=g7>
Wg#Kn e
;FV\ m=
<
V}U`nz<
:o:,\D1
用于重定向 UNIX 和 Windows NT/2000 中的輸入的符號。
K?v;:&L*f
C:hMC +q
5qx .T L
filename.sql
xE9Z?lr?%
FVbK"}YQ
含有 MySQL 的文件名。
1@7G~S =
~nU+iVqi
::Y uWV/
4NWJtf3
要想轉儲 MySQL 數據,請使用以下命令:
dC|pU.1
#> mysqldump -u user name -ppassword -opt databasename < filename.sql
RX`P @
若想用 mysqldump 輸出文本文件重新創建數據庫,請使用以下命令:
b6bq|p~)uD
#> mysql -u user name -ppassword databasename < filename.sql
}p!^6:B
優化命令行選項
C{ Qp: x;
G'Ul7atyh
使用 -opt 可以自動在 mysqldump 命令行中啟用選項。有關轉儲 MySQL 數據的更多信息,請參見“轉儲 MySQL 數據”一節。下表是 --opt 命令: 命令
?%80$X
說明
2/h}Lc+
eA5Q9bx
--add-drop-table
JU, E3Rea#
Q&y[@2{
在每個 CREATE TABLE 語句之前添加 DROP TABLE If EXISTS 語句。
9S X2*y
,`!}Quz
c y(NA>
--all
^:1Sj4f[
h/Gd)?~
包括所有 MySQL 特有的創建選項。
Dx2n5l B
YN=(UE.L'
+_ m47W`\
--extended-insert
.^D1z2MNF
?K u$0YQ
寫多個行插入語句
6sQl KIz
()v^,dOh^
$.Sd l?
--quick
10 h t9_
eO#4n 3G(
不緩存查詢,直接轉儲到標準輸出。如果使用此選項時您暫停了 mysqldump,您可能會干擾其它客戶機,因為它會導致服務器等待。
$yK|tQhH?
q#Mq)r}
<9LFX'**
--lock-tables
e,[RW $Y
Q$A[L-
將所有表鎖定為只讀
8 an9;~^
S7|O~ho
pSo2-; )
uG vFsv/s
MySQL 錯誤消息
O7j& (eu
zJ*ip|
本節提供了在 MySQL 數據庫遷移到 SQL Server 2000 的過程中可能會出現的錯誤消息。
v&tRsJ#
錯誤消息
+o1ViwgD
-'sF/\MF
用 DTS 遷移數據時,可能會出現以下錯誤消息: 錯誤消息
f/4: i90{e
解決方案
vRR\IV&
_.<FOv6
無法連接 MSQL Server <name>。
=s:[|FS)PW
您要連接的系統/或端口上是否正在運行 MySQL 服務器?
=WPb3pfi
&N\ .zI@C5
引發該錯誤的原因可能是:
|}%[Sd
·源端口默認設置為 3306。這個端口號指 MySQL 通訊要使用的端口。如果 MySQL 上對這個端口的定義不同,請在 MySQL ODBC 設置中更改此端口設置。
I97*LxUMt~
·確保用戶具有訪問 MySQL 服務器的相應 DBA 權限。
?m^Vr]A:G
·確保用戶名有效。
xP /3%w4
+nHL/]
BEkpp?u~;'
數據庫中已經有一個名為“tablename”的對象
7(<Qx\
|e>j#x
這個數據表是在執行 DTS 程序包的過程中創建的,請確保在程序包執行過程中已經刪除或重新創建了該數據表。
\^+y wU
'HRWk/VCGi
J6fW[MM*
5 |O}d;U?
結論
z: S{7ul"
KHZa/:{
本白皮書提供了成功將數據庫架構和數據從 MySQL 遷移到 Microsoft SQL Server 2000 所需的基本信息和背景知識。對應用程序來說,SQL Server 2000 更可靠、伸縮性更強、功能更多。