不相容的 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。 |