"Error 3035 : System Resource exeeded" while moving to a better hardware


I have a database with a big table (78 columns, 930 000 records) that I update using several query linking with other smaller tables.

I need to transfer this from one machine to another. While it is working well on the current machine, I have this Error 3035 : System resource exceeded on the new one, while it is bigger and newer than the old one :

Old machine :
Core 2 Duo E8400 @ 3Ghz
4 Gb RAM
300 Gb SATA RAID Volume (4 * 150 Gb in Raid 1+0)
Windows Vista Enterprise SP2 / 32 bits
Office 2007

New machine :
Xeon E5645 @ 2.4Ghz
24 Gb RAM
1.2 Tb SAS RAID Volume (4 * 600Gb in Raid 1+0)
Windows Server 2008 R2 SP1 / 64 bits
Office 2010

So I would expect the database to run even faster on the new one, but it just fails...

I've googled the error, and tried to increase the MaxLocksPerFile to 1 500 000 in the registry as suggested, with no success. No other type of answer from google

Anyone with another idea that I could check ?

Thanks !

Post your answer or comment

comments powered by Disqus
Hi all,

Any idea why the following would cause error 3035, System Resource Exceeded? It's not joining more than 16 tables, and doesn't have any kind of where clause, so the KB article on this error doesn't apply. The db isn't more than 2GB, which is where this call has sometimes failed before. I previously ran this in Access 2003, and it was fine.

	dbInput.Execute " ALTER TABLE " & inputTableName & _
                  " ADD COLUMN ROW_ID counter(1,1);", dbFailOnError

I am currently testng the following - This select works fine. (This is from the query objects of Access)

	SELECT patent_akz AS q_akz, em.status AS q_status, em.decision_number AS q_decision_number, CVDATE(em.decision_date) AS
