轉換 DB2 結構描述 (DB2ToSQL)
連線到 DB2、SQL Server,並設定專案和資料對應選項之後,您可以將 DB2 資料庫物件轉換成 SQL Server 資料庫物件。
轉換程序
轉換資料庫物件會從 DB2 取得物件定義、將其轉換為類似的 SQL Server 物件,然後將此資訊載入適用於 DB2 的 SSMA 中繼資料。 此程序不會將資訊載入 SQL Server 的執行個體。 然後,您可以使用 SQL Server Metadata Explorer 來檢視物件及其屬性。
在轉換期間,SSMA 會將輸出訊息列印至輸出窗格,並將錯誤訊息列印至 [錯誤清單] 窗格。 使用輸出和錯誤資訊來判斷您是否必須修改 DB2 資料庫或轉換程序,以取得所需的轉換結果。
設定轉換選項
轉換物件前,請先檢閱 [專案設定] 對話方塊中的專案轉換選項。 您可以使用這個對話方塊來設定 SSMA 如何轉換函式和全域變數。 如需詳細資訊,請參閱專案設定 (轉換) (DB2ToSQL)。
轉換結果
下表顯示哪些 DB2 物件已轉換,以及因而產生的 SQL Server 物件:
DB2 物件 | 產生的 SQL Server 物件 |
---|---|
資料類型 | SSMA 會對應下列項目以外的每個類型: CLOB:不支援使用此類型的某些原生函式 (例如 CLOB_EMPTY()) BLOB:不支援使用此類型的某些原生函式 (例如 BLOB_EMPTY()) DLOB:不支援使用此類型的某些原生函式 (例如 DLOB_EMPTY()) |
使用者定義類型 | SSMA 會對應下列使用者定義的項目: 相異類型 結構化類型 SQL PL 資料類型 - 注意:不支援弱式資料指標類型。 |
特殊暫存器 | SSMA 只會對應下列暫存器: CURRENT TIMESTAMP CURRENT DATE CURRENT TIME CURRENT TIMEZONE CURRENT USER SESSION_USER 和 USER SYSTEM_USER CURRENT CLIENT_APPLNAME CURRENT CLIENT_WRKSTNNAME CURRENT LOCK TIMEOUT CURRENT SCHEMA CURRENT SERVER CURRENT ISOLATION 其他特殊暫存器不會對應至 SQL Server 語意。 |
CREATE TABLE | SSMA 會對應 CREATE TABLE,但有下列例外狀況: 多維度叢集 (MDC) 資料表 範圍叢集資料表 (RCT) 資料分割資料表 卸離資料表 DATA CAPTURE 子句 IMPLICITLY HIDDEN 選項 VOLATILE 選項 |
CREATE VIEW | SSMA 會對應 CREATE VIEW 與「WITH LOCAL CHECK OPTION」,但其他選項不會對應至 SQL Server 語意 |
CREATE INDEX | SSMA 會對應 CREATE INDEX,但有下列例外狀況: XML 索引 BUSINESS_TIME WITHOUT OVERLAPS 選向 PARTITIONED 子句 SPECIFICATION ONLY 選項 EXTEND USING 選項 MINPCTUSED 選項 PAGE SPLIT 選項 |
觸發程序 | SSMA 會對應下列觸發程序語意: AFTER / FOR EACH ROW 觸發程序 AFTER /FOR EACH STATEMENT 觸發程序 BEFORE / FOR EACH ROW 和 INSTEAD OF / FOR EACH ROW 觸發程序 |
序列 | 會對應。 |
SELECT 陳述式 | SSMA 會對應 SELECT,但有下列例外狀況: Data-change-table-reference 子句 - 部分對應,但不支援 FINAL 資料表 Table-reference 子句 - 部分對應,但 only-table-reference、outer-table-reference、analyze_table-expression、collection-derived-table、xmltable-expression 不會對應至 SQL Server 語意 Period-specification 子句 - 不會對應。 Continue-handler 子句 - 不會對應。 Typed-correlation 子句 - 不會對應。 Concurrent-access-resolution 子句 - 不會對應。 |
VALUES 陳述式 | 會對應。 |
INSERT 陳述式 | 會對應。 |
UPDATE 陳述式 | SSMA 會對應 UPDATE,但有下列例外狀況: Table-reference 子句 - Only-table-reference 不會對應至 SQL Server 語意 Period 子句 - 不會對應。 |
MERGE 陳述式 | SSMA 會對應 MERGE,但有下列例外狀況: 每個子句的單次與多次出現 - 會對應至 SQL Server 語意,以取得每個子句的有限出現次數 SIGNAL 子句 - 不會對應至 SQL Server 語意 混合 UPDATE 和 DELETE 子句 - 不會對應至 SQL Server 語意 Period 子句 - 不會對應至 SQL Server 語意 |
DELETE 陳述式 | SSMA 會對應 DELETE,但有下列例外狀況: Table-reference 子句 - Only-table-reference 不會對應至 SQL Server 語意 Period 子句 - 不會對應至 SQL Server 語意 |
隔離等級和鎖定類型 | 會對應。 |
程序 (SQL) | 會對應。 |
程序 (外部) | 需要手動更新。 |
程序 (來源化) | 不會對應至 SQL Server 語意。 |
指派陳述式 | 會對應。 |
程序的 CALL 陳述式 | 會對應。 |
CASE 陳述式 | 會對應。 |
FOR 陳述式 | 會對應。 |
GOTO 陳述式 | 會對應。 |
IF 陳述式 | 會對應。 |
ITERATE 陳述式 | 會對應。 |
LEAVE 陳述式 | 會對應。 |
Loop 陳述式 | 會對應。 |
REPEAT 陳述式 | 會對應。 |
RESIGNAL 陳述式 | 不支援條件。 訊息為選用。 |
RETURN 陳述式 | 會對應。 |
SIGNAL 陳述式 | 不支援條件。 訊息為選用。 |
WHILE 陳述式 | 會對應。 |
GET DIAGNOSTICS 陳述式 | SSMA 會對應 GET DIAGNOSTICS,但有下列例外狀況: ROW_COUNT - 會對應。 DB2_RETURN_STATUS - 會對應。 MESSAGE_TEXT - 會對應。 DB2_SQL_NESTING_LEVEL - 不會對應至 SQL Server 語意 DB2_TOKEN_STRING - 不會對應至 SQL Server 語意 |
資料指標 | SSMA 會對應 CURSORS,但有下列例外狀況: ALLOCATE CURSOR 陳述式 - 不會對應至 SQL Server 語意 ASSOCIATE LOCATORS 陳述式 - 不會對應至 SQL Server 語意 DECLARE CURSOR 陳述式 - Returnability 子句不會對應至 SQL Server 語意 FETCH 陳述式 - 部分對應。 僅支援作為目標的變數。 SQLDA DESCRIPTOR 不會對應至 SQL Server 語意 |
變數 | 會對應。 |
例外狀況、處理常式和條件 | SSMA 會對應「例外狀況處理」,但有下列例外狀況: EXIT 處理常式 - 會對應。 UNDO 處理常式 - 會對應。 CONTINUE 處理常式 - 不會對應。 條件 - 不會對應至 SQL Server 語意。 |
動態 SQL | 不會對應。 |
別名 | 會對應。 |
暱稱 | 部分對應。 基礎物件需要手動處理 |
同義字 | 會對應。 |
DB2 中的標準函式 | SQL Server 中提供對等函式時,SSMA 會對應 DB2 標準函式: |
授權 | 不會對應。 |
述詞 | 會對應。 |
SELECT INTO 陳述式 | 不會對應。 |
VALUES INTO 陳述式 | 不會對應。 |
交易控制 | 不會對應。 |
轉換 DB2 資料庫物件
轉換 DB2 資料庫物件時,必須先選取要轉換的物件,再讓 SSMA 執行轉換。 若要在轉換期間檢視輸出訊息,請在 [檢視] 功能表上點選 [輸出]。
將 DB2 物件轉換成 SQL Server 語法
在 [DB2 Metadata Explorer] 中,展開 DB2 伺服器,然後展開 [結構描述]。
選取要轉換的物件:
若要轉換所有結構描述,請勾選 [結構描述] 旁的核取方塊。
若要轉換或省略某個資料庫,請勾選結構描述名稱旁邊的核取方塊。
若要轉換或省略某個物件類別,請展開結構描述,然後勾選或清除類別旁的核取方塊。
若要轉換或省略個別物件,請展開類別資料夾,然後勾選或清除物件旁邊的核取方塊。
若要轉換所有選取的物件,請以滑鼠右鍵按一下 [結構描述],然後選取 [轉換結構描述]。
您也能以滑鼠右鍵按一下物件或其父資料夾,然後選取 [轉換結構描述],以轉換個別物件或物件類別。
檢視轉換問題
某些 DB2 物件可能無法轉換。 您可以檢視摘要轉換報告來判斷轉換成功率。
檢視摘要報告
在 DB2 Metadata Explorer 中,選取 [結構描述]。
在右側窗格中,選取 [報告] 索引標籤。
此報告會顯示已評估或已轉換之所有資料庫物件的摘要評估報告。 您也可以檢視個別物件的摘要報告:
若要檢視個別結構描述的報告,請在 DB2 Metadata Explorer 中選取結構描述。
若要檢視個別物件的報告,請在 DB2 Metadata Explorer 中選取物件。 發生轉換問題的物件會帶有紅色錯誤圖示。
針對轉換失敗的物件,您可以檢視導致轉換失敗的語法。
檢視個別轉換問題
在 DB2 Metadata Explorer 中,展開 [結構描述]。
展開顯示紅色錯誤圖示的結構描述。
在結構描述下,展開具有紅色錯誤圖示的資料夾。
選取具有紅色錯誤圖示的物件。
在右側窗格中,按一下 [報告] 索引標籤。
[報告] 索引標籤頂端有一個下拉式清單。 如果清單顯示 [統計資料],請將選取項目變更為 [來源]。
SSMA 會顯示原始程式碼,程式碼正上方有數個按鈕。
按一下 [下一個問題] 按鈕。 這是紅色錯誤圖示,具有指向右側的箭頭。
SSMA 會反白顯示在目前物件中找到的第一個有問題的原始程式碼。
對於無法轉換的每個項目,您必須決定要對該物件執行的動作:
您可以在 [SQL] 索引標籤上修改程序的原始程式碼。
您可以修改 DB2 資料庫中的物件,以移除或修改有問題的程式碼。 若要將更新的程式碼載入 SSMA,您必須更新中繼資料。 如需詳細資訊,請參閱連線到 DB2 Database (DB2ToSQL)。
您可以將物件排除在移轉作業之外。 在 SQL Server Metadata Explorer 和 DB2 Metadata Explorer 中,清除項目旁的核取方塊,再將物件載入 SQL Server 並從 DB2 移轉資料。
後續步驟
移轉程序的下一個步驟是將已轉換的物件載入 SQL Server。