分享方式:


不相容的 Access 功能 (AccessToSQL)

並非所有 Access 資料庫功能皆與 SQL Server 相容。 例如,SQL Server 和 Access 有不同的保留關鍵字集和。 這類問題可能會使移轉至 SQL Server 失敗。 使用下表來了解可能的移轉問題及解決方式。

可能會影響移轉的資料庫設定或功能

Access 資料庫設定或功能 移轉問題
Access 資料表沒有唯一索引。 若移轉至 SQL Server 的資料表沒有唯一索引,移轉後便無法修改資料表。 這可能會導致應用程式相容性問題。

當您轉換 Access 資料庫物件時,[輸出] 視窗會列出所有不具唯一索引的 Access 資料表。

您可設定 Access 在轉換期間新增 SQL Server 資料表的主索引鍵。 如需詳細資訊,請參閱專案設定 (轉換)
Access 資料表具有複寫資料行。 若包含複寫系統資料行的 Access 資料表已移轉至 SQL Server,移轉後便無法使用 Jet 複寫功能。

移轉後,請考慮使用 SQL Server 複寫來維護資料庫的同步複本。
具有唯一索引的 Access 資料表包含多個 Null 值。 在 8.13 之前,唯一索引具有多個 Null 值的 Access 資料表無法傳輸至 SQL Server,因為 SQL Server 中的唯一索引不允許多個 Null。 這些資料表的移轉將會失敗。

SSMA 會在評量報告中標幟此問題。 若要建立評估報告,請參閱評定 Access 資料庫物件的轉換

若此問題存在,則須確定主索引鍵沒有重複的 Null 值。 或者,您必須移除包含多個 Null 值的主索引鍵或唯一索引。
Access 資料表包含超出 SQL Server 範圍的日期值。 SQL Server 日期時間類型只接受 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期。 Access 接受 100 年 1 月 1 日到 9999 年 12 月 31 日範圍內的日期。

SSMA 會在評量報告中標幟此問題。 若要建立評估報告,請參閱評定 Access 資料庫物件的轉換

您可設定 SSMA 如何解析超出 SQL Server 範圍的日期。 如需詳細資訊,請參閱專案設定 (移轉)
Access 中的索引長度超過 900 個位元組。 SQL Server 索引的索引鍵資料行總計大小限制為 900 位元組。 若 Access 資料表使用的索引較大,SSMA 將會顯示警告。

若繼續進行資料移轉,則移轉可能會失敗。
Access 物件名稱為 SQL Server 關鍵字,或包含特殊字元。 Access 和 SQL Server 的保留關鍵字及特殊字元集合不同。 SQL Server 接受使用 SQL Server 關鍵字命名的物件,或包含特殊字元 (使用括弧或引號識別碼,例如 "select" 或 [select].p) 的物件。 如需詳細資訊,請參閱《SQL Server 線上叢書》的「分隔識別碼 (資料庫引擎)」。

注意:若要使用引號分隔識別碼,SET QUOTED_IDENTIFIER 必須為 ON。

例如,即使結構描述FOR 為保留關鍵字,CREATE TABLE [schema](c1 [FOR]) 仍為有效的陳述式。 此外,即使資料表和資料行名稱包含特殊字元 #42;&CREATE TABLE [xxx*yyy](c1 x&y) 仍為有效陳述式。

參考這些物件的所有查詢也必須使用包含括弧或引號的名稱。 例如,查詢 SELECT * FROM schema 將會失敗。 正確的查詢為:SELECT * FROM [schema]

當您轉換 Access 資料庫物件時,[輸出] 窗格會列出使用關鍵字或特殊字元的所有 Access 資料表。 您可修改 Access 中的資料表,移除資料庫並再次新增;您也可修改參考這些物件的查詢,讓查詢使用括弧或引號來分隔識別碼。 若未修改查詢,Access 應用程式可能會傳回錯誤或發生其他問題。
欄位大小視主索引鍵/外部索引鍵的關聯性而不同。 針對資料類型或大小不同、且有外部索引鍵條件約束的資料行,SQL Server 不支援連結這類資料行的 Jet 功能。

當您轉換 Access 資料庫物件時,[輸出] 視窗將列出不會轉換到 SQL Server 的所有外部索引鍵/外部索引鍵條件約束。 您可變更 Access 資料行的資料類型和大小,以達到相符,接著移除 Access 資料庫並重新新增。 或者您也可移轉資料,但這些條件約束不會在 SQL Server 中建立。
Access 關聯性中參考的資料表沒有主索引鍵,也沒有唯一索引。 當參考的資料表沒有主索引鍵或唯一索引時,Access 接受這些資料表之間的關聯性。 然而,SQL Server 不支援此功能。

當您轉換 Access 資料庫物件時,[輸出] 視窗會列出所有具有關聯性、但沒有主索引鍵或唯一索引的資料表。 您可變更資料表,新增主索引鍵或唯一索引,接著移除 Access 資料庫並重新新增。 您也可移轉資料,但資料表間的關聯性將會解除。
Access 資料表具有超連結資料行。 SQL Server 不支援超連結資料行。 但系統會將這類資料行視為 Access 備忘資料行。 依預設,這些資料行在 SQL Server 中會轉換為 nvarchar(max) 資料行。 您可自訂對應。 如需詳細資訊,請參閱對應來源和目標資料類型
預設或驗證規則運算式包含無法轉換為 SQL Server 或SQL Azure 的 Access 函式。 Access 預設運算式或驗證規則可能包含未對應至 SQL Server 或 SQL Azure 的 Access 系統函式或使用者定義函式。 若使用未對應至 SQL Server 或 SQL Azure 的函式,便無法將預設運算式或驗證規則載入 SQL Server 或SQL Azure。

另請參閱

準備 Access 資料庫進行移轉
將 Access 資料庫移轉到 SQL Server