q_decision_date, em.work_around_ability AS q_work_around_ability, em.attractive AS q_attractive, em.used_by_third_party AS
q_used_by_third_party, em.total_eval AS q_total_eval, em.can_use AS q_can_use, em.eval_reason AS q_eval_reason,
em.use_inhouse AS q_use_inhouse, em.product AS q_product, em.decider AS q_decider, em.bkz_id AS q_bkz_id, em.bkz_questionaire
AS q_bkz_questionnaire, em.hierarchie_level_2 AS q_hierarchie_level_2, em.hierarchie_level_3 AS q_hierarchie_level_3,
em.hierarchie_level_4 AS q_hierarchie_level_4, em.hierarchie_level_5 AS q_hierarchie_level_5, em.piv AS q_piv, em.piv_name AS
q_piv_name, pik_coordinator AS q_pik_coordinator, pik_name AS q_pik_name, fal_pik AS q_fal_pik, fal_name AS q_fal_name, l_akz
AS q_l_akz, derwent_title AS q_derwent_title, derwent_abstract AS q_derwent_abstract, CVDATE(date_of_lapse) AS
q_date_of_lapse, countries AS q_countries, only_siemens_in_charge AS q_only_siemens_in_charge, em.type AS q_type,
em.em_akten_id AS q_em_akten_id, connect.srf_akten_id AS q_srf_akten_id
FROM [SELECT IIf(IsNull(connect.srf_akz), em.akz, connect.srf_akz) as patent_akz, em.status, em.decision_number,
em.decision_date, em.work_around_ability, em.attractive, em.used_by_third_party, em.total_eval, em.can_use, em.eval_reason,
em.use_inhouse, em.product, em.decider, em.bkz_id, em.bkz_questionaire, em.hierarchie_level_2, em.hierarchie_level_3,
em.hierarchie_level_4, em.hierarchie_level_5, em.piv, em.piv_name, '' as pik_coordinator, '' as pik_name, '' as fal_pik, ''
as fal_name, '' as l_akz, '' as derwent_title, '' as derwent_abstract, null as date_of_lapse, '' as countries, '0' as
only_siemens_in_charge, em.type, em.em_akten_id, connect.srf_akten_id
FROM (em
LEFT JOIN connect
ON em.em_akten_id = connect.em_akten_id)
UNION select srf.akz as patent_akz, srf.status, srf.decision_number, srf.decision_date, srf.work_around_ability,
srf.attractive, srf.used_by_third_party, srf.total_eval, srf.can_use, srf.eval_reason, srf.use_inhouse, srf.product,
srf.decider, srf.bkz_id, srf.bkz_questionaire, srf.hierarchie_level_2, srf.hierarchie_level_3, srf.hierarchie_level_4,
srf.hierarchie_level_5, srf.piv, srf.piv_name, srf.pik_coordinator, srf.pik_name, srf.fal_pik, srf.fal_name, srf.l_akz,
srf.derwent_title, srf.derwent_abstract, srf.date_of_lapse, srf.countries, srf.only_siemens_in_charge, srf.type, null,
FROM srf]. AS [%$##@_Alias];

Now I need to add this result to a linked table which is empty. The back end is SQL Server.

So to the above I add

	INSERT INTO tbl_questionnaire

This give me the error message. I have tried it with DAO in code as well but I still get an error.

Any thoughts why?

I have tried this

	Application.DBEngine.SetOption dbMaxLocksPerFile, 1000000

I have a form right now, which is connected to a database table. How can I make it move to a specific record, for example, record #1?


How do I set up an expression in a field saying I want to move to a different field that is not the next field? For example, my form has combo box "Reason Code" which gives a value in "Reason Description". How do I skip over "Reason Description" and go directly to the next cell I need to enter data in?

Can anybody tell me how you automatically move to a new empty record when you open a Form? Till now, I always had the last record displayed.
Thanx for your help


Hello, could someone please offer some suggestions as to how I can fix a problem I have with Access 2010?

I have written some code to pull data from tables on various web pages. The code iterates through several thousand pages and pulls data from each one. Everything works fine when I run this on Access 2010 under Windows 7, but on Windows XP (on a more powerful machine) I get an error saying "System Resource Exceeded".

There are no complex queries involved and no memory leakage that I can see.

I've tried installing the patch from http://support.microsoft.com/kb/2760394 but that doesn't seem to work.

Does anyone have any ideas about how I can fix this? Grateful for any suggestions.


Hi Every One,

i have a data base with 3.20MB ... with 6 tables and 4 querries i think! it is not so big! the recordes were 900 or less!
i have made it for our Library Department in our Center. BUT NOW, they brought me back the laptop, which had a database on it, and telling me that the laptop have been attact by a virus, and the data base does not work any more...and they do not have any backups!!

i'm out of my mind! i do not know what to do! the laptop must be formated, thats for sure...but i just copied the data base *.mdb and tried to run it on my PC then i get the error message: "system resources exceeded" and i just have to click on ok, The End!

what should i do? i just need one table in the data base, i tried to emport it from a new data base but the same message comes!

please please help me! i have made a backup 3 monthes ago, the database was only 1.8MB. they told me, that they have entert about 100 new enteries...it seems to me very strage! how could 100 enteries make the database size from 1.8 to 3.2MB! is it possible that a virus couse this?? i tried also to scan te data, but there is no viruses to be recognized!

when do they learn to seperate the work computer from the entertainment one!?

p.s.: i tried to open the file on 2 other pc s with msaccess 2003 and 2007...every time the same message appeares.... i have cpu 2.8Ghz, 512 of RAM on my Dell computer

I have just created a new query in my db and it runs fine, also the query attached to this one works; however, when I get to the third query in this string I get the error message "system resource exceeded" and the query proceeds to open in SQL view. I can make changes to the query, but I don't know what to change mostly because I am not sure how much of this query I have to change for it to open properly. Can someone explain this message to me and maybe give some pointers?

Below is a program I created that is supposed to create a Group Email List for a single item to many email address.

It runs without error, except that it does not move to the next record to get the email.

Private Sub Egroup_Click()
Dim Egrp, Egrp1, Egrp2 As String
Dim Count As Integer
Dim db As DAO.Database
Dim rst As DAO.Recordset
Set db = CurrentDb
Set rst = db.OpenRecordset("Email_List")
Count = rst.RecordCount
Debug.Print Count; " Count ="
Egrp1 = Email
Debug.Print Egrp1; " Egrp1"
Do While Count > 1
Egrp2 = Email
Debug.Print Egrp2; " Egrp2"
If Egrp1 Egrp2 Then
Egrp1 = Egrp & ";" & Egrp1
Debug.Print Egrp; " Egrp"
Egrp1 = Egrp2
End If
Count = Count - 1
Debug.Print Count; " After If"
Set rst = Nothing
Set db = Nothing
End Sub

Below this is the debug.print output.

7 Count =
cemanuel@voanothla.org Egrp1
cemanuel@voanothla.org Egrp2
6 After If
cemanuel@voanothla.org Egrp2
5 After If
cemanuel@voanothla.org Egrp2
4 After If
cemanuel@voanothla.org Egrp2
3 After If
cemanuel@voanothla.org Egrp2
2 After If
cemanuel@voanothla.org Egrp2
1 After If

I am needing it to go to the next record in order to fill the Egrp field.

Thank you for any help and suggestions on this project.

Robert M

Having a problem with my app. Everything runs fine, and system resources remain high and constant. However, whenever I manually enter any one of my Modules, the system resources on my computer (and those of my clients) drops dramatically. Often times the system resources will drop down to 10%. Eventually I have a fatal error and the user is forced to exit Access and re-enter.

I have double and triple checked all of my variables and recordsets. I have declared them properly and 'emptied' them at the end of the procedure. I have set and loaded my recordsets properly and R.Closed them at the end. I do not have any global variables in the app. What could be wrong?

Help would be appreciated.



I am getting a "system resource exceeded" message when running a macro in a database on one PC but the same database and macro do not generate the message on other PC's.

The PC that is giving the error message is a Win7 64bit PC with i7-2600k CPU, 16gb RAM using Office 2003.

Two other PC's both running Win7 64bit with Office 2003 and less RAM and less powerful CPU run the macro OK without any error message.

Is there some trick to configuring the BIOS or Access for use on a sandybridge motherboard/CPU that I am not aware of? All PC's are clean fresh installs of Windows and Office 2003 with all microsoft updates applied.

If it is not some configuration issue that I am not aware about then I am assuming I have a hardware issue from either the motherboard or RAM or CPU on the PC that yields the error message?

Any feedback most appreciated.



I have a problem. I have a Pass Through query that I have saved (qryPassThrough) and I am using some VBA code to update the SQL statement in the query, like such:

	Dim qdf as QueryDef
set qdf = CurrentDb.Querydefs("qryPassThrough")
qdf.SQL = "Insert SQL here..."

The error occurs on the "qdf.SQL = " line. The error is Error 3035: System Resouces Exceeded.

The error seems to occur only when the SQL portion of the query gets too big. If I start with a blank query, I can use the above code to modify the SQL with no problems. However, once I want to reset the SQL to a different statement, I get the above error message, but only if the SQL that is currently in the query is too long.

Can anyone help??

I am fairly new to VB and have the following problem.

I have a data entry form that allows the user to select multiple objects from a list box, which then show up in a subform. I am doing this by setting the record source for the subform to an sql query generated in the form's code. I want to create new records in a table for each record in the subform.

The problem is this: I am using data from both the form and the subform to populate the table on the Many side of a 1:M relationship. The main form will update the 1 side. I get an error because there is not yet a record on the 1 side of the relationship. I do not know how to get the table to update with data from the main form without moving to a new record or closing the form.

Any help would be greatly appreciated!!

Here is my code so far:

Private Sub cmdOpenInvoiceInfo_Click()

Dim SubformSQL As String
Dim rstInvPieTable As Recordset
Dim rstPiecesSubform As DAO.Recordset

SubformSQL = Forms![AddNewInvoiceForm]![InvoiceSubform].[Form].RecordSource
Debug.Print SubformSQL

Set rstPiecesSubform = CurrentDb.OpenRecordset(SubformSQL)
Debug.Print rstPiecesSubform.RecordCount

Set rstInvPieTable = New Recordset
rstInvPieTable.ActiveConnection = CurrentProject.Connection
rstInvPieTable.CursorType = adOpenKeyset
rstInvPieTable.LockType = adLockOptimistic

rstInvPieTable.Open Source:="InvoicePiecesTable", Options:=adCmdTableDirect
'how many are in the recordset?
Debug.Print rstInvPieTable.RecordCount

Do While Not rstPiecesSubform.EOF
'add records from subform to Inv Pieces table.
rstInvPieTable.Fields("InvoiceNumber") = Forms![AddNewInvoiceForm].txtInvoiceNumber
rstInvPieTable.Fields("PieceID") = rstPiecesSubform.Fields("PieceID")
'fill in fields...
Debug.Print rstInvPieTable.Fields("InvoiceNumber")
Debug.Print rstInvPieTable.Fields("PieceID")

Set rstPiecesSubform = Nothing
Set rstInvPieTable = Nothing
End Sub



I have a command button which prints the current record and in the code I have a save record command. Depending on what field the curser is in some users get an error from the save record command because they do not have permission to enter information into that field. Therefore I would like to put in a command to move the curser to a field where they do have permissions which should eliminate the error.

What is the code to move to a certain field?


I've got a form with subform. There's a button on the main form that lets the user view and select products to be added to the subform. They do this on a product by product basis. After they have double clicked the product they want (which then drops it into the subform) I want to move to a new record on the subform so they can select the next product. I've tried:

DoCmd.GoToControl (Forms!frmPriceLists!sfrmPriceListProducts!PLProd)
DoCmd.GoToRecord , , acNewRec


docmd.GoToRecord,Forms!frmPriceLists!SfrmPriceList Products,acNewRec

I just keep getting a run-time error 2498:

The expression you entered is the wrong data type for one of the arguments.

Any ideas how I move to the next record in the subform?


Sooo, with all the IR35 gubbins happening recently I took the plunge and set up my own company while I contract.

With the inevitable sense of timing I received a call regarding a permanent job within the pay range that pre-company I would have considered immediately (from a contract point of view, I'm not one of these £60ph guys as some of my advice probably confirms ).

The pay range for the permanent role is around the net rate I take in as a contractor but I'll obviously be paying more tax through PAYE and there's the small matter that I can't wind up the company for another 11 months.

So bearing in mind this is an internet forum and I'm accepting this isn't professionally offered advice, can anyone give me an indication about
a) what sort of cost it's going to incur to keep a ltd company, bringing in no income, going for 10-11 months.


b) What amount, if you're a contractor, that you'd look to make over your current hourly rate to make it worth while moving to a permanent role when you've got the baggage of a ltd company.

