AnsweredAssumed Answered

suppress data source password dialog

Question asked by fallingdog on May 13, 2016
Latest reply on May 14, 2016 by Dan_Patterson

I need to re-point all sde raster layers in mxds to a new sde instance (we are moving from sde 9.3.1 to 10.1). Many people have also have ODBC connections within their mxds for tabular data from non-spatial databases. The problem is when I run the script it is constantly prompting me for credentials. I could care less about them for this exercise as I do not need to update the ODBC connection. I would like to just suppress them. Can this be done?   


import arcpy
import os
import time

path_layer = r"***"
osa_sde_path = r"***"
sde_user = "***"
log = open("log.txt", "w")

for dir_path, dir_names, file_names in os.walk(path_layer):
    for file_name in file_names:
        if file_name[-3:] == "mxd":
            ts = os.path.getmtime(os.path.join(dir_path, file_name))
            mod_date = time.strftime('%m/%Y', time.gmtime(ts))
            mod_date_list = mod_date.split("/")
            if int(mod_date_list[1]) > 2012 and int(mod_date_list[0]) > 4:
                mxd = arcpy.mapping.MapDocument(os.path.join(dir_path, file_name))
                layers_list = arcpy.mapping.ListLayers(mxd)
                print "Updating:\t" + os.path.join(dir_path, file_name)

                for layer in layers_list:
                    if layer.supports("DATASOURCE"):
                        data_source = layer.dataSource
                        if data_source.find(sde_user) != -1 and layer.isRasterLayer:
                            print "\tUpdating:\t" +
                            dot_index = data_source.rfind(".")
                            dataset_name = data_source[dot_index + 1:]
                            print "\t\tNew Path:\t" + os.path.join(osa_sde_path, sde_user + "." + 
                            layer.replaceDataSource(osa_sde_path, "SDE_WORKSPACE", sde_user + "." + 
                                                    dataset_name, False)
                            if layer.isBroken:
                                log.write(os.path.join(dir_path, file_name))
                                print "Data Source Broken"