次の方法で共有


Invalid object name 'MSysConf'. (State 42S02) (Code 208)

Sometimes customers call in wondering why they have the following Exception and User Error Message in their SQL Profiler log:

Exception: Error: 208, Severity: 16, State: 1

User Error Message: Invalid object name 'MSysConf'.

or, if they replay a SQL profiler trace, it may be a Replay Provider Error:

[Microsoft][SQL Server Native Client 10.0][SQL Server]Invalid object name 'MSysConf'. (State 42S02) (Code 208)

No need to worry about this.

What it simply means is this. In Access you can link to tables using ODBC.

When doing so, there is an option to save the password on the client machine, i.e. the machine running Access.

This may not always be desirable, so there is an option for system administrators to disable this possibility.

This is done by creating (you've guessed it already) a table called MSysConf with some parameters. This is described here:

How to store SQL database login IDs and passwords locally

https://support.microsoft.com/?kbid=209502

So what this then means is that when Access is instructed to create the linked table, it will send a query to the

target server checking if this table exists. If it doesn’t, then the user is allowed to save the password locally.

If the table exists (with the settings described in the KB) then the user is not allowed to save the password locally.

We can verify this ourselves.

.1 Create an ODBC DSN (start->run->odbcad32) called MSysConfTest that uses SQL Authentication.

.2 Start SQL Profiler on the server to which the DSN is pointing. Add the “Exception” and “User Error Message” events under the “Error and Warning” events and start the trace.

3. Start Access and create a new Database.

4. Once it is created, add a linked table (how this is done depends on what Access version you are using) and select the ODBC DSN you just created (MSysConfTest in this example) and enter the password for the connection. And hit OK.

5. Have a look in the SQL Profiler; you should now have the messages above, i.e.:

Exception: Error: 208, Severity: 16, State: 1

User Error Message: Invalid object name 'MSysConf'.

In summary, when you see this in the profiler, it is almost certain that this comes from a user linking a table from Access

to the server. This just queries the server for the precense of this particular table to check if the user should or should not

be allowed to store the password locally.

I’ve tested this with Access 2010, SQL Server 2008 and SQL Native Client 10, so this functionality is still here.

On a side note, Error 208 just means that the object do not exist in the database.

You would get the same error if you did a SELECT * FROM NonExistingTable.

More on this here:

"MSSQLSERVER_208"

https://msdn.microsoft.com/en-us/library/cc280443.aspx

So, no real need to panic if you see the Error 208 followed by “Invalid object name 'MSysConf'.”