HOW TO
GIS administrators and managers sometimes need to ascertain the server and database properties of layers in .mxd files in an automated fashion. Instructions provided describe how to do this using a Python script.
The below Python script demonstrates how to extract database and server properties for layers and tables in an .mxd file.
mxd_source = r"C:\DATA\test_name.mxd"
import arcpy, os, string def FindConnPropTbl(mxd_source): mxd = arcpy.mapping.MapDocument(mxd_source) for df in arcpy.mapping.ListDataFrames(mxd): tableList = arcpy.mapping.ListTableViews(mxd, "", df) for table in tableList: dsource = str(table.dataSource) fnd = dsource.find('.sde') sub_str = dsource[:fnd +4] desc = arcpy.Describe(sub_str) cp = desc.connectionProperties try: print "Table:{0},Server: {1}".format(table.name,cp.server) except: print "No server listed for table: {0}".format(table.name) try: print "Table:{0},Database: {1}".format(table.name,cp.database) except: print "No database listed for table: {0}".format(table.name) del table,dsource,fnd,cp,sub_str,desc del mxd,df,tableList def FindConnPropFc(mxd_source): mxd = arcpy.mapping.MapDocument(mxd_source) for df in arcpy.mapping.ListDataFrames(mxd): layerList = arcpy.mapping.ListLayers(mxd, "", df) for layer in layerList: dsource = str(layer.dataSource) fnd = dsource.find('.sde') sub_str = dsource[:fnd +4] desc = arcpy.Describe(sub_str) cp = desc.connectionProperties try: print "Layer:{0},Server: {1}".format(layer.name,cp.server) except: print "No server listed for layer: {0}".format(layer.name) try: print "Layer:{0},Database: {1}".format(layer.name,cp.database) except: print "No database listed for layer {0}".format(layer.name) del layer,dsource,fnd,cp,sub_str,desc del mxd,df,layerList if __name__=="__main__": mxd_source = r"C:\DATA\test_name.mxd" FindConnPropTbl(mxd_source) FindConnPropFc(mxd_source)
Article ID: 000011781
Get help from ArcGIS experts
Download the Esri Support App