我正在使用 SSMA 將我的 Access 后端遷移到 SQL Server。在映射中進行更改時,SSMA 會引發錯誤。我在 Access 中有 Date/Time 欄位,它需要是 SQL 中的 DateTime 才能作業。現在,默認情況下,SSMA 將日期映射設定為 datetime2,在運行時成功遷移到 SQL,但在 Access 中顯示為短文本欄位。當我嘗試手動將 SSMA 中的映射從 datetime2 更新到 DateTime 并開始遷移時,我收到以下錯誤(請通過以下鏈接查找錯誤的詳細資訊):
SqlDateTime 溢位。必須介于 1753 年 1 月 1 日上午 12:00:00 和 9999 年 12 月 31 日晚上 11:59:59 之間。
Access中的表:
[AutoNo][CNR][Datefilecreated][Datemodified][DateChangeTeamID]
2227 2620 11/04/2018 11/05/2022 11/05/2022
3078 3513 27/11/2018 11/05/2022 11/05/2022
3673 4113 24/12/2020 14/12/2021
3395 3835 25/11/2019 07/12/2021 12/10/2021
3238 3663 27/05/2019 07/12/2021
3186 3610 08/04/2019 07/04/2022
3331 3771 23/09/2019 07/12/2021
3128 3565 26/02/2019 07/12/2021 12/10/2021
2047 1993 28/04/2015 24/01/2022 28/07/2018
2767 3160 06/09/2017 07/12/2021 28/07/2018
2356 2749 25/04/2016 07/12/2021 12/10/2021
1318 1264 14/11/2011 26/01/2022 28/07/2018
2698 3091 03/07/2017 07/12/2021 12/10/2021
2551 2944 09/01/2017 07/12/2021 12/10/2021
使用 datetime2 從 Access 遷移時 SQL 中的表
Auto number CNR Date file created Date modified DateChangeTeamID
4954 4954 2022-05-30 00:00:00.000 NULL 2018-07-28 00:00:00.000
3927 42281 2005-02-01 00:00:00.000 2017-01-11 00:00:00.000 2018-07-28 00:00:00.000
3928 42287 2002-04-01 00:00:00.000 NULL 2018-07-28 00:00:00.000
3929 42288 2005-05-05 00:00:00.000 2017-01-11 00:00:00.000 2018-07-28 00:00:00.000
3930 42289 2005-05-04 00:00:00.000 NULL 2018-07-28 00:00:00.000
3931 42290 2005-05-05 00:00:00.000 NULL 2018-07-28 00:00:00.000
3932 42291 2004-03-29 00:00:00.000 NULL 2018-07-28 00:00:00.000
3933 42292 2002-04-01 00:00:00.000 NULL 2018-07-28 00:00:00.000
將目標映射遷移為 DateTime 而不是 datetime2 時的 SSMA 錯誤詳細資訊
uj5u.com熱心網友回復:
我會考慮在訪問(客戶端)上運行查詢,并在該列中查找一些錯誤的日期。
空日期應該可以正常作業。訪問列實際上不是日期時間列是可能的嗎?
是的,與 datetime2 相比,在 SQL Server 中設定使用 datetime 是更可取的。
但是,您可以在訪問中使用 datetime2 作為鏈接表,它會正確地將其視為日期時間(而不是文本)。但要使其正常作業,您必須使用較新的 ODBC 驅動程式安裝 使用 鏈接您的表。(本機 11 或更高版本)。這種選擇的第二個后果是,任何和所有計劃將 Access 與這些鏈接表一起使用的作業站也必須安裝相同的本機 11(或 17 或 18)。因此,您必須使用較新的驅動程式重新鏈接您的表,并且您還必須確保每個作業站還下載并在每個作業站上安裝了較新的 ODBC 驅動程式。
因此,上面將允許訪問正確地查看/使用 datetime2 列作為訪問和 VBA 代碼中的日期時間。
但是,作為一般規則,聽起來您的原始資料中有一些錯誤的日期。我會創建一個查詢,查找小于 1960 年或類似日期的日期,并查看是否回傳任何記錄。如果這些較舊的日期無效,則使用查詢更新為空值。
在我看來,該資料中存在一些錯誤的日期值。您也可以遷移,然后在服務器端將 datetime2 更改回 datetime,但是有很多表和很多日期列,這可能是相當多的作業。
由于這看起來只有一個表,因此如前所述,請嘗試在 Access 中對該表進行查詢,以查找比您的資料應該具有的日期更早的日期。清除這些,然后再次遷移。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/492712.html
下一篇:T-SQL中的XML決議