I have an Access interface to a network SQL database. The form is set to "Dynaset (Inconsistent Updates)" to allow for a complex underlying SQL query.

After someone enters data in a field, it is supposed to open another form to allow them to choose additional info to insert into the record. But it keeps saving the record and moving to a new record as soon as the Sub ends (but after the new form is opened) which causes my new form to insert data in the wrong record. As soon as the VBA code executes "End Sub" then it moves.

Any ideas?

I have a textbox on the form called "Logged By". I have a value on another form [Forms]![Helpdesk Staff Switchboard]![Name] which has the name of the person logged in and I would like for this value to be entered into the "Logged By" field on the "Calls" form when the user has finished logging the current problem and clicks to move to a new record/exits the form.
To ensure that no blank records are created though I also need for the user to only be able to move to a new record/different record or exit the form after certain fields say field1, field2 and field3 have been filled in. Is it possible to do If then statements where there are multiple criteria and if so how would this be applied so that someone could not progress to the next record or be able exit the form until certain fields were filled in?


[This message has been edited by gyli84 (edited 08-17-2001).]


Is there any way to add a new record to a form from another pop up form.

I have a pop up form the is opened from another subform which lists all the parts from a particular supplier. When I click a button I add the partnumber to the partnumber field of the original subform.

What I want to be able to do is instruct the subform to move to a new record so I can make more selections form the pop up form.

