Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have an MXD. It connects to about 30 layers in one of our SDE databases. I want to change the SDE database they connect to. Is there a way to do this without having to right-click every layer and change it individually?

share|improve this question
up vote 28 down vote accepted

Right click on the mxd in ArcCatalog, click on Set data sources, and bulk change from there. However, this tool warns:

Note: this dialog is intended primarily for preparing map documents for publication. Customizations (VBA code, UI Controls and custom toolbars), graphs, and table window appearance properties are removed from .mxd files when you update their data sources using this dialog. To preserve these, update the data sources in ArcMap instead.

You could also use the arcpy.mapping python library:

share|improve this answer
This seems to not work in 10.1. The data source is changed, but (at least in the case of an SDE connection) the link is changed to a "database connection", i.e. the layer isn't being pointed to any longer, which breaks the link. – Michael Todd Sep 6 '12 at 15:28

If you are using ArcGIS 10 and are interested in using Python, check out the help on Updating and fixing data sources with arcpy.mapping and the methods of the Layer object.


import arcpy
mxd = arcpy.mapping.MapDocument(r"C:\Project\Project_SDE1.mxd")
mxd.findAndReplaceWorkspacePaths(r"Database Connections\Connection to GISSDE1.sde", 
                                r"Database Connections\Connection to GISSDE2.sde")
del mxd

If your layers don't all source the same original connection file, or the destination feature class name is different on the new SDE, you might need to use Layer.replaceDataSource instead.

share|improve this answer
  1. Make a data source connection in ArcCatalog.
  2. Open the MXD and expand the layer and click on the red exclamation mark in any layer. This will open a popup window containing the data source with database connection.
  3. Select the database connection that you had made, double-click on that and go inside that to the layer that you have clicked and select that layer and press OK, Open or Add.

This will remove all the red exclamation mark containing layers in the MXD and will point to the new created data source. In one go you can do this; no need to go and click each time on the red exclamation mark and clicking and setting the data source.

share|improve this answer
Its very helpfull.Please go throug this once – Inderjeet singh bhambra Dec 20 '12 at 6:13
This will only work if the connections are broken, otherwise one of the other answers are more appropriate. – blah238 Dec 20 '12 at 6:29

The link is to an old Arcscript called GDK tools, wich can be obtained on other sites. The Program creates a toolbar in arcmap where you can change source on selected layers (any layer you want. this works between SDE connections or SDE to local file geodatabase (wich change source in Arccatalog not can handle, because of the name in SDE starts with the SDE user and then dot.

this is very helpful, but maybe only in arcgis 9.3

share|improve this answer
While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. – BradHards Feb 14 '14 at 10:01
I Have modified! – jonaktiv Feb 14 '14 at 12:57

If you've got the .mxd open already, do what @blah238 did, but use 'CURRENT' instead of the full path. Don't forget that the search and replace doesn't have to be the full string:

import arcpy
mxd = arcpy.mapping.MapDocument('CURRENT')

Then you'll have to save and reopen the .mxd file anyway.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.