问题
There is a MS Access application with tables on MS SQL Server linked through ODBC. When connection is lost i receive ODBC error 3146. After connection is restored physically i still receive ODBC 3146 errors. I have to make something like a reconnect to server. How can i do this in MS Access?
回答1:
I think all you need to do is refresh the table links. Are you asking how to relink the tables programmatically? Have you tried refreshing the links after being disconnnected and verified that it solves the problem? Refreshing the link in VBA would be something like
Dim db as Database
Set db = Currentdb()
db.TablesDefs(1).RefreshLink
You may have to loop thru the tables to get the index I am not sure if it will take the table name but you could try it that way first.
回答2:
Where is your Access table in reference to your SQL Server? If your Access table is local and you are the only one using it then refreshing table links is sufficient. However, if the Access db lives on a server or some other shared space where many people are using it they will not be able to access the SQL tables if you are using a USER DSN. Setting up a system DSN or a dsn file will provide Access with the information it is looking for as to where the SQL tables are.
来源:https://stackoverflow.com/questions/15662302/how-to-restore-odbc-connection-after-failure-in-ms-access