2013-04-23 37 views
1

我有一張〜400,000行的表格。我試圖添加一個自動編號字段。當我嘗試使用設計視圖添加字段,我得到的錯誤信息: File sharing lock count exceeded. Increase MaxLocksPerFile registry entry.添加自動編號時'超出系統資源'

我不想做一個永久的註冊表改變,所以我嘗試以下VBA:

Sub addAuto() 

DAO.DBEngine.SetOption dbMaxLocksPerFile, 1000000 
CurrentDb.Execute "ALTER Table large_data add column rowID AUTOINCREMENT", dbFailOnError 

End Sub 

這給了我以下錯誤信息:

Run-time error '3035': System resource exceeded

我應該怎麼做添加的自動編號字段?

+0

你有沒有嘗試在「獨佔」模式下打開數據庫?這可能會繞過數據庫引擎(顯然)試圖執行的任何鎖定。 – 2013-04-23 18:46:01

回答

2

在嘗試添加rowID字段之前,您可以通過丟棄large_data中的行來避免該錯誤。然後你必須重新添加數據。

  1. 複製你的db文件。
  2. 空出large_dataDELETE FROM large_data
  3. 壓縮分貝。
  4. 將自動編號字段添加到表格的設計中。
  5. 鏈接到db副本中的large_table
  6. 運行「附加查詢」將鏈接表中的數據添加到large_table的新版本中。

喜歡的東西...

INSERT INTO large_table (
    fld1, 
    fld2, 
    fld3 
    ) 
SELECT 
    fld1, 
    fld2, 
    fld3 
FROM linked_table; 

除了包含在該查詢的rowID領域的所有字段的名稱。數據庫引擎將處理自動編號值。

+0

我會試試這個。這個表有160個字段(我知道,我知道),所以看起來我必須在VBA循環中通過表的記錄集中的字段構建追加查詢 - 或者有另一種方法嗎? – sigil 2013-04-23 18:54:40

+0

爲什麼你不能使用查詢設計器?它不允許你選擇160個字段嗎? – HansUp 2013-04-23 18:56:23