I know I could do this using recordsets into the underlying table, but I have lots of code that runs when a new partnumber is selected and don't want to have to redo this code somewhere else.

I have tried the following code
[Forms]![frmPurchaseOrders]![subPurchaseOrdersDetails].[Form]![PartNumber] = Me.PartNumber
DoCmd.GoToRecord acDataForm, "subPurchaseOrdersDetails", acNewRec

the fiorst line works and all of the required code runs, but the second line fails with the error "the object subpurchaseordersdetails isn't open", which a plainly not true as I have just sucessfully written to it and can see the result.

Does anyone know if this is possible, and what I am missing.



Strange error.

Got a next and previous button on my form.
I move to the last record and click next it takes me to a new record...fine and dandy...but right when I click Previous button
I get:

"Invalid Procedure call or argument"

The code is a simple:
'now move to the previous record.
DoCmd.GoToRecord , , acPrevious

But this only happens when I move to a new record and try to move back...not sure why.


I've got a database that pulls from a table. One of the options on the table is pending or complete. Right now, there are over 1000 records because they are all stored in the same record. I'd like to move the completed items to a different table.

Can this be done? If so, what steps do I need to take to do this?


With a table in open view can a record be moved to a different position, i'm using access 2003. Also is there any way to sort besides ascending or descending?
I've got a lot of tables to make and if I forget a single column/field and have to add it later (like I have done all ready numerious times) I'm almost having to recreate the table again in order to have the field fit in the correct spot in the table. These tables are bound to combo boxes so its important every thing is grouped for easy choosing.

