2010-11-19 42 views
5

我正在將我的應用程序從MS-Access FE和BE升級到MS-Access FE和SQL Server BE。我使用SSMA Access「upsizing」工具將Access中的所有錶轉換爲SQL,然後使用ODBC鏈接Access FE中的SQL表。MS-Access將SQL服務器的datetime2字段視爲TEXT

在我的訪問數據庫中,某些表具有在SQL Server中的datetime(0)列中轉換的DateTime列。在Access中鏈接這些表後,Access將這些列視爲文本列,即使它們是SQL服務器BE中的datetime2(0)列。

這會導致一些問題,因爲使用日期格式的查詢不能使用文本格式。有無論如何鏈接表,以便通過Access將datetime(0)字段視爲日期時間值?

+0

安裝SQL Server Native Client的11.0請問這是否意味着DATETIME2(0)?日期時間應與MS Access一起使用。我需要爲datetime2做些更多的事情。 – Fionnuala 2010-11-19 20:01:51

+0

@Remou:是的,我的意思是datetime2(0),我會糾正這個問題。我必須承認我不知道datetime和datetime2之間的區別。您需要使用Access來做什麼樣的混亂? – 2010-11-19 20:12:38

+0

我的意思是我需要了解更多信息。根據http://technet.microsoft.com/en-us/library/cc179181.aspx,對新數據類型datetime2的支持有限。如果可以的話,我會用datatime去。 – Fionnuala 2010-11-19 20:18:32

回答

7

根據TechNet,對新數據類型datetime2的支持有限。如果可以的話,我會用datetime去。

-1

通常需要在升遷嚮導之前驗證日期。用戶傾向於輸入被Access日期字段接受但在SQL Server中導致錯誤的「愚蠢」日期。嘗試使用「BETWEEN 1/1/1930 and 1/1/2020」之類的合理範圍之外的日期查詢您的表格,並在重新啓動升遷嚮導之前更正這些日期。
我還發現,我沒有使用過,但它看起來好產品:http://www.upsizing.co.uk/features_translate.aspx

+0

BETWEEEN語句中的日期限制對於SQL Server不正確。參考文獻說17/17/17是起點。此外,SQL Server 2008添加了一種新的日期字段,可以回到第1年。 – 2010-11-21 22:07:08

+0

@David:當然不是(這對於SQL Server來說會很難過)。我建議檢查日期範圍是否合理(針對個人數據),以消除愚蠢的日期。 – 2010-11-22 07:03:54

+0

-1這不回答問題。 – Stefan 2012-10-14 15:54:41

1

的SSMA爲Access將任何日期/時間字段轉換是無效的SQL Server中的文本值。您應該運行SSMA來嘗試轉換,它會告訴您這些問題,然後您可以在實際轉換之前清理數據。

您將不得不跳過SSMA嚮導,因爲它會在不預覽結果的情況下進行升遷。

1

我遇到了同樣的問題,這是什麼導致我到這個頁面,但我想出瞭解決方案: 問題:從訪問sql server鏈接表顯示datetime2列作爲文本,它有許多含義像日期比較,排序等。

解決方案:轉換DATETIME2 SQL Server中的日期時間和訪問將顯示列日期字段馬上

注意,由於表已經有數據,你不能改變的數據類型,我打算添加新列日期時間類型,複製數據,刪除原始列,重命名

如何檢查準確性:我創建了一個表中有3列sql服務器,日期時間,日期時間2,日期然後我鏈接到它從訪問,只有日期時間其他2顯示爲文本

3

類似問題:RESOLVED

我有一個字段爲DATETIME2數據類型的SQL服務器,並通過ODBC連接到它作爲Win7上MS Access中的鏈接表。

當使用相同的數據庫從兩個不同的工作站連接,一個具有「日期/時間」正確的數據類型和其他具有「短文本」數據類型

解決方法:原來,使用兩個不同的DSN文件建立鏈接表,其中一個列出了「DRIVER = SQL Server」,另一個列出了「DRIVER = SQL Server Native Client 11.0」。 爲了通過ODBC鏈接獲得「日期/時間」數據類型,我需要使用Client 11.0。

要查看已安裝的驅動程序:

From the start menu search for "ODBC" 
Select "Data Sources (ODBC)". 
Click on the "Drivers" tab 

您將看到您所安裝的驅動程序。我有三個。

SQL Server      6.01.7601.17514 
SQL Server Native Client 10.0 2007.100.5500.00 
SQL Server Native Client 11.0 2011.110.6020.00 

我相信SQL Server版本6由Win7安裝並通過Windows Update進行更新。如果這是你所擁有的,那麼只能通過鏈接表將TEXT從DATETIME2 SQL數據類型中取出。

本地客戶端分別由SQL Server Management Studio 2008和2012安裝。

您可以下載並從 https://www.microsoft.com/en-us/download/details.aspx?id=36434

+0

感謝您爲舊問題帶來新信息,歡迎來到Stack Overflow! – 2016-07-21 19:54:05

+0

可以修改SSMA以升遷到較早的日期時間。如果不打算使用並採用較新的原生11驅動程序,我建議您這樣做。較新的驅動程序是首選,但要求每個工作站都安裝了較新的驅動程序。出於這個原因,我目前使用默認安裝在所有Windows機器上的舊SQL驅動程序。 – 2016-07-22 00:45:55