2009-11-23 87 views
3

我正在使用Web前端將現有Access數據庫遷移到SQL數據庫。我已經使用SQL Server遷移工具成功將數據庫複製到SQL,並且正在開發應用程序。由於我不想進入這裏,我們不能只將Access前端鏈接到SQL數據庫,並使用SQL數據庫作爲單個數據源,因此Access數據庫仍在使用中並且數據正在更新。將數據從Access複製到SQL

我在找什麼是一種簡單的方法來使用Access數據庫中的新數據更新SQL數據庫中的數據。表結構等是相同的,所以我需要做的就是複製數據,是否有一個腳本或簡單的方法來做到這一點?我不想每次需要執行更新時都必須運行遷移向導。

回答

6

我也建議使用鏈接表到SQL服務器,但它的聲音超出你的控制。我希望這只是暫時的,因此用戶可以在開發過程中繼續使用Access DB,而不是因爲某些管理員認爲這種手動集成系統是一個好主意「未來」。

有一個更好的遷移到SQL服務器的工具,名爲Sql Server Migration Assistant(SSMA),它比內置在Access中的「升遷嚮導」要好得多。您可以編寫腳本來使任務可重複。

另一種方法是在Access DB存在並鏈接到該數據庫的任何地方設置SQL Server的Express版本,並將其用作臨時數據庫。您可以將SSEE版本設置爲replication訂戶,並隨時同步其與開發/生產數據庫之間的更改。對於用戶來說,它將是透明的,您可以告訴管理員Access DB完全獨立於開發/生產數據庫。或者,如果您不會對複製有所瞭解,那麼只需複製數據庫,但我認爲複製可以使其變得更加簡單。

0

它可能將SQL Server表連接到Access,其中您的Access表單可以正常輸入數據,但實際上它將進入SQL Server。

+0

是的,這是我原來的計劃,不幸的是這是不可能的(政治上不是技術上的)。 Access數據庫需要保持獨立於SQL之一 – 2009-11-23 11:19:05

+0

它有可能將SQL Server中的數據傳輸安排爲定期發生,但實際上並不理想。 – 2009-11-23 11:42:33

1

您可以通過VBA運行訪問查詢,以添加新記錄並更新SQL Server中的以前記錄。連接字符串是相同的用於連接SQL表,因爲我在這個粗略的例子表明,這樣你就可以測試連接到相關的表,以獲得合適的字符串:

Dim db As Database 
Set db = CurrentDb 

strConnect = db.TableDefs("dbo_test").Connect 
strSQL = "UPDATE [" & strConnect & "].[test] As s " _ 
& "INNER JOIN TestAccess As a " _ 
& "ON s.ID=a.ID " _ 
& "SET s.Descr=a.Descr WHERE s.Descr<>a.Descr" 
db.Execute strSQL, dbFailOnError 
Debug.Print db.RecordsAffected 

strSQL = "INSERT INTO [" & strConnect & "].[test] (ID, Descr) " _ 
& "SELECT a.ID, a.Descr FROM TestAccess As a " _ 
& "LEFT JOIN [" & strConnect & "].[test] s " _ 
& "ON s.ID=a.ID " _ 
& "WHERE s.ID Is Null" 
db.Execute strSQL, dbFailOnError 
Debug.Print db.RecordsAffected