Thanks--All help will be very appreciated

Ok i'm opening a form with the intention of grabbing the last reference number and adding one then moving to a new record.

However the form opens on the first record. Here is my code.

Private Sub Form_Open(Cancel As Integer)
Dim lastbookref As String
Dim expans As String
Dim Newbookref As Integer
Form_frmbooking.RecordSource = "SELECT tblbooking.Bookingno, tblbooking.Clientno, tblbooking.Sampledate, tblbooking.Sampleref, tblbooking.[Sample place], tblbooking.Recieveddate, tblbooking.Recievedby FROM tblbooking WHERE (((tblbooking.Bookingno) Like """ & Left(Form_frmClient.Clientname, 3) & "*""));"

If Form_frmbooking.Recordset.BOF = True Then
Form_frmbooking.Bookingno = Left(Form_frmClient.Clientname, 3) & "/00/0001"
lastbookref = Form_frmbooking.Bookingno
DoCmd.GoToRecord , , acNewRec

Newbookref = Val(Right(lastbookref, 4)) + 1
Select Case Newbookref
Case Is < 10
expans = "000" & Newbookref
Case Is < 100
expans = "00" & Newbookref
Case Is < 1000
expans = "0" & Newbookref
End Select
Form_frmbooking.Bookingno = Left(Form_frmClient.Clientname, 3) & "/00/" & expans
End If
End Sub

Anyone have any idea why this is not moving the new record.

Even more bizarrely the new booking reference is inserted into the new record....its just that the form opens up on the first record.

Okay...so I'm back with another question. Is it possible to make a form that is linked to a table, but does not write the info to the table until a button is clicked? I have attached a simple database to kinda show what I am looking for. Basically, I want to enter info into a form; click the "Add" button; check that all fields are valid; if so, save the info to the table; and then move to a new record.

I tried this with bound fields, but this entered the information as I went. This wouldn't be a problem except that if the form is closed while only half the records are filled in then I get an incomplete record.

Maybe there is an easier way to do this, but I don't know how. I'm sorta new to this whole programming thing so be kind, please. Thanks in advance for your help.

Not finding an answer? Try a Google search.