2011-05-16 71 views
0

我正在尋找關於如何將SQL數據庫中的表的結構複製爲同一數據庫中的另一個表的想法。在MS Access中創建SQLserver表的唯一副本

我有一個SQL數據庫(統計),其中包含一些大型交易表(即高於2Gb),這些錶鏈接到我的Access數據庫。我需要定期存檔當前數據,並在SQL數據庫中創建一個具有相同結構的新表。

我可以從CurrentDb通過導航到「TBL課會話詳細信息」鏈接到底層SQL「」 dbo.tbl課會話詳細信息」表和連接字符串到SQL數據庫。

我已經看過用DoCmd.TransferDatabase使用下面的代碼來實現結果: -

dbsA As Database 

sTableName = "tbl LESSON SESSION DETAILS" 
dbType = "ODBC Database" 
sDatabasePath = CurrentDb.TableDefs(sTableName).Connect 
Set dbsA = DBEngine(0).OpenDatabase("MyDB", dbDriverCompleteRequired, _ 
      False, sDatabasePath) 
sTableName = dbsA.TableDefs(sTableName).Name 
sTableNameNew = sTableName & "_New" 

DoCmd.TransferDatabase acExport, dbType, _ 
     strTAbleName, acTable, dbsA, sTableNameNew, structureonly:=True 

然而,當我運行此代碼失敗爲「acExport」期待sTableName是在CurrentDB和sTableNameNew是在DBSA數據庫中更改。 CurrentDb可能是一種選擇,但我還沒有找到任何想法如何做到這一點。

回答

2

寫在數據庫端的存儲過程:

SELECT TOP 1 * INTO [tbl_LESSON_SESSION_DETAILS_NEW] FROM [tbl_LESSON_SESSION_DETAILS]; 
DELETE FROM [tbl_LESSON_SESSION_DETAILS_NEW]; 

然後,只需從你的代碼執行存儲過程。你可以從代碼中替換表名/ w變量,你可以任意指定新表的名稱。

http://msdn.microsoft.com/en-us/library/aa258259(v=sql.80).aspx

http://support.microsoft.com/kb/306574

你可能要考慮讓你的指針原始表,只是它歸檔到一個新的「備份」的版本,然後擦拭乾淨:

SELECT * INTO [tbl_LESSON_SESSION_DETAILS_BAK_05152011] FROM [tbl_LESSION_SESSION_DETAILS]; 
DELETE [FROM tbl_LESSION_SESSION_DETAILS]; 

可能想加強一點,使真的確定你仍然有新表中的數據,然後再刪除它從原來的...

+0

上面的例子是VB.NET,這裏是VBA:http://support.microsoft.com/kb/185125 – mikey 2011-05-16 12:55:14

0

你有一些錯誤順序的參數。你已經混合了數據庫名稱和源參數。試試這個:

DoCmd.TransferDatabase acExport, dbType, strTAbleName, acTable, dbsA, sTableNameNew, structureonly:=True