Article: Q163278
Product(s): Microsoft SourceSafe
Version(s): 97
Operating System(s):
Keyword(s): kberrmsg kbinteropkbbuglist
Last Modified: 01-MAY-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Visual SourceSafe for Windows, versions 4.0, 4.0a, 5.0
- Microsoft Access 97
-------------------------------------------------------------------------------
SYMPTOMS
========
Advanced: Requires expert coding, interoperability, and multiuser skills.
If you have a database under source code control with Microsoft Visual
SourceSafe, and the database contains links to a Microsoft Outlook or Microsoft
Exchange folder, when you check out Data and Misc. Objects you may receive one
of the following error messages
Table 'ExchangeTable000' already exists
-or-
Table 'MSysExchangeColumns' already exists
which is followed by
Failed to import file '<Database Name>' into Microsoft Access.
After these errors, checking out Data and Misc. Objects stops, and any remaining
tables in the database are not imported from Visual SourceSafe.
NOTE: The Source Code Control component of Microsoft Access 97 is included with
the Microsoft Office 97 Developer Edition Tools.
This article assumes that you are familiar with using the client-side
capabilities of Visual SourceSafe. For more information about Visual SourceSafe,
please refer to the "Visual SourceSafe User's Guide" or Help topics available
from the Visual SourceSafe Help menu.
CAUSE
=====
When you check out the linked Microsoft Exchange or Microsoft Outlook table, it
creates new system tables in the Microsoft Access database. When Visual
SourceSafe tries to import the original system tables with the same name, an
error occurs and check out stops.
RESOLUTION
==========
The resolution contains two parts. First, you must recover data and design
changes if you can. Second, you must prevent the error from occurring when you
use links to Microsoft Exchange or Microsoft Outlook folders.
Recovering Data After the Error
-------------------------------
Data and Misc. Objects contains the following Microsoft Access database
components: tables, relationships, user-defined toolbars and menus, database
properties, startup properties, import/export specifications, Microsoft Visual
Basic project references, the project name of the database, and conditional
compilation arguments.
If you created the table links before you added the database to Visual
SourceSafe, when the error occurs you must restore the database from a backup if
there are any tables or other objects that are missing from the database.
Because all of the Data and Misc. Objects are stored in Visual SourceSafe as a
single binary object, you cannot retrieve missing objects individually. If you
do not have a backup, delete the linked Microsoft Exchange or Microsoft Outlook
tables, and then recreate any missing data, tables, table design changes, or
other components.
If you created the table links sometime after you added the database to Visual
SourceSafe, and if Visual SourceSafe is configured to retain a history of your
modifications, you can recover some or all of the data by following these
steps:
1. After you receive the error, the Data and Misc. Objects that were checked out
before the error message are still checked out in your database. On the Tools
menu, point to SourceSafe, and then click Undo Check Out. Undo the check out
for Data and Misc. Objects, and click Yes when prompted if you want to undo
checkout and lose changes. Note that you receive the same error messages
again when you undo the check out.
2. If you have any other database objects checked out, check them back in as you
usually do.
3. Make a backup copy of the database. You will import objects from this copy in
a later step.
4. On the Tools menu, point to SourceSafe, and then click Show History.
5. In the History dialog box, select the version before the one in which you
created the links to Microsoft Exchange or Microsoft Outlook, and then click
Rollback.
NOTE: Rolling back to an earlier revision will cause you to lose some of the
modifications you have made to your database. Rolling back to the version
immediately before the creation of the linked tables will minimize this loss.
6. When the rollback is complete, check out Data and Misc. Objects.
7. Recover missing design and data changes to Data and Misc. Objects by
importing objects or appending data from the backup database you created in
step 3. You must recreate any changes you cannot recover. Verify that each
component is fully restored and up-to-date in your rolled-back database
before you proceed with further development.
Preventing the Error from Occurring
-----------------------------------
The only way to prevent the error is to name your links to Microsoft Exchange or
Microsoft Outlook folders so they appear alphabetically after
MSysExchangeTables. A good rule of thumb is to name those links starting with
the letter N or higher.
When you check out Data and Misc. Objects, the tables are imported
alphabetically; if your linked tables start with the letter N or higher, the
Microsoft Exchange system tables will already exist in the database when the
linked table is imported by Visual SourceSafe. When the links are refreshed,
Microsoft Access uses the existing system tables and does not try to create new
ones.
STATUS
======
Microsoft has confirmed this to be a problem in Microsoft Access 97. We are
researching this problem and will post new information here in the Microsoft
Knowledge Base as it becomes available.
MORE INFORMATION
================
When you first link to a Microsoft Exchange or Microsoft Outlook folder, three
system tables are created in your database to manage the link:
MSysExchangeColumns, MSysExchangeTables, and ExchangeTable000. Each subsequent
link creates one new incremental system table: ExchangeTable001,
ExchangeTable002, and so on.
When you check in Data and Misc. Objects, Visual SourceSafe stores those system
tables with your other tables. When you check out Data and Misc. Objects again,
if your linked table occurs alphabetically before ExchangeTablexxx or
MSysExchangeColumns, it is imported before those system tables. Because they
don't exist in the database, those system tables are recreated when the table
link is refreshed. Then Visual SourceSafe tries to import the copy of those
system tables it has stored, and an error occurs because the tables already
exist.
Steps to Reproduce Problem
--------------------------
1. Create a new blank database in Microsoft Access 97.
2. Create a link to a Microsoft Exchange or Microsoft Outlook folder. Regardless
of the name of the folder you link to, name the linked table Contacts in
Microsoft Access. This ensures that it appears alphabetically in the Database
window before its supporting system tables.
3. Create another table called Test. It can be an empty table, and only needs to
contain a single field. You do not need to create a primary key.
4. On the Tools menu, point to SourceSafe, and then click Add Database to
SourceSafe. Add the database to a new SourceSafe project.
5. Check out Data and Misc. Objects. Note that you receive the error message
Table 'ExchangeTable000' already exists
followed by
Failed to import file '<Database Name>' into Microsoft Access.
After you click OK, note also that the Test table is missing from the Database
window.
REFERENCES
==========
For more information about installing and using the Microsoft Outlook/Exchange
driver, please see the following articles in the Microsoft Knowledge Base:
Q159322 ACC97: Paradox, Lotus, & MS Exchange/Outlook ISAMs in ValuPack
Q161173 ACC97: MS Exchange ISAM Driver Requires Manual Registration
Q161174 ACC97: Sample Procedure to Attach a Microsoft Outlook Folder
For more information about Microsoft Access system tables, search the Help Index
for "system tables," or ask the Microsoft Access 97 Office Assistant.
Additional query words: outlook exchange isam vss mail mapi attach
======================================================================
Keywords : kberrmsg kbinterop kbbuglist
Technology : kbSSafeSearch kbAudDeveloper kbAccessSearch kbAccess97 kbAccess97Search kbSSafe400 kbSSafe400a kbSSafe500
Version : 97
Hardware : x86
Issue type : kbbug
=============================================================================