> However what about tables such as the table that keeps all the surrogate key counters? Surely that table must be kept with the application on the server.
I recommend using the SQL identity field feature and scrapping surrogate key table(s) - it works perfectly. if you must (for some reason) keep such a table - it needs to be on the server - but each "next" key should be accessed through a single SQL stored procedure. You would have very little net traffic with this, i.e. passing something small like:
= SQLExec(nConnection, "GetNextKey 'mytable'", 'mycursor')
and getting back just an integer key.
HTH,
Ken
Ken B. Matson
GCom2 Solutions