轉換 Db2 架構 (Db2ToSQL)
連線到 Db2 和 SQL Server 並設定項目和資料對應選項之後,您可以將 Db2 資料庫物件轉換成 SQL Server 資料庫物件。
轉換程序
轉換資料庫物件會從 Db2 取得物件定義、將它們轉換成類似的 SQL Server 對象,然後將此資訊載入 SQL Server 移轉小幫手 (SSMA) 元數據。 此程序不會將資訊載入 SQL Server 的執行個體。 然後,您可以使用 SQL Server Metadata Explorer 來檢視物件及其屬性。
在轉換期間,SSMA 會將輸出訊息列印至輸出窗格,並將錯誤訊息列印至 [錯誤清單] 窗格。 使用輸出和錯誤資訊來判斷您是否必須修改 Db2 資料庫或轉換程式,以取得所需的轉換結果。
設定轉換選項
轉換物件前,請先檢閱 [專案設定] 對話方塊中的專案轉換選項。 使用此對話框來設定 SSMA 如何轉換函式和全域變數。 如需詳細資訊,請參閱專案設定 (轉換)。
轉換結果
下表顯示哪些 Db2 物件已轉換,以及產生的 SQL Server 物件:
Db2 物件 | 產生的 SQL Server 物件 |
---|---|
資料類型 | SSMA 會對應下列類型以外的每個類型:CLOB :不支援使用此類型的一些原生函式(例如 CLOB_EMPTY() )BLOB :不支援使用此類型的某些原生函式 (例如, BLOB_EMPTY() )DBLOB :不支援使用此類型的某些原生函式 (例如, DBLOB_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 下列例外狀況:數據表參考子句 - only-table-reference 未對應至 SQL Server 語意 Period 子句 - 未對應。 |
MERGE 陳述式 |
SSMA 會對應 MERGE 下列例外狀況:Each 子句的單一與多個發生次數 - 對應至 SQL Server 語意,以取得每個子句的有限出現次數 SIGNAL 子句 - 不會對應至 SQL Server 語意混合 UPDATE 和 DELETE 子句 - 不會對應至 SQL Server 語意Period 子句 - 不會對應至 SQL Server 語意 |
DELETE 陳述式 |
SSMA 會對應 DELETE 下列例外狀況:數據表參考子句 - 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 會對應具有下列例外狀況的數據指標:ALLOCATE CURSOR 語句 - 不會對應至 SQL Server 語意ASSOCIATE LOCATORS 語句 - 不會對應至 SQL Server 語意DECLARE CURSOR 語句 - Returnability 子句未對應至 SQL Server 語意FETCH statement - 部分對應。 僅支援作為目標的變數。 SQLDA DESCRIPTOR 未對應至 SQL Server 語意 |
變數 | 映射。 |
例外狀況、處理程序和條件 | SSMA 會對應 下列例外狀況的例外狀況處理 :EXIT handlers - Mapped。UNDO handlers - Mapped。CONTINUE handlers - 未對應。條件 - 不會對應至 SQL Server 語意。 |
動態 SQL | 不會對應。 |
別名 | 映射。 |
暱稱 | 部分對應。 基礎物件需要手動處理 |
同義字 | 映射。 |
Db2 中的標準函式 | 當 SQL Server 中提供對等函式時,SSMA 會對應 Db2 標準函式: |
授權 | 不會對應。 |
述詞 | 映射。 |
SELECT INTO 陳述式 |
不會對應。 |
VALUES INTO 陳述式 |
不會對應。 |
交易控制 | 不會對應。 |
轉換 Db2 資料庫物件
若要轉換 Db2 資料庫物件,請先選取要轉換的物件,然後讓 SSMA 執行轉換。 若要在轉換期間檢視輸出訊息,請流覽至 [檢視>輸出]。
將 Db2 物件轉換成 SQL Server 語法
在 [Db2 元數據總管] 中,展開 [Db2 伺服器],然後展開 [ 架構]。
選取要轉換的物件:
若要轉換所有結構描述,請勾選 [結構描述] 旁的核取方塊。
若要轉換或省略某個資料庫,請勾選結構描述名稱旁邊的核取方塊。
若要轉換或省略某個物件類別,請展開結構描述,然後勾選或清除類別旁的核取方塊。
若要轉換或省略個別物件,請展開類別資料夾,然後勾選或清除物件旁邊的核取方塊。
若要轉換所有選取的物件,請以滑鼠右鍵按一下 [結構描述],然後選取 [轉換結構描述]。
您也能以滑鼠右鍵按一下物件或其父資料夾,然後選取 [轉換結構描述],以轉換個別物件或物件類別。
檢視轉換問題
某些 Db2 物件可能無法轉換。 您可以檢視摘要轉換報告來判斷轉換成功率。
檢視摘要報告
在 [Db2 元數據總管] 中,選取 [架構]。
在右側窗格中,選取 [報告] 索引標籤。
此報表會顯示已評估或轉換之所有資料庫物件的摘要評估報告。 您也可以檢視個別物件的摘要報告:
若要檢視個別架構的報表,請在 Db2 元數據總管中選取架構。
若要檢視個別物件的報表,請選取 Db2 元數據總管中的物件。 發生轉換問題的物件會帶有紅色錯誤圖示。
針對轉換失敗的物件,您可以檢視導致轉換失敗的語法。
檢視個別轉換問題
在 [Db2 元數據總管] 中,展開 [架構]。
展開顯示紅色錯誤圖示的結構描述。
在結構描述下,展開具有紅色錯誤圖示的資料夾。
選取具有紅色錯誤圖示的物件。
在右側窗格中,選取 [報告] 索引標籤。
在 [報表] 索引標籤頂端,是下拉式清單。 如果清單顯示 [統計資料],請將選取項目變更為 [來源]。
SSMA 會顯示原始程式碼,程式碼正上方有數個按鈕。
選取 [ 下一個問題] 按鈕(具有右指箭號的紅色錯誤圖示)。
SSMA 會反白顯示在目前物件中找到的第一個有問題的原始程式碼。
對於無法轉換的每個專案,您必須決定要使用該物件執行哪些動作:
您可以在 [SQL] 索引標籤上修改程序的原始程式碼。
您可以修改 Db2 資料庫中的物件,以移除或修改有問題的程式代碼。 若要將更新的程式代碼載入 SSMA,您必須更新元數據。 如需詳細資訊,請參閱 連線到 Db2 資料庫。
您可以將物件排除在移轉作業之外。 在 [SQL Server 元數據總管] 和 [Db2 元數據總管] 中,清除專案旁的複選框,再將物件載入 SQL Server 並從 Db2 移轉數據。